Q29udGVudC1sYW5ndWFnZTogY3MKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMgpCb2R5Oi0tLS0tLS0tLS1jcy0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImNzIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTIiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJQ+O1zdHVwIG9kbe10bnV0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgTmVt4XRlIHBy4XZvIHBybyBw+O1zdHVwIGRvIHBvvmFkb3ZhbulobyBhZHJlc+H4ZS4gQnXvIG5lZXhpc3R1amUgvuFkbv0KICAgIGRva3VtZW50IHMmbmJzcDtvYnNhaGVtICh0enYuIGluZGV4KSwgbmVibyBqZSBhZHJlc+H4IGNocuFu7G4gcHJvdGkg6HRlbu0uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOZW3hdGUgcHLhdm8gcHJvIHD47XN0dXAgayZuYnNwO3BvvmFkb3ZhbultdSBvYmpla3R1LgogICAgQnXvIGplIGNocuFu7G4gcHJvdGkg6HRlbu0sIG5lYm8gbmVu7SBzZXJ2ZXJlbSDoaXRlbG79LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tY3MtLQoKQ29udGVudC1sYW5ndWFnZTogZGUKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1kZS0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImRlIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iWnVncmlmZiB2ZXJ3ZWlnZXJ0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgRGVyIFp1Z3JpZmYgYXVmIGRhcyBhbmdlZm9yZGVydGUgVmVyemVpY2huaXMgaXN0IG5pY2h0IG0mb3VtbDtnbGljaC4KICAgIEVudHdlZGVyIGlzdCBrZWluIEluZGV4LURva3VtZW50IHZvcmhhbmRlbiBvZGVyIGRhcyBWZXJ6ZWljaG5pcwogICAgaXN0IHp1Z3JpZmZzZ2VzY2gmdXVtbDt0enQuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBEZXIgWnVncmlmZiBhdWYgZGFzIGFuZ2Vmb3JkZXJ0ZSBPYmpla3QgaXN0IG5pY2h0IG0mb3VtbDtnbGljaC4KICAgIEVudHdlZGVyIGthbm4gZXMgdm9tIFNlcnZlciBuaWNodCBnZWxlc2VuIHdlcmRlbiBvZGVyIGVzCiAgICBpc3QgenVncmlmZnNnZXNjaCZ1dW1sO3R6dC4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWRlLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVuCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZW4tLQo8IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNjZXNzIGZvcmJpZGRlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXF1ZXN0ZWQgZGlyZWN0b3J5LgogICAgVGhlcmUgaXMgZWl0aGVyIG5vIGluZGV4IGRvY3VtZW50IG9yIHRoZSBkaXJlY3RvcnkgaXMgcmVhZC1wcm90ZWN0ZWQuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVxdWVzdGVkIG9iamVjdC4KICAgIEl0IGlzIGVpdGhlciByZWFkLXByb3RlY3RlZCBvciBub3QgcmVhZGFibGUgYnkgdGhlIHNlcnZlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVuLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVzCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZXMtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJlcyIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IiZpZXhjbDtBY2Nlc28gcHJvaGliaWRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgVXN0ZWQgbm8gdGllbmUgcGVybWlzbyBwYXJhIGFjY2VzYXIgYSBsYSBkaXJlY2NpJm9hY3V0ZTtuCiAgICBzb2xpY2l0YWRhLiBFeGlzdGUgbGEgcG9zaWJpbGlkYWQgZGUgcXVlIGVsIGRpcmVjdG9yaW8KICAgIGVzdGUgcHJvdGVnaWRvIGNvbnRyYSBsZWN0dXJhIG8gcXVlIG5vIGV4aXN0YSBsYQogICAgZG9jdW1lbnRhY2kmb2FjdXRlO24gcmVxdWVyaWRhLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgVXN0ZWQgbm8gdGllbmUgcGVybWlzbyBkZSBhY2Nlc2FyIGFsIG9iamV0byBzb2xpY2l0YWRvLgogICAgRXhpc3RlIGxhIHBvc2liaWxpZGFkIGRlIHF1ZSBlc3RlIHByb3RlZ2lkbyBjb250cmEKICAgIGxlY3R1cmEgbyBxdWUgbm8gaGF5YSBwb2RpZG8gc2VyIGxlaWRvIHBvciBlbCBzZXJ2aWRvci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVzLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGZyCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZnItLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJmciIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjYyZlZ3JhdmU7cyBpbnRlcmRpdCEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIFZvdXMgbidhdmV6IHBhcyBsZSBkcm9pdCBkJ2FjYyZlYWN1dGU7ZGVyIGF1IHImZWFjdXRlO3BlcnRvaXJlCiAgICBkZW1hbmQmZWFjdXRlOy4gU29pdCBpbCBuJ3kgYSBwYXMgZGUgZG9jdW1lbnQgaW5kZXggc29pdCBsZSByJmVhY3V0ZTtwZXJ0b2lyZQogICAgZXN0IHByb3QmZWFjdXRlO2cmZWFjdXRlOy4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIFZvdXMgbidhdmV6IHBhcyBsZSBkcm9pdCBkJ2FjYyZlYWN1dGU7ZGVyICZhZ3JhdmU7IGwnb2JqZXQKICAgIGRlbWFuZCZlYWN1dGU7LiBTb2l0IGNlbHVpLWNpIGVzdCBwcm90JmVhY3V0ZTtnJmVhY3V0ZTssIHNvaXQgaWwgbmUgcGV1dAogICAgJmVjaXJjO3RyZSBsdSBwYXIgbGUgc2VydmV1ci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWZyLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGl0CkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0taXQtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJpdCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjY2Vzc28gbmVnYXRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICBOb24gZGlzcG9uaSBkZWkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBhY2NlZGVyZSBhbGxhCiAgIGRpcmVjdG9yeSByaWNoaWVzdGEgb3BwdXJlIG5vbiBlc2lzdGUgaWwgZG9jdW1lbnRvIGluZGljZS4KCiAgPCEtLSNlbHNlIC0tPgoKICAgTm9uIGRpc3BvbmkgZGVpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgYWNjZWRlcmUgYWxsJ29nZ2V0dG8KICAgcmljaGllc3RvLCBvcHB1cmUgbCdvZ2dldHRvIG5vbiBwdSZvZ3JhdmU7IGVzc2VyZSBsZXR0byBkYWwgc2VydmVyLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0taXQtLQoKQ29udGVudC1sYW5ndWFnZTogamEKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTIwMjItSlAKQm9keTotLS0tLS0tLS0tamEtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJqYSIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJpc28tMjAyMi1qcCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjY2VzcyBmb3JiaWRkZW4hIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgICAbJEJNVzVhJDUkbCQ/JUclIyVsJS8lSCVqJFgkTiUiJS8lOyU5OCI4QiQsJCIkaiReJDskcyEjGyhCCiAgICAbJEIlJCVzJUclQyUvJTklSSUtJWUlYSVzJUgkLEI4Ol8kNyRKJCQkKyEiGyhCCiAgICAbJEIlRyUjJWwlLyVIJWokTkZJJF85fiRfJCw1djJEJDUkbCRGJCQkXiQ7JHMhIxsoQgoKICA8IS0tI2Vsc2UgLS0+CgogICAgGyRCTVc1YSQ1JGwkPyUqJVYlOCUnJS8lSCRYJE4lIiUvJTslOTgiJCwkIiRqJF4kOyRzISMbKEIKICAgIBskQkZJJF85fiRfJCw1djJEJDUkbCRGJCQkSiQkJCshIhsoQgogICAgGyRCJTUhPCVQJCxGSSRfOX4kXyRLPDpHVCQ3JD8kKyRHJDckZyQmISMbKEIKCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWphLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGtvCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUVVQy1LUgpCb2R5Oi0tLS0tLS0tLS1rby0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImtvIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iwaKx2cDMILDFus61yiEiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iRVVDLUtSIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgIL/kw7vH0SC18Le6xeS4rr+hIMGisdnH0iC89iDA1rTCILHHx9HAzCC++L3AtM+02S4KICAgtfC3usXkuK6/oSDDuSDG5MDMwfawoSC++LDFs6ogvsa0z7jpIMDQseIgurjIo7ChILXHvu4gwNa9wLTPtNkuCgogIDwhLS0jZWxzZSAtLT4KCiAgIL/kw7vH0SCwtMO8v6EgwaKx2cfSILz2IMDWtMIgscfH0cDMIL74vcC0z7TZLgogICDA0LHiILq4yKOwoSC1x77uIMDWsMWzqiDApbytufawoSDA0MC7ILz2IL74tbW3zyC1x77uIMDWvcC0z7TZLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0ta28tLQoKQ29udGVudC1sYW5ndWFnZTogbmwKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1ubC0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9Im5sIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iVG9lZ2FuZyB2ZXJib2RlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgVSBoZWJ0IG5pZXQgZGUgdG9lc3RlbW1pbmcgb20gdG9lZ2FuZyB0ZSBrcmlqZ2VuIHRvdCBkZSBnZXZyYWFnZGUgbWFwLgogICBFciBpcyBvZiB3ZWwgZ2VlbiBpbmRleCBkb2N1bWVudCBvZiBkZSBtYXAgaXMgYmV2ZWlsaWdkIHRlZ2VuIGxlemVuLgoKICA8IS0tI2Vsc2UgLS0+CgogICBVIGhlYnQgbmlldCBkZSB0b2VzdGVtbWluZyBvbSB0b2VnYW5nIHRlIGtyaWpnZW4gdG90IGRlIGdldnJhYWdkZSBtYXAuCiAgIERpZSBpcyBvZndlbCBiZXZlaWxpZ2QgdGVnZW4gbGV6ZW4gb2Ygb25sZWVzYmFhciBkb29yIGRlIHNlcnZlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLW5sLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHBsCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTIKQm9keTotLS0tLS0tLS0tcGwtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJwbCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IlphYnJvbmlvbnkgZG9zdOpwISIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJJU08tODg1OS0yIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgICBOaWUgbWFzeiBwcmF3YSBkb3N06nB1IGRvIL+xZGFuZWdvIGthdGFsb2d1LiBXIGthdGFsb2d1IG5pZQogICAgbWEgaW5kZWtzdSBsdWIga2F0YWxvZyBqZXN0IHphYmV6cGllY3pvbnkgcHJ6ZWQgb2Rjenl0ZW0uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOaWUgbWFzeiBkb3N06nB1IGRvIL+xZGFuZWdvIG9iaWVrdHUuIEplc3Qgb24gemFiZXpwaWVjem9ueQogICAgcHJ6ZWQgb2Rjenl0ZW0gbHViIG5pZSBtb79lIGJ55iBvZGN6eXRhbnkgcHJ6ZXogc2Vyd2VyLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tcGwtLQoKQ29udGVudC1sYW5ndWFnZTogcHQtYnIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS1wdC1ici0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InB0LWJyIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNlc3NvIFByb2liaWRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICBWb2MmZWNpcmM7IG4mYXRpbGRlO28gdGVtIHBlcm1pc3MmYXRpbGRlO28gcGFyYSBhY2Vzc2FyIG8gCiAgIGRpcmV0Jm9hY3V0ZTtyaW8gcmVxdWlzaXRhZG8uCiAgIFBvZGUgbiZhdGlsZGU7byBleGlzdGlyIG8gYXJxdWl2byBkZSAmaWFjdXRlO25kaWNlIG91IAogICBvIGRpcmV0Jm9hY3V0ZTtyaW8gcG9kZSBlc3RhciBwcm90ZWdpZG8gY29udHJhIGxlaXR1cmEuCgogIDwhLS0jZWxzZSAtLT4KCiAgIFZvYyZlY2lyYzsgbiZhdGlsZGU7byB0ZW0gcHJlbWlzcyZhdGlsZGU7byBwYXJhIGFjZXNzYXIgbyAKICAgb2JqZXRvIHJlcXVpc2l0YWRvLiBFbGUgcG9kZSBlc3RhciBwcm90ZWdpZG8gY29udHJhIGxlaXR1cmEgb3UgCiAgIG4mYXRpbGRlO28gc2VyIGxlZyZpYWN1dGU7dmVsIHBlbG8gc2Vydmlkb3IuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS1wdC1ici0tCgpDb250ZW50LWxhbmd1YWdlOiBybwpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLXJvLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0icm8iCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJBY2Nlc3VsIGludGVyemlzISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgTnUgYXZldGkgcGVybWlzaXVuZWEgc2EgYWNjZXNhdGkgZGlyZWN0b3J1bCBjZXJ1dC4KICAgIE51IGVzdGUgbmljaSB1biBkb2N1bWVudCBpbmRleCBzYXUgZGlyZWN0b3J1bCBlc3RlIHByb3RlamF0IGxhIGNpdGlyZS4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIE51IGF2ZXRpIHBlcm1pc2l1bmVhIHNhIGFjY2VzYXRpIG9iaWVjdHVsIGNlcnV0LgogICAgRXN0ZSBwcm90ZWphdCBsYSBjaXRpcmUgc2F1IG51IHBvYXRlIGZpIGNpdGl0IGRlIHNlcnZlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLXJvLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHNyCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTUKQm9keTotLS0tLS0tLS0tc3ItLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJzciIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJJU08tODg1OS01IgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0it9DR4ND61d0g3+DY4eLj3yEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIL3V3NDi1SDU3tfS3tvjINTQIN/g2OHi49/Y4tUg19Dl4tXS0N3e3CDU2ODV2uLe4Nj449zjLgogICAgvN7T4/vVIPjVINTQIN3V3NAg2N3U1drh3d7TINTe2uPc1d3i0Cwg2NvYINTQIPjVINTY4NXa4t7g2Pjj3CDX0Oji2PvV3SDe1CDn2OLQ+tAuCgogIDwhLS0jZWxzZSAtLT4KCiAgICC91dzQ4tUg1N7X0t7b4yDU0CDf4Njh4uPf2OLVINfQ5eLV0tDd3twg3tH41dri4y4KICAgILze0+P71SD41SDU0CD41SDX0Oji2PvV3SDe1CDn2OLQ+tAsINjb2CDU0CDT0CDh1eDS1eAg3dUg3N7W1SDf4N7n2OLQ4tguCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1zci0tCgpDb250ZW50LWxhbmd1YWdlOiBzdgpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLXN2LS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0ic3YiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSImQXJpbmc7dGtvbXN0IGYmb3VtbDtyYmp1ZGVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgRHUgaGFyIGludGUgdGlsbHImYXVtbDtja2xpZ2EgciZhdW1sO3R0aWdoZXRlciBmJm91bWw7ciBhdHQgZiZhcmluZzsKICAgIHRpbGxnJmFyaW5nO25nIHRpbGwgZGVuICZvdW1sO25za2FkZSBrYXRhbG9nZW4uIERldCBleGlzdGVyYXIgaW5nZXQKICAgIGluZGV4ZG9rdW1lbnQgZWxsZXIgcyZhcmluZzsgJmF1bWw7ciBrYXRhbG9nZW4gbCZhdW1sO3Nza3lkZGFkLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgRHUgaGFyIGludGUgdGlsbHImYXVtbDtja2xpZ2EgciZhdW1sO3R0aWdoZXRlciBmJm91bWw7ciBhdHQgZiZhcmluZzsKICAgIHRpbGxnJmFyaW5nO25nIHRpbGwgZGV0ICZvdW1sO25za2FkZSBvYmpla3RldC4gT2JqZWt0ZXQgJmF1bWw7cgogICAgbCZhdW1sO3Nza3lkZGF0IGVsbGVyIGludGUgbCZhdW1sO3NiYXJ0IGYmb3VtbDtyIHNlcnZlcm4uCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1zdi0tCgpDb250ZW50LWxhbmd1YWdlOiB0cgpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS05CkJvZHk6LS0tLS0tLS0tLXRyLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0idHIiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iSVNPLTg4NTktOSIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjY2VzcyBmb3JiaWRkZW4hIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgICBUYWxlcCBldHRpJiMyODc7aW5peiBkaXppbmUgZXJpJiMzNTE7aW0gaXpuaW5peiB5b2suCiAgICBZYSBiZWxpcnRl5yBkb2v8bWFuIHlvaywgeWEgZGEgZGl6aW4gb2t1bWF5YSBrYXImIzM1MTsmIzMwNTsga29ydW1hbCYjMzA1Oy4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIFRhbGVwIGV0dGkmIzI4Nztpbml6IGRpemluZSBlcmkmIzM1MTtpbSBpem5pbml6IHlvay4KICAgIERpemluLCB5YSBva3VtYXlhIGthciYjMzUxOyYjMzA1OyBrb3J1bWFsJiMzMDU7LCB5YSBkYSBzdW51Y3UgdGFyYWY/bmRhbgogICAgb2t1bmFtJiMzMDU7eW9yLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tdHItLQo=