MjAwNy0xMi0zMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBkcml2ZXIvMzM3NzIKCSogY29sbGVjdDIuYyAoU0hMSUJfU1VGRklYKTogRGVmaW5lIGlmIG5vdCBkZWZpbmVkLgoJKHdyaXRlX2NfZmlsZV9zdGF0KTogVXNlIFNITElCX1NVRkZJWC4KCSogc29tLmggKFNITElCX1NVRkZJWCk6IERlZmluZS4KCSogZG9jL3RtLnRleGkgKFNITElCX1NVRkZJWCk6IERvY3VtZW50LgoKMjAwNy0xMi0yOSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoIipkaXZ2NHNmMyIpOiBSZW5hbWUgdG8gInNzZV9kaXZ2NHNmMyIuCgkoIipzc2VfcnNxcnR2NHNmMiIpOiBFeHBvcnQuCgkoIipzc2Vfc3FydHY0c2YyIik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGVudW0gaXg4Nl9idWlsdGlucykgW0lYODZfQlVJTFRJTl9SU1FSVFBTX05SLAoJSVg4Nl9CVUlMVElOX1NRUlRQU19OUl06IE5ldyBjb25zdGFudHMuCgkoc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24pIFtJWDg2X0JVSUxUSU5fRElWUFNdOiBVc2UKCUNPREVfRk9SX3NzZV9kaXZ2NHNmMy4KCVtJWDg2X0JVSUxUSU5fU1FSVFBTXTogVXNlIENPREVfRk9SX3NzZV9zcXJ0djRzZjIuCglbSVg4Nl9CVUlMVElOX1NRUlRQU19OUl06IE5ldy4KCVtJWDg2X0JVSUxUSU5fUlNRUlRQU19OUl06IERpdHRvLgoJKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogSW5pdGlhbGl6ZSBfX2J1aWx0aW5faWEzMl9yc3FydHBzX25yIGFuZAoJX19idWlsdGluX2lhMzJfc3FydHBzX25yLgoJKGl4ODZfYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uKTogQ29udmVydCBCVUlMVF9JTl9TUVJURiB0bwoJSVg4Nl9CVUlMVElOX1NRUlRQU19OUi4KCShpeDg2X2J1aWx0aW5fcmVjaXByb2NhbCk6IENvbnZlcnQgSVg4Nl9CVUlMVElOX1NRUlRQU19OUiB0bwoJSVg4Nl9CVUlMVElOX1JTUVJUUFNfTlIuCgoyMDA3LTEyLTI3ICBCcmlhbiBEZXNzZW50ICA8YnJpYW5AZGVzc2VudC5uZXQ+CgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGltaXplIE9wdGlvbnMpOiBBZGQgbWlzc2luZyBvcGluZGV4IGZvcgoJLWZuby10b3BsZXZlbC1yZW9yZGVyLgoKMjAwNy0xMi0yNyAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zNDU5MQoJKiB0cmVlLXZlY3QtdHJhc25mb3JtLmMgKHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMpOiBTa2lwCglzdG10cyAoaW5jbHVkaW5nIHJlZHVjdGlvbiBzdG10cykgdGhhdCBhcmUgbm90IGxpdmUuCgoyMDA3LTEyLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMzQyODEKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBJZiBsYXN0IG5hbWVkCglhcmd1bWVudCBuZWVkcyBkb3VibGUgd29yZCBhbGlnbm1lbnQgYW5kIGN1bS0+bnJlZ3MgaXMgb2RkLCBhY2NvdW50Cglmb3IgdGhlIGluc2VydGVkIHBhZGRpbmcuCgoJUFIgZGVidWcvMzQ1MzUKCSogdHJlZS1tdWRmbGFwLmMgKG1mX21ha2VfYnVpbHRpbik6IE1ha2UgZGVjbCBhcnRpZmljaWFsCglhbmQgZG9uJ3QgZW1pdCBkZWJ1ZyBpbmZvIGZvciBpdC4KCjIwMDctMTItMjYgIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKExJTktfU1BFQywgQ1JUX0JJTlVUSUxTX1NQRUNTKTogTW92ZSBBVDkwVVNCODIgCglhbmQgQVQ5MFVTQjE2MiBkZXZpY2VzIGZyb20gJ2F2cjUnIHRvICdhdnIzNScgYXJjaGl0ZWN0dXJlLgoJKEFTTV9TUEVDKTogQWRkICdhdnIzNScgYXJjaGl0ZWN0dXJlLgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbWN1X3R5cGVzKTogTW92ZSBBVDkwVVNCODIgYW5kIEFUOTBVU0IxNjIgCglkZXZpY2VzIGZyb20gJ2F2cjUnIHRvICdhdnIzNScgYXJjaGl0ZWN0dXJlLgoJKGF2cl9hcmNoX3R5cGVzKTogQWRkICJhdnIyMyIgZW50cmllcy4KCShhdnJfYXJjaCk6IEFkZCAnQVJDSF9BVlIzNScuCgkqIGNvbmZpZy9hdnIvdC1hdnIgKE1VTFRJTElCX09QVElPTlMsIE1VTFRJTElCX0RJUk5BTUVTKTogQWRkICdhdnIzNScuCgkoTVVMVElMSUJfTUFUQ0hFUyk6IE1vdmUgQVQ5MFVTQjgyIGFuZCBBVDkwVVNCMTYyIGRldmljZXMgZnJvbSAnYXZyNScKCXRvICdhdnIzNScgYXJjaGl0ZWN0dXJlLgoKMjAwNy0xMi0yMiAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKGRpc2FibGUtbGliZ2NqLWJjKTogRG9jdW1lbnQgbmV3IG9wdGlvbi4KCjIwMDctMTItMjEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBjb25maWcvcGEvcGEuYyAoaHBwYV9sZWdpdGltaXplX2FkZHJlc3MpOiBVc2UgSU5UMTRfT0tfU1RSSUNUIGluCgltYXNrIHNlbGVjdGlvbi4KCglQUiB0YXJnZXQvMzQ1MjUKCSogcGEuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IEVtaXQgaW5zbiB0byBsb2FkIGZ1bmN0aW9uIGxhYmVsCglmb3JjZWQgdG8gbWVtb3J5LgoKMjAwNy0xMi0yMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAZ21haWwuY29tPgoJUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCVBSIHRhcmdldC84ODM1CgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChtY29yZV9mdW5jdGlvbl92YWx1ZSk6IENhbGwgcHJvbW90ZV9tb2RlCglpbnN0ZWFkIG9mIFBST01PVEVfTU9ERS4KCjIwMDctMTItMjEgIFNlYmFzdGlhbiBQb3AgIDxzZWJhc3RpYW4ucG9wQGFtZC5jb20+CgoJKiBsYW1iZGEtY29kZS5jIChsYW1iZGFfbG9vcG5lc3RfdG9fZ2NjX2xvb3BuZXN0KTogRml4IHR5cG8uCgoyMDA3LTEyLTIxICBTZWJhc3RpYW4gUG9wICA8c2ViYXN0aWFuLnBvcEBhbWQuY29tPgoKCSogdHJlZS1kYXRhLXJlZi5jIChzaWduZWRfdHlwZV9mb3JfdHlwZXMpOiBOZXcuCgkoYWZmaW5lX2ZuX29wKTogVXNlIHNpZ25lZF90eXBlX2Zvcl90eXBlcyBhbmQgc2lnbmVkX3R5cGVfZm9yIGluc3RlYWQKCW9mIGxvbmdfaW50ZWdlcl90eXBlX25vZGUuCgkoYW5hbHl6ZV96aXZfc3Vic2NyaXB0KTogU2FtZS4KCShhbmFseXplX3Npdl9zdWJzY3JpcHRfY3N0X2FmZmluZSk6IFNhbWUuCgkoYW5hbHl6ZV9taXZfc3Vic2NyaXB0KTogU2FtZS4KCShvbWVnYV9zZXR1cF9zdWJzY3JpcHQpOiBTYW1lLgoKMjAwNy0xMi0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2VtaXRfbG9hZGdwKTogUmVwbGFjZSBnZW5fKiBjYWxscyB3aXRoCglzZXBhcmF0ZSBnZW5fKl9zaSBhbmQgZ2VuXypfZGkgY2FsbHMuICBQYXNzIHBpY19vZmZzZXRfdGFibGVfcnR4CglhcyB0aGUgZmlyc3QgYXJndW1lbnQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGxvYWRncF9uZXdhYmksIGxvYWRncF9hYnNvbHV0ZSkKCShsb2FkZ3BfcnRwKTogUmVuYW1lIHRvLi4uCgkobG9hZGdwX25ld2FiaV88bW9kZT4sIGxvYWRncF9hYnNvbHV0ZTxtb2RlPiwgbG9hZGdwX3J0cDxtb2RlPik6CgkuLi50aGVzZS4gIEFkZCBtb2RlcyB0byBhbGwgb3BlcmFuZHMuICBBZGQgdGhlIHRhcmdldCByZWdpc3RlcgoJYXMgYW4gb3BlcmFuZC4gIENvbWJpbmUgbG9hZGdwX3J0cDxtb2RlPiB3aXRoIGl0cyBzcGxpdHRlci4KCjIwMDctMTItMjAgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5tZCAoZml4X3JldHVybl9hZGRyKTogUmVtb3ZlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaCAoeHRlbnNhX2luaXRpYWxpemVfdHJhbXBvbGluZSk6IE5ldy4KCSh4dGVuc2FfdHJhbXBvbGluZV90ZW1wbGF0ZSk6IE5ldy4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoTUlOX0ZSQU1FX1NJWkUpOiBNb3ZlZCBoZXJlIGZyb20geHRlbnNhLmguCgkoeHRlbnNhX3JldHVybl9hZGRyKTogRXhwYW5kIHRvIHN0YW5kYXJkIFh0ZW5zYSBpbnNucyBpbnN0ZWFkIG9mCglmaXhfcmV0dXJuX2FkZHIuICBHZXQgaGlnaCBiaXRzIGZyb20gYSBsb2NhbCBsYWJlbC4KCSh4dGVuc2FfdHJhbXBvbGluZV90ZW1wbGF0ZSk6IE5ldyBmdW5jdGlvbiB3aXRoIGNvZGUgbW92ZWQgZnJvbQoJVFJBTVBPTElORV9URU1QTEFURSBpbiB4dGVuc2EuaC4gIFVzZSBMMzJSIGluc3RlYWQgb2YgQ0FMTDAgZXhjZXB0Cgl3aGVuIHVzaW5nIENPTlNUMTYgb3IgYWJzb2x1dGUtbW9kZSBsaXRlcmFscy4KCSh4dGVuc2FfaW5pdGlhbGl6ZV90cmFtcG9saW5lKTogTmV3IGZ1bmN0aW9uIHdpdGggY29kZSBtb3ZlZCBmcm9tCglJTklUSUFMSVpFX1RSQU1QT0xJTkUgaW4geHRlbnNhLmguICBVc2UgZGlmZmVyZW50IG9mZnNldHMgZGVwZW5kaW5nCglvbiB3aGljaCB0cmFtcG9saW5lIHZlcnNpb24gaXMgdXNlZC4KCSogY29uZmlnL3h0ZW5zYS9saWIyZnVuY3MuUyAoVFJBTVBPTElORV9TSVpFKTogQWRkIGNvbW1lbnQuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKFRBUkdFVF9BQlNPTFVURV9MSVRFUkFMUyk6IERlZmluZS4KCShNSU5fRlJBTUVfU0laRSk6IE1vdmVkIHRvIHh0ZW5zYS5jLgoJKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBVc2UgeHRlbnNhX3RyYW1wb2xpbmVfdGVtcGxhdGUuCgkoVFJBTVBPTElORV9TSVpFKTogVHdvIHZlcnNpb25zIG9mIHRoZSB0cmFtcG9saW5lIGhhdmUgZGlmZmVyZW50IHNpemVzLgoJKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IFVzZSB4dGVuc2FfaW5pdGlhbGl6ZV90cmFtcG9saW5lLgoJKiBjb25maWcveHRlbnNhL2llZWU3NTQtZGYuUyAoWENIQUxfTk9fTVVMKTogRGVmaW5lLgoJKF9fbXVsZGYzKTogVXNlIENBTEwxMiBpbnN0ZWFkIG9mIENBTEwwIHRvIGludm9rZSAuTG11bF9tdWxzaTMKCWhlbHBlciB3aGVuIG5vdCB1c2luZyB0aGUgQ0FMTDAgQUJJLiAgQ2hhbmdlIC5MbXVsX211bHNpMyB0byBtYXRjaC4KCSogY29uZmlnL3h0ZW5zYS9saWIxZnVuY3MuYXNtIChfX3VtdWxzaWRpMyk6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL2llZWU3NTQtc2YuUyAoX19tdWxzZjMpOiBMaWtld2lzZS4KCQoyMDA3LTEyLTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMzQ0NTkKCSogdHJlZS1zc2EtZHNlLmMgKGRzZV9vcHRpbWl6ZV9zdG10KTogRG9uJ3QgZWxpbWluYXRlIHN0b3JlIGlmCglVU0VfU1RNVCBub3Qgb25seSBzdG9yZXMgaW50byB0aGUgc2FtZSBvYmplY3QgYXMgU1RNVCwgYnV0IG1pZ2h0CglyZWFkIGl0IHRvby4KCjIwMDctMTItMTkgIFNlYmFzdGlhbiBQb3AgIDxzZWJhc3RpYW4ucG9wQGFtZC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQ0MTMKCSogdHJlZS1kYXRhLXJlZi5jIChhZmZpbmVfZm5fb3AsIGFuYWx5emVfeml2X3N1YnNjcmlwdCwKCWFuYWx5emVfc2l2X3N1YnNjcmlwdF9jc3RfYWZmaW5lLCBhbmFseXplX21pdl9zdWJzY3JpcHQsCglvbWVnYV9zZXR1cF9zdWJzY3JpcHQpOiBVc2UgbG9uZ19pbnRlZ2VyX3R5cGVfbm9kZSBpbnN0ZWFkIG9mCglpbnRlZ2VyX3R5cGVfbm9kZS4KCjIwMDctMTItMTkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzM0NTI1CgkqIHBhLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBGb3JjZSBmdW5jdGlvbiBsYWJlbHMgaW50byBtZW1vcnkuCgoyMDA3LTEyLTE5ICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCgkqIG9tcC1sb3cuYyAoYnVpbGRfb21wX3JlZ2lvbnNfMSk6IFJlY29nbml0aW9uIG9mIGNvbWJpbmVkIHBhcmFsbGVscwoJbW92ZWQgLi4uCgkoZXhwYW5kX29tcCk6IC4uLiBoZXJlLgoKMjAwNy0xMi0xOSAgWmRlbmVrIER2b3JhayAgPG9va0B1Y3cuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQzNTUKCSogdHJlZS1wYXJsb29wcy5jICh0YWtlX2FkZHJlc3Nfb2YpOiBIYW5kbGUgZXhwcmVzaW9ucwoJaW5zdGVhZCBvZiBqdXN0IHZhcmlhYmxlcy4KCShlbGltaW5hdGVfbG9jYWxfdmFyaWFibGVzXzEpOiBGb3JjZSB3aG9sZSBpbnZhcmlhbnQKCWFkZHJlc3MgdG8gc3NhIG5hbWUuCgoyMDA3LTEyLTE5ICBBbGV4YW5kZXIgTW9uYWtvdiAgPGFtb25ha292QGlzcHJhcy5ydT4KCSAgICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBtb2R1bG8tc2NoZWQuYyAoZ2VuZXJhdGVfcmVnX21vdmVzKTogSW5zZXJ0IHRoZSByZWctbW92ZXMKCXJpZ2h0IGJlZm9yZSB0aGUgbm90ZXMgd2hpY2ggcHJlY2VkZXMgdGhlIGluc24sIGlmIHRoZXkgZXhpc3RzLgoJKGxvb3BfY2Fub25fcCk6IEFkZCBkdW1wIGluZm8uCgkoc21zX3NjaGVkdWxlKTogTGlrZXdpc2UuCgoyMDA3LTEyLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiB0cmVlLmggKHNldF9kZWNsX2luY29taW5nX3J0bCk6IEFkZCBhIGJ5X3JlZmVyZW5jZV9wIHBhcmFtZXRlci4KCSogZW1pdC1ydGwuYyAoc2V0X2RlY2xfaW5jb21pbmdfcnRsKTogTGlrZXdpc2UuICBEb24ndCBzZXQgdGhlCglydGwncyByZWdpc3RlciBhdHRyaWJ1dGVzIHdoZW4gdGhlIHBhcmFtZXRlciBpcyB0cnVlLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXNfdW5zcGxpdF9jb21wbGV4LCBhc3NpZ25fcGFybXMpCgkoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogVXBkYXRlIGNhbGxzIHRvIHNldF9kZWNsX2luY29taW5nX3J0bC4KCjIwMDctMTItMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIHJ0bC5kZWYgKFNVQlJFRyk6IFVwZGF0ZSBjb21tZW50cy4KCSogcnRsLmggKHJlZ19hdHRycyk6IEJlIGV4cGxpY2l0IGFib3V0IHRoZSB0eXBlIG9mIG9mZnNldCB1c2VkLgoJKHNldF9yZWdfYXR0cnNfZnJvbV9tZW0pOiBSZW5hbWUgdG8uLi4KCShzZXRfcmVnX2F0dHJzX2Zyb21fdmFsdWUpOiAuLi50aGlzLgoJKGFkanVzdF9yZWdfbW9kZSwgYnl0ZV9sb3dwYXJ0X29mZnNldCk6IERlY2xhcmUuCgkqIGVtaXQtcnRsLmMgKGJ5dGVfbG93cGFydF9vZmZzZXQpOiBOZXcgZnVuY3Rpb24uCgkodXBkYXRlX3JlZ19vZmZzZXQpOiBSZW1vdmUgc3BlY2lhbCBvZmZzZXQgaGFuZGxpbmcgZm9yIGJpZy1lbmRpYW4KCXRhcmdldHMuCgkoZ2VuX3J0eF9SRUdfb2Zmc2V0LCBnZW5fcmVnX3J0eF9vZmZzZXQpOiBFeHBsaWNpdGx5IHNheSB0aGF0IHRoZQoJb2Zmc2V0IHBhcmFtZXRlciBpcyBhZGRlZCB0byBSRUdfT0ZGU0VULgoJKGFkanVzdF9yZWdfbW9kZSk6IE5ldyBmdW5jdGlvbi4KCShzZXRfcmVnX2F0dHJzX2Zvcl9tZW0pOiBSZW5hbWUgdG8uLi4KCShzZXRfcmVnX2F0dHJzX2Zvcl92YWx1ZSk6IC4uLnRoaXMgYW5kIGdlbmVyYWxpemUgdG8gYWxsIHZhbHVlcy4KCUlmIHRoZSByZWdpc3RlciBpcyBhIGxvd3BhcnQgb2YgdGhlIHZhbHVlLCBhZGp1c3QgdGhlIG9mZnNldAoJYWNjb3JkaW5nbHkuCgkoc2V0X3JlZ19hdHRyc19mb3JfcGFybSk6IFVwZGF0ZSBhZnRlciB0aGUgYWJvdmUgcmVuYW1pbmcuCgkoc2V0X3JlZ19hdHRyc19mb3JfZGVjbF9ydGwpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglzZXRfZGVjbF9pbmNvbWluZ19ydGwuICBTZXQgdGhlIG9mZnNldCBvZiBwbGFpbiBSRUdzIHRvIHRoZQoJb2Zmc2V0IG9mIHRoZSBSRUcncyBtb2RlIGZyb20gdGhlIGRlY2wncy4gIEFzc2VydCB0aGF0IGFsbAoJc3VicmVncyBhcmUgbG93cGFydHMgYW5kIGhhbmRsZSB0aGVpciBpbm5lciByZWdpc3RlcnMgaW4gdGhlCglzYW1lIHdheSBhcyBwbGFpbiBSRUdzLgoJKHNldF9kZWNsX3J0bCwgc2V0X2luY29taW5nX2RlY2xfcnRsKTogVXNlIHJlZ19hdHRyc19mb3JfZGVjbF9ydGwuCgkoc3VicmVnX2xvd3BhcnRfb2Zmc2V0KTogRXhwbGljaXRseSBzYXkgdGhhdCB0aGUgcmV0dXJuZWQgb2Zmc2V0CglpcyBhIFNVQlJFR19CWVRFLgoJKiBjb21iaW5lLmMgKGRvX1NVQlNUX01PREUsIHRyeV9jb21iaW5lLCB1bmRvX2FsbCk6IFVzZSBhZGp1c3RfcmVnX21vZGUKCWluc3RlYWQgb2YgUFVUX01PREUuCgkqIGZpbmFsLmMgKGFsdGVyX3N1YnJlZyk6IEZpeC91cGRhdGUgYXJndW1lbnQgdG8gZ2VuX3J0eF9SRUdfb2Zmc2V0LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX2xvYWRfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChyZWdfc2Nhbl9tYXJrX3JlZnMpOiBVc2Ugc2V0X3JlZ19hdHRyc19mcm9tX3ZhbHVlLgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX3N1YnJlZ19hZGRyZXNzKTogQ2FsbCBzZXRfbWVtX29mZnNldAoJd2hlbiBvZmZzZXRpbmcgYSBNRU0uCgkqIHZhci10cmFja2luZy5jIChvZmZzZXRfdmFsaWRfZm9yX3RyYWNrZWRfcCk6IERlbGV0ZS4KCShtb2RlX2Zvcl9yZWdfYXR0cnMpOiBSZXBsYWNlIHdpdGguLi4KCSh0cmFja19sb2NfcCk6IC4uLnRoaXMgbmV3IGZ1bmN0aW9uLiAgUmV0dXJuIHRoZSBtb2RlIGFuZCBvZmZzZXQKCXRvIHRoZSBjYWxsZXIsIGNoZWNraW5nIHRoYXQgdGhlIGxhdHRlciBpcyB2YWxpZC4gIElmIHRoZSBydHggaXMKCWEgcGFyYWRveGljYWwgbG93cGFydCBvZiB0aGUgZGVjbCwgdXNlIHRoZSBkZWNsJ3MgbW9kZSBpbnN0ZWFkLgoJRG8gdGhlIHNhbWUgd2hlbiBzdG9yaW5nIHRvIGEgcmVnaXN0ZXIgdGhhdCBjb250YWlucyB0aGUgZW50aXJlIGRlY2wuCgkodmFyX2xvd3BhcnQpOiBVc2UgYnl0ZV9sb3dwYXJ0X29mZnNldCByYXRoZXIgdGhhbgoJc3VicmVnX2xvd3BhcnRfb2Zmc2V0IHdoZW4gYWRqdXN0aW5nIHRoZSBvZmZzZXQgYXR0cmlidXRlLgoJKGNvdW50X3VzZXMsIGFkZF91c2VzLCBhZGRfc3RvcmVzKTogVXNlIHRyYWNrX3JlZ19wIGluc3RlYWQgb2YKCVJFR19FWFBSLCBNRU1fRVhQUiwgUkVHX09GRlNFVCwgSU5UX01FTV9PRkZTRVQsIHRyYWNrX2V4cHJfcCwKCW9mZnNldF92YWxpZF9mb3JfdHJhY2tlZF9wIGFuZCBtb2RlX2Zvcl9yZWdfYXR0cnMuICBHZW5lcmF0ZQoJbG93cGFydHMgZm9yIE1FTXMgYXMgd2VsbCBhcyBSRUdzLgoJKHZ0X2FkZF9mdW5jdGlvbl9wYXJhbWV0ZXJzKTogV2hlbiBvYnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uIGZyb20KCXRoZSBkZWNsX3J0bCwgYWRqdXN0IHRoZSBvZmZzZXQgdG8gbWF0Y2ggaW5jb21pbmcuICBVc2UgdHJhY2tfbG9jX3AKCWFuZCB2YXJfbG93cGFydC4KCjIwMDctMTItMTggIFNlYmFzdGlhbiBQb3AgIDxzZWJhc3RpYW4ucG9wQGFtZC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQxMjMKCSogbGFtYmRhLWNvZGUuYyAoY2FuX2R1cGxpY2F0ZV9pdik6IE5ldy4KCShjYW5ub3RfY29udmVydF9tb2RpZnlfdG9fcGVyZmVjdF9uZXN0KTogTmV3LgoJKGNhbm5vdF9jb252ZXJ0X2JiX3RvX3BlcmZlY3RfbmVzdCk6IE5ldy4KCShjYW5fY29udmVydF90b19wZXJmZWN0X25lc3QpOiBTcGxpdCB1cC4KCjIwMDctMTItMTggIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjbGVhcl9oYXphcmQpOiBVc2UgUFJJTlRfT1BFUkFORCBwdW5jdHVhdGlvbgoJaW5zdGVhZCBvZiAuc2V0IHB1c2ggYW5kIC5zZXQgcG9wLgoKMjAwNy0xMi0xOCAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCVBSIHRhcmdldC8zMzQ3NAoJKiBjb25maWcvYmZpbi9iZmluLmMgKGJmaW5fYWRqdXN0X2Nvc3QpOiBEaWcgaW50byBQQVJBTExFTHMgdG8gZmluZAoJdGhlIFNFVC4KCjIwMDctMTItMTggIFJhenlhIExhZGVsc2t5IDxyYXp5YUBpbC5pYm0uY29tPgoKCSogdHJlZS1wYXJsb29wcy5jIChyZWR1aWN0aW9uX2luZm8pOiBDaGFuZ2UgZG9jdW1lbnRhdGlvbiBvZgoJcmVkdWN0aW9uX2luaXRpYWwgZmllbGQuCgkoaW5pdGlhbGl6ZV9yZWR1Y3Rpb25zKTogUmVtb3ZlIGNyZWF0aW9uIG9mIHJlZHVjdGlvbl9pbml0aWFsIHZhcmlhYmxlLgoJKGNyZWF0ZV9sb2Fkc19mb3JfcmVkdWN0aW9ucyk6IGRvbid0IGpvaW4gcmVkdWN0aW9uX2luaXRpYWwgdG8KCXRoZSBsb2FkZWQgdmFsdWUuCgoyMDA3LTEyLTE4ICBLYXogS3lsaGVrdSAgPGthekB6ZXVnbWFzeXN0ZW1zLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzM0NDU2CgkqIHJlc291cmNlLmMgKG1hcmtfc2V0X3Jlc291cmNlcyk6IFVzZSByZWdzX2ludmFsaWRhdGVkX2J5X2NhbGwKCXJhdGhlciB0aGFuIGNhbGxfdXNlZF9yZWdzIGFuZCBnbG9iYWxfcmVncy4KCjIwMDctMTItMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzQ0OTAKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2NvbnN0X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogSWYgIXNpZ24sCglkb24ndCByZWR1Y2UgbW1pbi9tbWF4IHVzaW5nIG51bV9zaWduX2JpdF9jb3BpZXMuCgoyMDA3LTEyLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBDaGFuZ2UgcmVjb21tZW5kZWQgTVBGUiBmcm9tIDIuMi4xIC0+IDIuMy4wLgoKMjAwNy0xMi0xNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogVXNlIEBpdGVteC4KCjIwMDctMTItMTcgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAodmVyYm9zaXR5X2xldmVscyk6IEFkZCBuZXcgdmVyYm9zaXR5IGxldmVsCglSRVBPUlRfQ09TVC4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzKTogQ2hhbmdlCgl2ZXJib3NpdHkgbGV2ZWwgdG8gUkVQT1JUX0NPU1QuCgkodmVjdF9tb2RlbF9yZWR1Y3Rpb25fY29zdCk6IExpa2V3aXNlLgoJKHZlY3RfbW9kZWxfaW5kdWN0aW9uX2Nvc3QpOiBMaWtld2lzZS4KCSh2ZWN0X21vZGVsX3NpbXBsZV9jb3N0KTogbGlrZXdpc2UuCgkodmVjdF9tb2RlbF9zdG9yZV9jb3N0KTogbGlrZXdpc2UuCgkodmVjdF9tb2RlbF9sb2FkX2Nvc3QpOiBsaWtld2lzZS4KCShjb25zZXJ2YXRpdmVfY29zdF90aHJlc2hvbGQpOiBMaWtld2lzZS4gUmVtb3ZlIHByaW50LgoKMjAwNy0xMi0xNyAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9TRUNPTkRBUllfUkVMT0FEKTogRml4IHR5cG9zLgoKMjAwNy0xMi0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYy8zNDUwNgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMpOiBBY2NlcHQgb3B0aW9uYWwgY29tbWEKCWluIGJldHdlZW4gY2xhdXNlcy4KCjIwMDctMTItMTcgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQ0NDUKCSogdHJlZS12ZWN0LXRyYXNuZm9ybS5jICh2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzKTogU2tpcCAKCXN0bXRzIChpbmNsdWRpbmcgbGl2ZSBzdG10cykgdGhhdCBhcmUgbm90IHJlbGV2YW50LgoKMjAwNy0xMi0xNyAgSmFjayBIb3dhcnRoICA8aG93YXJ0aEBicm9tby5tZWQudWMuZWR1PgoKCVBSIHRhcmdldC8zNDAyNQoJKiBjb25maWcvaTM4Ni90LWNydHBjOiBBZGQgJChNVUxUSUxJQl9DRkxBR1MpLgoJKiBjb25maWcvaTM4Ni90LWNydGZtOiBMaWtld2lzZS4KCjIwMDctMTItMTcgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFdJREVTVF9IQVJEV0FSRV9GUF9TSVpFKTogRGVmaW5lLgoKMjAwNy0xMi0xNiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAoY29uc2VydmF0aXZlX2Nvc3RfdGhyZXNob2xkKTogQWRkIG1pc3NpbmcKCXNwYWNlIHRvICJub3QgdmVjdG9yaXplZCIgbWVzc2FnZS4KCjIwMDctMTItMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCglQUiBydGwtb3B0aW1pemF0aW9uLzM0NDE1CgkqIGRmLmggKERGX0xSX0lOLCBERl9MUl9PVVQpOiBVcGRhdGUgY29tbWVudHMuCgkqIHJlc291cmNlLmMgKG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IFVzZSBERl9MUl9JTiByYXRoZXIgdGhhbgoJZGZfZ2V0X2xpdmVfaW4uICBEb24ndCBoYW5kbGUgcHNldWRvcy4KCjIwMDctMTItMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGJvb3RzdHJhcC8zNDAwMwoJKiBjLWRlY2wuYyAobWVyZ2VfZGVjbHMpOiBDb3B5IFJUTCBmcm9tIG9sZGRlY2wgdG8gbmV3ZGVjbC4KCSogY29uZmlnL3BhL3BhLmMgKHBhX2VuY29kZV9zZWN0aW9uX2luZm8pOiBJZiAhZmlyc3QsIHByZXNlcnZlCglTWU1CT0xfRkxBR19SRUZFUkVOQ0VEIGZsYWcuCgoyMDA3LTEyLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAodHlwZV9oYXNoX2FkZCk6IEZpeCB3aGl0ZXNwYWNlLgoKMjAwNy0xMi0xNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJQWRkIENSSVMgdjMyIHN1cHBvcnQuICBGaXggLW1jYy1pbml0LgoJKiBjb25maWcuZ2NjOiBNYWtlIGNyaXN2MzItKiBoYXZlIGNwdV90eXBlIGNyaXMuICBIYW5kbGUKCWNyaXN2MzItKi1lbGYgYW5kIGNyaXN2MzItKi1ub25lIGxpa2UgY3Jpcy0qLWVsZiBhbmQgY3Jpcy0qLW5vbmUKCWJ1dCB3aXRob3V0IG11bHRpbGlicyBhbmQgd2l0aCB0YXJnZXRfY3B1X2RlZmF1bHQ9MzIuCgkoY3Jpc3YzMi0qLWxpbnV4Kik6IEhhbmRsZSBhcyBjcmlzLSotbGludXgqLiAgU2V0Cgl0YXJnZXRfY3B1X2RlZmF1bHQgdG8gMzIgYW5kIDEwIGFjY29yZGluZ2x5LgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKEFTU0VSVF9QTFRfVU5TUEVDKTogUmVtb3ZlIHVudXNlZCBtYWNyby4KCShjcmlzX21vdmVtX2xvYWRfcmVzdF9wLCBjcmlzX3N0b3JlX211bHRpcGxlX29wX3ApOiBSZW1vdmUgRklYTUUuCglDaGFuZ2UgcmVnbm9fZGlyIGFuZCByZWdubyBvbmx5IGlmICFUQVJHRVRfVjMyLgoJKGNyaXNfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UpOiBJZiBUQVJHRVRfVjMyLCBzZXQKCXJlZ19hbGxvY19vcmRlciBhcyBwZXIgUkVHX0FMTE9DX09SREVSX1YzMiBhbmQgbWFrZQoJQ1JJU19BQ1JfUkVHTlVNIG5vbi1maXhlZC4KCShjcmlzX3ByaW50X2Jhc2UpOiBBZGQgZ2NjX2Fzc2VydCBmb3IgcG9zdF9pbmMgb24gQ1JJU19BQ1JfUkVHTlVNLgoJKGNyaXNfcHJpbnRfb3BlcmFuZCkgPGNhc2UgJ1onLCBjYXNlICd1Jz46IE5ldyBjYXNlcy4KCTxjYXNlIFJFRyBvZiBjYXNlICdIJz46IEFsbG93IGZvciBDUklTX1NSUF9SRUdOVU0uCgkoY3Jpc19yZWxvYWRfYWRkcmVzc19sZWdpdGltaXplZCk6IEFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIFRBUkdFVF9WMzIuCgkoY3Jpc19yZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBOZXcgZnVuY3Rpb24sIGd1dHMgZnJvbQoJUkVHSVNURVJfTU9WRV9DT1NUIGFkanVzdGVkIGZvciBDUklTIHYzMi4KCShjcmlzX25vcm1hbF9ub3RpY2VfdXBkYXRlX2NjKTogTmV3IGZ1bmN0aW9uIHNwbGl0IG91dCBmcm9tLi4uCgkoY3Jpc19ub3RpY2VfdXBkYXRlX2NjKTogU2V0IGNjX3N0YXR1cy5mbGFncyBDQ19SRVZFUlNFRCBmb3IKCVRBUkdFVF9DQ0lOSVQuICBDYWxsIGNyaXNfbm9ybWFsX25vdGljZV91cGRhdGVfY2MgZm9yIENDX1JFViwKCUNDX05PT1YzMiBhbmQgQ0NfTk9STUFMLCBidXQgc2V0IGNjX3N0YXR1cy5mbGFncyBDQ19OT19PVkVSRkxPVwoJZm9yIENDX05PT1YzMiBhbmQgVEFSR0VUX1YzMi4KCShjcmlzX3NpbXBsZV9lcGlsb2d1ZSk6IEFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIFRBUkdFVF9WMzIgaWYKCWNyaXNfcmV0dXJuX2FkZHJlc3Nfb25fc3RhY2sgeWllbGRzIHRydWUuCgkoY3Jpc19jYzBfdXNlcl9yZXF1aXJlc19jbXApOiBOZXcgZnVuY3Rpb24uCgkoY3Jpc192YWxpZF9waWNfY29uc3QpOiBBZGQgYXJndW1lbnQgQU5ZX09QRVJBTkQuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4gIEhhbmRsZSBDUklTX1VOU1BFQ19QTFRfUENSRUwgYW5kIENSSVNfVU5TUEVDX1BDUkVMLgoJKGNyaXNfYXNtX291dHB1dF9jYXNlX2VuZCk6IE5ldyBmdW5jdGlvbiwgZ3V0cyBmcm9tCglBU01fT1VUUFVUX0NBU0VfRU5EIGFkanVzdGVkIGZvciBDUklTIHYzMi4KCShjcmlzX292ZXJyaWRlX29wdGlvbnMpOiBBZGp1c3QgZm9yIENSSVMgdjMyLiAgTWFzayBvdXQKCVRBUkdFVF9TSURFX0VGRkVDVF9QUkVGSVhFUyBhbmQgVEFSR0VUX01VTF9CVUcgaWYgdjMyLgoJKGNyaXNfYXNtX291dHB1dF9taV90aHVuaywgY3Jpc19leHBhbmRfZXBpbG9ndWUpCgkoY3Jpc19nZW5fbW92ZW1fbG9hZCwgY3Jpc19lbWl0X21vdmVtX3N0b3JlKQoJKGNyaXNfZXhwYW5kX3BpY19jYWxsX2FkZHJlc3MsIGNyaXNfYXNtX291dHB1dF9zeW1ib2xfcmVmKQoJKGNyaXNfYXNtX291dHB1dF9sYWJlbF9yZWYsIGNyaXNfb3V0cHV0X2FkZHJfY29uc3RfZXh0cmEpOiBBZGp1c3QKCWZvciBDUklTIHYzMi4KCShjcmlzX3NwbGl0X21vdmR4KTogQ29weSByZS11c2VkIE1FTS4KCSogY29uZmlnL2NyaXMvdC1lbGZtdWx0aTogQWRkIG11bHRpbGliIHYzMiBmb3IgLW1hcmNoPXYzMi4KCSogY29uZmlnL2NyaXMvcHJlZGljYXRlcy5tZAoJKCJjcmlzX2dlbmVyYWxfb3BlcmFuZF9vcl9waWNfc291cmNlIik6IE5ldyBwcmVkaWNhdGUuCgkoImNyaXNfZ2VuZXJhbF9vcGVyYW5kX29yX3BsdF9zeW1ib2wiKTogUmVwbGFjZSBieS4uLgoJKCJjcmlzX25vbm1lbW9yeV9vcGVyYW5kX29yX2NhbGxhYmxlX3N5bWJvbCIpOiBOZXcgcHJlZGljYXRlLgoJKiBjb25maWcvY3Jpcy9saW51eC5oOiBTYW5pdHktY2hlY2sgVEFSR0VUX0NQVV9ERUZBVUxUIGZvcgoJcHJlc2VuY2UgYW5kIGNvbnRlbnRzLgoJKENSSVNfU1VCVEFSR0VUX0RFRkFVTFRfQVJDSCk6IE5ldyBtYWNybywgTUFTS19BVk9JRF9HT1RQTFQgZm9yCgl2MzIsIDAgb3RoZXJ3aXNlLgoJKENSSVNfQ1BQX1NVQlRBUkdFVF9TUEVDLCBDUklTX0NDMV9TVUJUQVJHRVRfU1BFQywKCUNSSVNfQVNNX1NVQlRBUkdFVF9TUEVDKTogQWRqdXN0IGZvciBkaWZmZXJlbnQgVEFSR0VUX0NQVV9ERUZBVUxULgoJKENSSVNfU1VCVEFSR0VUX0RFRkFVTFQpOiBBZGQgQ1JJU19TVUJUQVJHRVRfREVGQVVMVF9BUkNILgoJKiBjb25maWcvY3Jpcy9jcmlzLmg6IFNhbml0eS1jaGVjayBUQVJHRVRfQ1BVX0RFRkFVTFQgZm9yIGNvbnRlbnRzLgoJKENSSVNfREVGQVVMVF9UVU5FLCBDUklTX0FSQ0hfQ1BQX0RFRkFVTFQpCgkoQ1JJU19ERUZBVUxUX0FTTV9BUkNIX09QVElPTik6IE5ldyBtYWNyb3MuCgkoQ1JJU19DQzFfU1VCVEFSR0VUX1NQRUMpOiBDaGFuZ2UgZGVmYXVsdCB0dW5pbmcgdG8gdXNlCglDUklTX0RFRkFVTFRfVFVORS4gCgkoQ1JJU19DUFBfU1VCVEFSR0VUX1NQRUMpOiBEaXR0by4gIEFkZCBDUklTX0FSQ0hfQ1BQX0RFRkFVTFQuCgkoQVNNX1NQRUMpOiBBZGQgc2FuaXR5LWNoZWNrIGVycm9yaW5nIG91dCB3aGVuIGJvdGggLW1hcmNoPSBhbmQKCS1tY3B1PSBhcmUgc3BlY2lmaWVkLiAgUGFzcyBvbiBlaXRoZXIgYXMgLS1tYXJjaD12MzIuCgkoQ1JJU19BU01fU1VCVEFSR0VUX1NQRUMpOiBXaGVuIG5laXRoZXIgLW1hcmNoPSBvciAtbWNwdT0gYXJlCglzcGVjaWZpZWQsIHBhc3Mgb24gQ1JJU19ERUZBVUxUX0FTTV9BUkNIX09QVElPTi4KCShDUklTX0NQVV9WMzIpOiBOZXcgbWFjcm8uCglbIVRBUkdFVF9DUFVfREVGQVVMVF06IERlZmF1bHQtZGVmaW5lIGFzIENSSVNfQ1BVX0JBU0UuCglbIVRBUkdFVF9ERUZBVUxULCBUQVJHRVRfQ1BVX0RFRkFVTFQgPT0gMzJdOiBNb3ZlIGRlZmF1bHQKCVRBUkdFVF9ERUZBVUxUIGRlZmluaXRpb24gYWZ0ZXIgbmV3IFRBUkdFVF9DUFVfREVGQVVMVCBkZWZpbml0aW9uLgoJRGVmaW5lIHYzMi1hZGp1c3RlZCBUQVJHRVRfREVGQVVMVC4KCShDUklTX0RFRkFVTFRfQ1BVX1ZFUlNJT04pOiBDaGFuZ2UgdG8gVEFSR0VUX0NQVV9ERUZBVUxUIGZyb20KCUNSSVNfQ1BVX0JBU0UuCgkoVEFSR0VUX1YzMik6IE5ldyBtYWNyby4KCShSRUdfQUxMT0NfT1JERVJfVjMyKTogTmV3IG1hY3JvLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IERvIG5vdCBhbGxvdyBsYXJnZXItdGhhbi1yZWdpc3Rlci1zaXplIG1vZGVzCglpbnRvIENSSVNfQUNSX1JFR05VTS4KCShlbnVtIHJlZ19jbGFzcyk6IE5ldyBjbGFzc2VzIEFDUl9SRUdTLCBTUEVDX0FDUl9SRUdTLCBHRU5OT05BQ1JfUkVHUwoJYW5kIFNQRUNfR0VOTk9OQUNSX1JFR1MuCgkoUkVHX0NMQVNTX05BTUVTLCBSRUdfQ0xBU1NfQ09OVEVOVFMpOiBBZGp1c3QgZm9yIG5ldyBjbGFzc2VzLgoJKFJFR05PX1JFR19DTEFTUyk6IEdpdmUgQUNSX1JFR1MgZm9yIENSSVNfQUNSX1JFR05VTS4KCShNT0RFX0NPREVfQkFTRV9SRUdfQ0xBU1MpOiBEZWZpbmUsIGdpdmUgZm9yIE9DT0RFIFBPU1RfSU5DCglHRU5OT05BQ1JfUkVHUywgQkFTRV9SRUdfQ0xBU1Mgb3RoZXJ3aXNlLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6ICdhJyBpcyBmb3IgQUNSX1JFR1MuCgkoUkVHTk9fTU9ERV9DT0RFX09LX0ZPUl9CQVNFX1ApOiBEZWZpbmUsIHJlZnVzaW5nIE9DT0RFIFBPU1RfSU5DCglmb3IgQ1JJU19BQ1JfUkVHTlVNLgoJKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBLZWVwIEFDUl9SRUdTIGFzIHByZWZlcnJlZC4KCShIQVJEX1JFR05PX1JFTkFNRV9PSyk6IFJlZnVzZSBDUklTX0FDUl9SRUdOVU0gYXMgVE8uCgkoRVhUUkFfQ09OU1RSQUlOVCk6IE5ldyBjb25zdHJhaW50ICdVJy4KCShUUkFNUE9MSU5FX1RFTVBMQVRFLCBUUkFNUE9MSU5FX1NJWkUsIElOSVRJQUxJWkVfVFJBTVBPTElORSkKCShBU01fT1VUUFVUX0FERFJfRElGRl9FTFQpOiBBZGp1c3QgZm9yIENSSVMgdjMyLgoJKEJBU0VfT1JfQVVUT0lOQ1JfUCk6IFJlZnVzZSBQT1NUX0lOQyBmb3IgQ1JJU19BQ1JfUkVHTlVNLgoJKFNJTVBMRV9BRERSRVNTX1ApOiBSZW1vdmUuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogVXNlIEJBU0VfT1JfQVVUT0lOQ1JfUCwgbm90IHJlZHVuZGFudAoJU0lNUExFX0FERFJFU1NfUC4gIE1ha2Ugb25lIGNoYWluZWQgaWYtZWxzZSwgZmluaXNoaW5nIGFzCglub24tbWF0Y2ggYWZ0ZXIgQkFTRV9PUl9BVVRPSU5DUl9QIGZvciBUQVJHRVRfVjMyLgoJKFJFR0lTVEVSX01PVkVfQ09TVCk6IEp1c3QgY2FsbCB0aGUgbmV3IGZ1bmN0aW9uCgljcmlzX3JlZ2lzdGVyX21vdmVfY29zdC4KCShlbnVtIGNyaXNfcGljX3N5bWJvbF90eXBlKTogUmVuYW1lIGNyaXNfZ290cmVsX3N5bWJvbCB0bwoJY3Jpc19yZWxfc3ltYm9sLiAgQWxsIHVzZXJzIGNoYW5nZWQuCgkoUkVHSVNURVJfTkFNRVMpOiBSZXBsYWNlICJwYyIgd2l0aCAiYWNyIi4KCShBRERJVElPTkFMX1JFR0lTVEVSX05BTUVTKTogQWRkICJwYyIgZm9yIDE1LgoJKEFTTV9PVVRQVVRfUkVHX1BVU0gpOiBDaGFuZ2UgdG8gdjMyLWNvbXBhdGlibGUgc2VxdWVuY2UuCgkoQVNNX09VVFBVVF9SRUdfUE9QKTogQ2hhbmdlIHRvIHYzMi1jb21wYXRpYmxlIHN5bnRheC4KCShBU01fT1VUUFVUX0NBU0VfRU5EKTogSnVzdCBjYWxsIHRoZSBuZXcgZnVuY3Rpb24KCWNyaXNfYXNtX291dHB1dF9jYXNlX2VuZC4KCSogZ2NjL2NvbmZpZy9jcmlzL2NyaXMubWQ6IEdyb3VwIHJlbGF0ZWQgY29uc3RhbnRzIHRvZ2V0aGVyLCB3aXRoCgljb21tZW50cyBsb2NhbC4KCShDUklTX1VOU1BFQ19QTFRfR09UUkVMLCBDUklTX1VOU1BFQ19QTFRfUENSRUwsIENSSVNfVU5TUEVDX1BDUkVMKQoJKENSSVNfVU5TUEVDX0NBU0VTSSk6IE5ldyBjb25zdGFudHMuCgkoQ1JJU19VTlNQRUNfUExUKTogUmVtb3ZlIGNvbnN0YW50LgoJKENSSVNfQUNSX1JFR05VTSk6IE5ldyBjb25zdGFudC4KCSgic2xvdHRhYmxlIik6IE5ldyBhdHRyIGFsdGVybmF0aXZlcyAiaGFzX3JldHVybl9zbG90IiBhbmQKCSJoYXNfY2FsbF9zbG90Ii4KCSgiY2MiKTogTmV3IGF0dHIgYWx0ZXJuYXRpdmVzICJub292MzIiIGFuZCAicmV2Ii4KCSgoZXFfYXR0ciAic2xvdHRhYmxlIiAiaGFzX2NhbGxfc2xvdCIpKQoJKChlcV9hdHRyICJzbG90dGFibGUiICJoYXNfcmV0dXJuX3Nsb3QiKSk6IE5ldyBkZWZpbmVfZGVsYXlzLgoJKCJtb3ZkaSIsICJtb3ZzaSIpOiBBZGp1c3Qgb3BlcmFuZHMgZm9yIENSSVMgdjMyLgoJKCJ0c3RkaSIsICJjbXBkaSIsICJhZGRkaTMiLCAic3ViZGkzIiwgInVtaW5zaTMiKQoJKCJpbmRpcmVjdF9qdW1wIik6IERpdHRvLiAgTWFrZSBkZWZpbmVfZXhwYW5kLgoJKCIqdHN0ZGlfbm9uX3YzMiIsICIqdHN0ZGlfdjMyIiwgIip0c3Q8bW9kZT5fY21wIikKCSgiKnRzdDxtb2RlPl9ub25fY21wIiwgIipjbXBkaV9ub25fdjMyIiwgIipjbXBkaV92MzIiKQoJKCIqbW92ZGlfdjMyIiwgIiphZGRkaTNfbm9uX3YzMiIsICIqYWRkZGkzX3YzMiIpCgkoIiphZGRzaTNfbm9uX3YzMiIsICIqYWRkc2kzX3YzMiIsICIqYWRkaGkzX25vbl92MzIiKQoJKCIqYWRkaGkzX3YzMiIsICIqYWRkcWkzX25vbl92MzIiLCAiKmFkZHFpM192MzIiKQoJKCIqc3ViZGkzX25vbl92MzIiLCAiKnN1YmRpM192MzIiLCAiKnN1YnNpM19ub25fdjMyIikKCSgiKnN1YnNpM192MzIiLCAiKnN1Yjxtb2RlPjNfbm9udjMyIiwgIipzdWI8bW9kZT4zX3YzMiIpCgkoIiphbmRxaTNfbm9uX3YzMiIsICIqYW5kcWkzX3YzMiIsICIqaW9yc2kzX25vbl92MzIiKQoJKCIqaW9yc2kzX3YzMiIsICIqaW9yaGkzX25vbl92MzIiLCAiKmlvcmhpM192MzIiKQoJKCIqaW9ycWkzX25vbl92MzIiLCAiKmlvcnFpM192MzIiLCAiKnVtaW5zaTNfbm9uX3YzMiIpCgkoIip1bWluc2kzX3YzMiIsICIqaW5kaXJlY3RfanVtcF9ub25fdjMyIiwgIippbmRpcmVjdF9qdW1wX3YzMiIpCgkoIipleHBhbmRlZF9jYWxsX3YzMiIsICIqZXhwYW5kZWRfY2FsbF92YWx1ZV92MzIiKTogTmV3IHBhdHRlcm5zLAoJZm9yIHRoZSBjb3JyZXNwb25kaW5nIHN0YW5kYXJkIG5hbWUuCgkoInRzdDxtb2RlPiIpOiBMaW1pdCB0byBCVyBhbmQgbWFrZSBkZWZpbmVfZXhwYW5kLgoJKCJ0c3RzaSIpOiBNYWtlIHNlcGFyYXRlIGluc24sIGFkanVzdGluZyBmb3IgQ1JJUyB2MzIuCgkoIipjbXBfc3dhcGV4dDxtb2RlPiIpOiBBZGp1c3QgZm9yIHYzMi4gIFNwZWNpZnkgInJldiIgZm9yIGF0dHIgImNjIi4KCSgiY21wc2kiLCAiY21wPG1vZGU+Iik6IFJlbW92ZSBzcGVjaWFsIGNhc2VzIGZvciB6ZXJvLiAgU3BlY2lmeQoJYXR0ciAiY2MiLgoJKCIqYnRzdCIpOiBEb24ndCBtYXRjaCBmb3IgVEFSR0VUX0NDSU5JVC4gIFJlcGxhY2UgdGVzdCBvZgoJcmVnaXN0ZXIgd2l0aCBjb21wYXRpYmxlICJjbXBxIDAiLiAgU3BlY2lmeSBhdHRyICJjYyIuCgkoIiptb3ZkaV9pbnNuX25vbl92MzIiKTogTmV3IHBhdHRlcm4sIHJlcGxhY2luZyAiKm1vdmRpX2luc24iIGFuZAoJZGVmaW5lX3NwbGl0LgoJKGRlZmluZV9zcGxpdCBmb3IgREkgbW92ZSk6IE1hdGNoIENSSVMgdjMyIG9ubHkuCgkoIiptb3ZzaV9nb3RfbG9hZCIsICIqbW92c2lfaW50ZXJuYWwiLCAiKmFkZGkiKTogQWRqdXN0IGZvciBDUklTIHYzMi4KCSgibG9hZF9tdWx0aXBsZSIsICJzdG9yZV9tdWx0aXBsZSIsICIqYWRkc2J3X3YzMiIsICIqYWRkdWJ3X3YzMiIpCgkoIiphZGRzPG1vZGU+X3YzMiIsICIqYWRkdTxtb2RlPl92MzIiLCAiKmJvdW5kPG1vZGU+X3YzMiIpCgkoIipjYXNlc2lfanVtcF92MzIiLCAiKmV4cGFuZGVkX2FuZHNpX3YzMiIsICIqZXhwYW5kZWRfYW5kaGlfdjMyIikKCSgiKmV4dG9wPG1vZGU+c2lfdjMyIiwgIipleHRvcHFpaGlfdjMyIiwgIiphbmRoaV9sb3dwYXJ0X3YzMiIpCgkoIiphbmRxaV9sb3dwYXJ0X3YzMiIsICJjcmlzX2Nhc2VzaV92MzIiKTogTmV3IHBhdHRlcm5zLiAKCSgiYWRkPG1vZGU+MyIpOiBNYWtlIGFkZHNpMywgYWRkaGkzIGFuZCBhZGRxaTMgZGVmaW5lX2V4cGFuZC4KCSgic3ViPG1vZGU+MyIpOiBEaXR0byBzdWJzaTMsIHN1YmhpMyBhbmQgc3VicWkzLgoJKCJpb3I8bW9kZT4zIik6IERpdHRvIGlvcnNpMywgaW9yaGkzIGFuZCBpb3JxaTMuCgkoIipleHRvcHFpaGlfbm9uX3YzMiIpOiBSZXBsYWNlICIqZXh0b3BxaWhpIi4KCSgiKmV4dG9wPG1vZGU+c2lfbm9uX3YzMiIpOiBSZXBsYWNlICIqZXh0b3A8bW9kZT5zaSIuCgkoIiphZGR4cWloaV9zd2FwX25vbl92MzIiKTogUmVuYW1lIGZyb20gIipleHRvcHFpaGlfc3dhcCIsIG1ha2UKCW5vbi12MzIgb25seS4KCSgiKmV4dG9wPG1vZGU+c2lfc3dhcF9ub25fdjMyIik6IERpdHRvICIqZXh0b3A8bW9kZT5zaV9zd2FwIi4KCSgiKmV4cGFuZGVkX2FuZHNpX25vbl92MzIiKTogRGl0dG8gIipleHBhbmRlZF9hbmRzaSIuCgkoIipleHBhbmRlZF9hbmRoaV9ub25fdjMyIik6IERpdHRvICIqZXhwYW5kZWRfYW5kaGkiLgoJKCIqYW5kaGlfbG93cGFydF9ub25fdjMyIik6IERpdHRvICIqYW5kaGlfbG93cGFydCIuCgkoIiphbmRxaV9sb3dwYXJ0X25vbl92MzIiKTogRGl0dG8gIiphbmRxaV9sb3dwYXJ0Ii4KCSgiKmV4cGFuZGVkX2NhbGxfbm9uX3YzMiIpOiBEaXR0byAiKmV4cGFuZGVkX2NhbGwiLiAgQ2hhbmdlIGZyb20KCSJjcmlzX2dlbmVyYWxfb3BlcmFuZF9vcl9wbHRfc3ltYm9sIiB0byAiZ2VuZXJhbF9vcGVyYW5kIi4KCSgiKmV4cGFuZGVkX2NhbGxfdmFsdWVfbm9uX3YzMiIpIERpdHRvICIqZXhwYW5kZWRfY2FsbF92YWx1ZSIuCgkoIipjYXNlc2lfYWRkc193IiwgIm1zdGVwX3NoaWZ0IiwgIm1zdGVwX211bCIpCgkoIipleHBhbmRlZF9jYWxsX3NpZGUiLCAiKmV4cGFuZGVkX2NhbGxfdmFsdWVfc2lkZSIpCgkob3AtZXh0ZW5kLXNwbGl0LCBvcC1leHRlbmQtc3BsaXQtcng9cnosIG9wLWV4dGVuZC1zcGxpdC1zd2FwcGVkKQoJKG9wLWV4dGVuZC1zcGxpdC1zd2FwcGVkLXJ4PXJ6LCBvcC1leHRlbmQsIG9wLXNwbGl0LXJ4PXJ6KQoJKG9wLXNwbGl0LXN3YXBwZWQsIG9wLXNwbGl0LXN3YXBwZWQtcng9cnopOiBNYWtlIG5vbi12MzIgb25seS4KCSgiZHN0ZXBfbXVsIiwgInhvcnNpMyIsICJvbmVfY21wbHNpMiIsICI8c2hscj5zaTMiKQoJKCIqZXhwYW5kZWRfPHNobHI+PG1vZGU+IiwgIio8c2hscj48bW9kZT5fbG93cGFydCIsICJhc2hsPG1vZGU+MyIpCgkoIiphc2hsPG1vZGU+X2xvd3BhcnQiLCAiYWJzc2kyIiwgImNsenNpMiIsICJic3dhcHNpMiIpCgkoImNyaXNfc3dhcF9iaXRzIik6IFNwZWNpZnkgIm5vb3YzMiIgZm9yIGF0dHIgImNjIi4KCSgiPHN1Pm11bHNpM19oaWdocGFydCIpOiBEaXR0by4gIENvcnJlY3Qgb3BlcmFuZCAwIHRvIHJlZ2lzdGVyX29wZXJhbmQuCgkoImFuZHFpMyIpOiBNYWtlIGRlZmluZV9leHBhbmQuCgkoIipyZXR1cm5fZXhwYW5kZWQiKTogRm9yIGF0dHIgInNsb3R0YWJsZSIsIGNoYW5nZSBmcm9tICJoYXNfc2xvdCIKCXRvICJoYXNfcmV0dXJuX3Nsb3QiLgoJKCJjcmlzX2Nhc2VzaV9ub25fdjMyIik6IE5ldyBwYXR0ZXJuLCBvbGQgY29udGVudHMgb2YgImNhc2VzaSIuCgkoImNhc2VzaSIpOiBEaXZlcnQgaW50byAiY3Jpc19jYXNlc2lfdjMyIiBhbmQgImNyaXNfY2FzZXNpX25vbl92MzIiLgoJKG1vdmVyc2lkZXFpLCBtb3ZlbXNpZGVxaSwgbW92ZXIyc2lkZSk6IFJlcXVpcmUKCVRBUkdFVF9TSURFX0VGRkVDVF9QUkVGSVhFUy4KCShnb3RwbHQtdG8tcGx0LCBnb3RwbHQtdG8tcGx0LXNpZGUpOiBDaGFuZ2UgZnJvbSBDUklTX1VOU1BFQ19QTFQKCXRvIENSSVNfVU5TUEVDX1BMVF9HT1RSRUwuCgkqIGNvbmZpZy9jcmlzL2NyaXMtcHJvdG9zLmggKGNyaXNfcmVnaXN0ZXJfbW92ZV9jb3N0KQoJKGNyaXNfY2MwX3VzZXJfcmVxdWlyZXNfY21wLCBjcmlzX2FzbV9vdXRwdXRfY2FzZV9lbmQpOiBEZWNsYXJlLgoKMjAwNy0xMi0xNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgZGVidWcvNzA4MQoJKiBkd2FyZjJvdXQuYyAoZHdhcmZfdGFnX25hbWUpOiBTeW5jaHJvbml6ZSB3aXRoIGR3YXJmMi5oLgoJKGlzX3R5cGVfZGllKTogQ292ZXIgaW50ZXJmYWNlIHR5cGVzLgoJKGNsYXNzX29yX25hbWVzcGFjZV9zY29wZV9wKTogQ292ZXIgaW50ZXJmYWNlIGFuZCBjbGFzcyB0eXBlcy4KCShyZWNvcmRfdHlwZV90YWcpOiBOZXcuCgkoZ2VuX2lubGluZWRfc3RydWN0dXJlX3R5cGVfZGllKTogVXNlIGl0LgoJKGdlbl9zdHJ1Y3Rfb3JfdW5pb25fdHlwZV9kaWUpOiBMaWtld2lzZS4KCShwcnVuZV91bnVzZWRfdHlwZXNfd2Fsayk6IENvdmVyIGludGVyZmFjZSB0eXBlcy4KCSogbGFuZ2hvb2tzLmggKGNsYXNzaWZ5X3JlY29yZCk6IE5ldyBlbnVtLgoJKGNsYXNzaWZ5X3JlY29yZCk6IE5ldyBtZW1iZXIgaW4gc3RydWN0IGxhbmdob29rc19mb3JfdHlwZXMuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19DTEFTU0lGWV9SRUNPUkQpOiBOZXcuCgkoTEFOR0hPT0tTX0ZPUl9UWVBFU19JTklUSUFMSVpFUik6IEFkanVzdC4KCjIwMDctMTItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKHJlZmVyZW5jZV90b191bnVzZWQpOiBEb24ndCBlbWl0IHN0cmluZ3MgaW4KCWluaXRpYWxpemVycyBqdXN0IGJlY2F1c2Ugb2YgZGVidWcgaW5mb3JtYXRpb24uCgkqIHRyZWUuaCAoVFJFRV9BU01fV1JJVFRFTik6IERvY3VtZW50IHVzZSBmb3IgU1RSSU5HX0NTVHMuCgoyMDA3LTEyLTE1ICBTZWJhc3RpYW4gUG9wICA8c2ViYXN0aWFuLnBvcEBhbWQuY29tPgoKCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKG51bWJlcl9vZl9pdGVyYXRpb25zX2Zvcl9hbGxfbG9vcHMpOiBSZXBsYWNlCglwcmludF9sb29wX2lyIHdpdGggcHJpbnRfbG9vcHMuCgkqIHRyZWUtZmxvdy5oIChkb3RfY2ZnLCBkZWJ1Z19sb29wcywgZGVidWdfbG9vcCwgZGVidWdfbG9vcF9udW0sCglwcmludF9sb29wcywgcHJpbnRfbG9vcHNfYmIpOiBEZWNsYXJlLgoJKiB0cmVlLWNmZy5jIChwcmludF9sb29wc19iYik6IE5ldy4KCShwcmludF9sb29wKTogUHJpbnQgaGVhZGVyLCBsYXRjaCwgYm91bmRzLCBlc3RpbWF0aW9uIG9mIGl0ZXJhdGlvbnMuCgkocHJpbnRfbG9vcF9hbmRfc2libGluZ3MpOiBOZXcuCgkocHJpbnRfbG9vcF9pcik6IFJlbmFtZWQgcHJpbnRfbG9vcHMuCgkoZGVidWdfbG9vcF9pcik6IFJlbmFtZWQgZGVidWdfbG9vcHMuCgkoZGVidWdfbG9vcCwgZGVidWdfbG9vcF9udW0pOiBOZXcuCgoyMDA3LTEyLTE1ICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJKiB0cmVlLWZsb3ctaW5saW5lLmguYyAobmV4dF9yZWFkb25seV9pbW1fdXNlKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDctMTItMTUgIEJlcm5oYXJkIEZpc2NoZXIgIDxhbGRvdEBnY2MuZ251Lm9yZz4KCgkqIHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBGaXggdHlwbyBpbiB3YXJuaW5nLgoKMjAwNy0xMi0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzI5OTc4CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnJhbmNoKTogT3B0aW1pemUgTEUvTEVVL0dUL0dUVQoJREltb2RlIGNvbXBhcmlzb25zIGFnYWluc3QgY29uc3RhbnQgd2l0aCBhbGwgMSdzIGluIHRoZSBsb3dlciB3b3JkLgoKMjAwNy0xMi0xNCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoc3NlNF8yX3BjbXBlc3RyKTogVXNlIHJlZ19ub3RfeG1tMF9vcGVyYW5kCgljb25zdHJhaW50IGZvciBvcGVyYW5kIDIuICBVc2Ugbm9uaW1tX25vdF94bW0wX29wZXJhbmQgY29uc3RyYWludAoJZm9yIG9wZXJhbmQgNC4gIFVwZGF0ZSBhcmd1bWVudHMgaW4gdGhlIGNhbGwgdG8KCWdlbl9zc2U0XzJfcGNtcGVzdHJfY2Nvbmx5LgoJKHNzZV80XzJfcGNtcGVzdHJfY2Nvbmx5KTogUmVudW1iZXIgaW5zbiBvcGVyYW5kcyBhbmQgdXBkYXRlIGluc24KCXRlbXBsYXRlIGFjY29yZGluZ2x5LgoJKHNzZTRfMl9wY21waXN0cik6IFVzZSByZWdfbm90X3htbTBfb3BlcmFuZCBjb25zdHJhaW50IGZvciBvcGVyYW5kMi4KCVVzZSBub25pbW1fbm90X3htbTBfb3BlcmFuZCBjb25zdHJhaW50IGZvciBvcGVyYW5kIDMuICBVcGRhdGUKCWFyZ3VtZW50cyBpbiB0aGUgY2FsbCB0byBnZW5fc3NlNF8yX3BjbXBpc3RyX2Njb25seS4KCShzc2VfNF8yX3BjbXBpc3RyX2Njb25seSk6IFJlbnVtYmVyIGluc24gb3BlcmFuZHMgYW5kIHVwZGF0ZSBpbnNuCgl0ZW1wbGF0ZSBhY2NvcmRpbmdseS4KCjIwMDctMTItMTQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzM0NDYyCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmggKGNyZWF0ZV9zc2FfYXJ0aWZpY2lhbF9sb2FkX3N0bXQpOiBBZGQKCXBhcmFtZXRlciB0byBzYXkgd2hldGhlciB0byB1bmxpbmsgaW1tZWRpYXRlIHVzZXMuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGNyZWF0ZV9zc2FfYXJ0aWZpY2lhbF9sb2FkX3N0bXQpOiBEbyBub3QKCW1hcmsgdGhlIGFydGlmaWNpYWwgc3RtdCBhcyBtb2RpZmllZC4gIFVubGluayBpbW1lZGlhdGUgdXNlcwoJb25seSBpZiByZXF1ZXN0ZWQuCgkqIHRyZWUtc3NhLWRvbS5jIChyZWNvcmRfZXF1aXZhbGVuY2VzX2Zyb21fc3RtdCk6IFVwZGF0ZSBjYWxsZXIuCgkqIHRyZWUtc3NhLXByZS5jIChpbnNlcnRfZmFrZV9zdG9yZXMpOiBMaWtld2lzZS4KCjIwMDctMTItMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgbWlkZGxlLWVuZC8zMzA4OAoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcl9jb21wbGV4X3BhcnQpOiBBZGQgbm90ZSB0byBjb21tZW50LgoJKiB0cmVlLWNvbXBsZXguYyAoaW5pdF9kb250X3NpbXVsYXRlX2FnYWluKTogUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlCgl1bmluaXRpYWxpemVkIGxvYWRzIGdlbmVyYXRlZCBieSBnaW1wbGlmeV9tb2RpZnlfZXhwcl9jb21wbGV4X3BhcnQuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9yZWdfdHlwZSk6IFJldHVybiBmYWxzZSBmb3IgY29tcGxleCB0eXBlcwoJaWYgbm90IG9wdGltaXppbmcuCgkqIHRyZWUtc3NhLmMgKHNzYV91bmRlZmluZWRfdmFsdWVfcCk6IE5ldyBwcmVkaWNhdGUgZXh0cmFjdGVkIGZyb20uLi4KCSh3YXJuX3VuaW5pdCk6IC4uLmhlcmUuICBVc2Ugc3NhX3VuZGVmaW5lZF92YWx1ZV9wLgoJKiB0cmVlLXNzYS1wcmUuYyAoaXNfdW5kZWZpbmVkX3ZhbHVlKTogRGVsZXRlLgoJKHBoaV90cmFuc2xhdGVfMSk6IFVzZSBzc2FfdW5kZWZpbmVkX3ZhbHVlX3AuCgkoYWRkX3RvX2V4cF9nZW4pOiBMaWtld2lzZS4KCShtYWtlX3ZhbHVlc19mb3Jfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLWZsb3cuaCAoc3NhX3VuZGVmaW5lZF92YWx1ZV9wKTogRGVjbGFyZS4KCjIwMDctMTItMTMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCSAgICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCVBSIGJvb3RzdHJhcC8zNDE0NAoJKiBzeXN0ZW0uaDogTWFrZSAtV3VuaW5pdGlhbGl6ZWQgbm9uLWZhdGFsIGlmIEFTU0VSVF9DSEVDS0lORwoJaXMgZGlzYWJsZWQuCgoyMDA3LTEyLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyNjM2CgkqIGRmLXNjYW4uYyAoZGZfZ2V0X2VudHJ5X2Jsb2NrX2RlZl9zZXQpOiBTZXQgc3RydWN0X3ZhbHVlX3J0eAoJcmVnbm8gaW4gZW50cnlfYmxvY2tfZGVmcyBldmVuIGlmIEhBVkVfcHJvbG9ndWUgJiYgZXBpbG9ndWVfY29tcGxldGVkLgoKMjAwNy0xMi0xMyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCSAgICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdGFyZ2V0LzM0NDM1CgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oIChfbW1fc2h1ZmZsZV9wZCwgX21tX2V4dHJhY3RfZXBpMTYsCglfbW1faW5zZXJ0X2VwaTE2LCBfbW1fc2h1ZmZsZWhpX2VwaTE2LCBfbW1fc2h1ZmZsZWxvX2VwaTE2LAoJX21tX3NodWZmbGVfZXBpMzIpOiBDYXN0IG5vbi1jb25zdGFudCBpbnB1dCB2YWx1ZXMgdG8gZWl0aGVyIF9fbTY0LAoJX19tMTI4LCBfX20xMjhpIG9yIF9fbTEyOGQgaW4gYSBtYWNybyB2ZXJzaW9uIG9mIHRoZSBpbnRyaW5zaWMuCglDYXN0IGNvbnN0YW50IGlucHV0IHZhbHVlcyB0byBpbnQuCgkqIGNvbmZpZy9pMzg2L2FtbWludHJpbi5oIChfbW1fZXh0cmFjdGlfc2k2NCwgX21tX2luc2VydGlfc2k2NCk6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9ibW1pbnRyaW4uaCAoX21tX3JvdGlfZXBpOCwgX21tX3JvdGlfZXBpMTYsCglfbW1fcm90aV9lcGkzMiwgX21tX3JvdGlfZXBpNjQpOiBEaXR0by4KCSogY29uZmlnL2kzODYvc21taW50cmluLmggKF9tbV9ibGVuZF9lcGkxNiwgX21tX2JsZW5kX3BzLCBfbW1fYmxlbmRfcGQsCglfbW1fZHBfcHMsIF9tbV9kcF9wZCwgX21tX2luc2VydF9wcywgX21tX2V4dHJhY3RfcHMsIF9tbV9pbnNlcnRfZXBpOCwKCV9tbV9pbnNlcnRfZXBpMzIsIF9tbV9pbnNlcnRfZXBpNjQsIF9tbV9leHRyYWN0X2VwaTgsIG1tX2V4dHJhY3RfZXBpMzIsCglfbW1fZXh0cmFjdF9lcGk2NCwgX21tX21wc2FkYndfZXB1OCwgX21tX2NtcGlzdHJtLCBfbW1fY21waXN0cmksCglfbW1fY21wZXN0cm0sIF9tbV9jbXBlc3RyaSwgX21tX2NtcGlzdHJhLCBfbW1fY21waXN0cmMsIF9tbV9jbXBpc3RybywKCV9tbV9jbXBpc3RycywgX21tX2NtcGlzdHJ6LCBfbW1fY21wZXN0cmEsIF9tbV9jbXBlc3RyYywgX21tX2NtcGVzdHJvLAoJX21tX2NtcGVzdHJzLCBfbW1fY21wZXN0cnopOiBEaXR0by4KCSogY29uZmlnL2kzODYvdG1taW50cmluLmggKF9tbV9hbGlnbnJfZXBpOCwgX21tX2FsaWducl9waTgpOiBEaXR0by4KCSogY29uZmlnL2kzODYveG1taW50cmluLmggKF9tbV9zaHVmZmxlX3BzLCBfbW1fZXh0cmFjdF9waTE2LCBfbV9wZXh0cncsCglfbW1faW5zZXJ0X3BpMTYsIF9tX3BpbnNydywgX21tX3NodWZmbGVfcGkxNiwgX21fcHNodWZ3KTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L21taW50cmluLWNvbW1vbi5oIChfbW1fcm91bmRfcGQsIF9tbV9yb3VuZF9zZCwKCV9tbV9yb3VuZF9wcywgX21tX3JvdW5kX3NzKTogRGl0dG8uCgoyMDA3LTEyLTEzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQ0NTAKCSogcGFyYW1zLmRlZiAoUEFSQU1fU0NDVk5fTUFYX1NDQ19TSVpFKTogTmV3IHBhcmFtLgoJKiBpbnZva2UudGV4aSAoc2Njdm4tbWF4LXNjYy1zaXplKTogRG9jdW1lbnQuCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1zY2N2bi5vKTogQWRkICQoUEFSQU1TX0gpIGRlcGVuZGVuY3kuCgkqIHRyZWUtc3NhLXNjY3ZuLmggKHJ1bl9zY2Nfdm4pOiBSZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZQoJb24gZXJyb3IuCgkqIHRyZWUtc3NhLXNjY3ZuLmMgKHBhcmFtcy5oKTogSW5jbHVkZS4KCShERlMpOiBSZXR1cm4gdHJ1ZSBpZiBhbGwgd2VudCB3ZWxsLCByZXR1cm4gZmFsc2UgYXMgc29vbiBhcwoJYSBTQ0MgZXhjZWVkcyB0aGUgc2l6ZSBvZiBQQVJBTV9TQ0NWTl9NQVhfU0NDX1NJWkUuCgkocnVuX3NjY192bik6IFJldHVybiB0cnVlIGlmIGFsbCB3ZW50IHdlbGwsIHJldHVybiBmYWxzZSBpZgoJd2UgYWJvcnRlZCBkdXJpbmcgREZTLgoJKiB0cmVlLXNzYS1wcmUuYyAoZXhlY3V0ZV9wcmUpOiBDaGVjayBpZiBTQ0NWTiBmaW5pc2hlZAoJc3VjY2Vzc2Z1bGx5LCBvdGhlcndpc2UgYmFpbCBvdXQuCgoyMDA3LTEyLTEzICBPbGdhIEdvbG92YW5ldnNreSAgPG9sZ2FAaWwuaWJtLmNvbT4KCgkqIGlwYS1zdHJ1Y3QtcmVvcmcuYyAoaXNfY2FuZGlkYXRlKTogUHJpbnQgaW5mb3JtYXRpb24gdG8gZHVtcCAKCWZpbGUgd2hlbiB0aGUgdHlwZSBpcyBpbml0aWFsaXplZC4KCShnZXRfc3RtdF9hY2Nlc3Nlcyk6ICBMaWtld2lzZSB3aGVuIGEgc3RydWN0dXJlIGhhcyBiaXRmaWVsZHMKCW9yIGZpZWxkIGFjY2VzcyBpcyB0b28gY29tcGxpY2F0ZS4KCShzYWZlX2NvbmRfZXhwcl9jaGVjayk6IExpa2V3aXNlIGZvciB1bnNhZmUgY29uZGl0aW9uIGV4cHJlc3Npb25zLgoJKGV4Y2x1ZGVfY29sZF9zdHJ1Y3RzKTogTGlrZXdpc2UgZm9yIGNvbGQgc3RydWN0dXJlcy4KCShjb2xsZWN0X3N0cnVjdHVyZXMpOiBTdXBwcmVzcyByZWR1bmRhbnQgcHJpbnQgd2hlbiB0aGVyZSBhcmUgCglubyBzdHJ1Y3R1cmVzIHRvIHRyYW5zZm9ybS4KCShkb19yZW9yZyk6IFByaW50IHRvIGR1bXAgZmlsZSBhIG51bWJlciBvZiBzdHJ1Y3R1cmVzIHRoYXQgCgl3aWxsIGJlIHRyYW5zZm9ybWVkLgoJKGR1bXBfbmV3X3R5cGVzKTogUHJpbnQgYSBudW1iZXIgb2YgbmV3IHR5cGVzIHRvIHJlcGxhY2UgCglhbiBvcmlnaW5hbCBzdHJ1Y3R1cmUgdHlwZS4KCQoyMDA3LTEyLTEzICBPbGdhIEdvbG92YW5ldnNreSAgPG9sZ2FAaWwuaWJtLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW1pemEgT3B0aW9ucyk6IERvY3VtZW50IG5ldyAtZmlwYS1zdHJ1Y3QtcmVvcmcKCW9wdGlvbiBhbmQgc3RydWN0LXJlb3JnLWNvbGQtc3RydWN0LXJhdGlvIHBhcmFtZXRlci4KCQoyMDA3LTEyLTEzICBUb3Jiam9ybiBHcmFubHVuZCAgPHRlZ2VAc3dveC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfcnR4X2Nvc3RzKSBbTVVMVF06IENoZWNrIG9wMCBmb3IKCVpFUk9fRVhURU5EIHdoZW4gY29tcHV0aW5nIGNvc3RzIGZvciB3aWRlbmluZyBtdWx0aXBsaWNhdGlvbi4KCjIwMDctMTItMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIHRhcmdldC8zMDE5MgoJKiBjb25maWcvYXJtL2llZWU3NTQtZGYuUyAoZmxvYXR1bmRpZGYpOiBGaXggZm9yIHdyb25nIHNwIHZhbHVlIG9uCglleGl0IHdoZW4gdXNpbmcgaGFyZCBGUEEuCgkqIGNvbmZpZy9hcm0vaWVlZTc1NC1kZi5TIChmbG9hdGRpZGYpOiBMaWtld2lzZS4KCjIwMDctMTItMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGJvb3RzdHJhcC8zMDU4OQoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCB0aGF0IGZvciBNaW5HVyBvbmx5IHJ1bnRpbWUgMy4xMiBhbmQKCWxhdGVyIGlzIHN1cHBvcnRlZC4KCjIwMDctMTItMTIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGlzX21lbV9yZWYpOiBJZ25vcmUgU1RBQ0tfVElFLgoKMjAwNy0xMi0xMiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyOTAxCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X21vZGlmeV9leHByX3Jocyk6IEhhbmRsZSB0aGUgY2FzZSB3aGVuIHdlCglhcmUgYXNzaWduaW5nIGZyb20gYSBjb25zdGFudCBjb25zdHJ1Y3Rvci4KCUZpeCB3cmFwcGluZyBpbiBmdW5jdGlvbiBjb21tZW50LgoKMjAwNy0xMi0xMiAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9PX2NvbnN0cmFpbnRfc3RyKTogTGltaXQgdGhlIHJhbmdlCglmb3IgJ09uJyB0byAtNEcrMS4uLTEuCgkqIGNvbmZpZy9zMzkwL2NvbnN0cmFpbnRzLm1kOiBBZGp1c3QgY29tbWVudCBhY2NvcmRpbmdseS4KCjIwMDctMTItMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IFVzZSBmcmFtZV9yZWdfcnR4Cglmb3IgU1BFIHNhdmVzLgoKMjAwNy0xMi0xMSAgS2FpIFRpZXR6ICA8a2FpLnRpZXR6QG9uZXZpc2lvbi5jb20+CgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKERXQVJGMl9VTldJTkRfSU5GTyk6IEhhbmRsZSA2NC1iaXQKCXRhcmdldCBzYW1lIGFzIDMyLWJpdC4KCjIwMDctMTItMTAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzM0MzcxCgkqIHRyZWUtdmVjdG9yaXplci5oIChzdHJ1Y3QgX2xvb3BfdmVjX2luZm8pOiBBZGQgbnVtX2l0ZXJzX3VuY2hhbmdlZAoJZmllbGQuCgkoTE9PUF9WSU5GT19OSVRFUlNfVU5DSEFOR0VEKTogRGVmaW5lIHRvIG51bV9pdGVyc191bmNoYW5nZWQgZmllbGQuCgkqIHRyZWUtdmVjdG9yaXplci5jIChzZXRfcHJvbG9ndWVfaXRlcmF0aW9ucywKCXNscGVlbF90cmVlX3BlZWxfbG9vcF90b19lZGdlKTogQ2FsbCB1bnNoYXJlX2V4cHIgb24KCUxPT1BfVklORk9fTklURVJTX1VOQ0hBTkdFRCBiZWZvcmUgdXNpbmcgaXQuCgoyMDA3LTEyLTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8zNDQwMwoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX21vdm1lbSk6IFB1bnQgaWYgdGhlIGNvdW50IGlzIGxhcmdlLgoJKGl4ODZfZXhwYW5kX3NldG1lbSk6IExpa2V3aXNlLgoKMjAwNy0xMi0xMCAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzM0MzAyCgkqIGF1dG8taW5jLWRlYy5jIChhdHRlbXB0X2NoYW5nZSk6IENoYW5nZSBwbGFjZSB3aGVyZSBtb3ZlIGlzCglpbnNlcnRlZC4KCjIwMDctMTItMTAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9hcnJheV90eXBlX2RpZSwgZ2VuX2Rlc2NyX2FycmF5X3R5cGVfZGllKTogRm9yCglGb3J0cmFuIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cyB1c2UgRFdfQVRfb3JkZXJpbmcKCURXX09SRF9jb2xfbWFqb3IuCgoyMDA3LTEyLTEwICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHRhcmdldC8zMjA4NgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBFbmFibGUgLWZ2ZWN0LWNvc3QtbW9kZWwuCgoyMDA3LTEyLTEwIFVyb3MgQml6amFrIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9mdW5jdGlvbl9yZWdwYXJtKTogRG8gbm90IGNoZWNrIGdsb2JhbF9yZWdzCglhcnJheSwgcmVnaXN0ZXJzIHRoYXQgYXJlIG1lbWJlcnMgb2YgZ2xvYmFsX3JlZ3MgYXJlIGFsc28gbWVtYmVycyBvZgoJZml4ZWRfcmVncyBhcnJheS4gIFVzZSBSRUdQQVJNX01BWCB0byBjaGVjayB0aGF0IG5vIHJlZ3Bhcm0gaGFyZAoJcmVnaXN0ZXIgaXMgdGFrZW4gYnkgYSBmaXhlZCByZWdpc3RlciB2YXJpYWJsZS4gIENoZWNrIHVwIHRvIGFuZAoJaW5jbHVkaW5nIERJX1JFRyB3aGVuIGFkanVzdGluZyByZWdwYXJtIHZhbHVlIGR1ZSB0byBmaXhlZCByZWdzIHVzYWdlLgoJKHJlcF9wcmVmaXhfdXNhYmxlKTogQ2hlY2sgZml4ZWRfcmVncyBhcnJheSwgbm90IGdsb2JhbF9yZWdzIGFycmF5IGZvcgoJYXZhaWxhYmxlIGhhcmQgcmVnaXN0ZXJzLgoJKGl4ODZfZXhwYW5kX3N0cmxlbik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzdHJtb3YpOiBEaXR0by4KCShjbXBzdHJuc2kpOiBEaXR0by4KCjIwMDctMTItMTAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogZ2Vub3Bpbml0LmM6IEluY2x1ZGUgdG1fcC5oIGluIGdlbmVyYXRlZCBmaWxlLgoKCSogY29uZmlnL2FybS9uZW9uLm1kICh2ZWNfc2V0PG1vZGU+X2ludGVybmFsKTogVXNlIElOVFZBTAoJdG8gZXh0cmFjdCB0aGUgaW50ZWdlciBmcm9tIG9wZXJhbmRzWzJdLgoJKHZlY19zZXR2MmRpX2ludGVybmFsKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fc2l6ZV9yZXR1cm5fcmVncyk6IE1ha2UgcmV0dXJuIHR5cGUgdW5zaWduZWQuCgkoYXJtX2luaXRfbmVvbl9idWlsdGlucyk6IE1vdmUgY29kZSBhZnRlciBkZWNsYXJhdGlvbnMuCgoyMDA3LTEyLTEwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfYWRkcmVzc18xKTogVG8gcHJvcGVybHkgbWFyayBhcyBhbgoJYXV0b2luY2RlYywgcGFzcyBYIGZvciBub24tTlVMTCBPVVQgaW4gY2FsbCB0byBwdXNoX3JlbG9hZCBmb3IKCWF1dG9pbmNkZWMgd2hpY2ggY2FuJ3QgYmUgdHJpdmlhbGx5IHVzZWQgYXMgYW4gYWRkcmVzcy4KCjIwMDctMTItMTAgIFByYW5hdiBCaGFuZGFya2FyICA8cHJhbmF2LmJoYW5kYXJrYXJAY2VsdW5pdGUuY29tPgoJICAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY2FsbGVyLXNhdmUuYyAoaW5zZXJ0X29uZV9pbnNuKTogSWYgaW5zZXJ0aW5nIGJlZm9yZSBhIGNhbGxfaW5zbgoJdGhlbiB0aGUgcmVnaXN0ZXJzIGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50cyBvZiB0aGUgY2FsbCBhcmUKCWxpdmVfdGhyb3VnaG91dCBpbiB0aGUgbmV3IGluc24uCgoyMDA3LTEyLTA5ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIG1pZGRsZS1lbmQvMzI4ODkKCVBSIHRhcmdldC8zNDA5MQoJKiBwYS5tZDogQ29uc29saWRhdGUgSEltb2RlIGFuZCBRSW1vZGUgbW92ZSBwYXR0ZXJucyBpbnRvIG9uZSBwYXR0ZXJuCgllYWNoLCBlbGltaW5hdGluZyBmbG9hdGluZy1wb2ludCBhbHRlcm5hdGl2ZXMuCgkqIHBhLXByb3Rvcy5oIChwYV9jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MsIHBhX21vZGVzX3RpZWFibGVfcCk6CglEZWNsYXJlIGZ1bmN0aW9ucy4KCSogcGEtNjQuaCAoU0VDT05EQVJZX01FTU9SWV9ORUVERUQpOiBEZWZpbmUgaGVyZS4KCSogcGEuYyAocGFfc2Vjb25kYXJ5X3JlbG9hZCk6IFVzZSBhbiBpbnRlcm1lZGlhdGUgZ2VuZXJhbCByZWdpc3RlcgoJZm9yIGNvcGllcyB0by9mcm9tIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIGNsYXNzZXMuICBTaW1wbGlmeSBjb2RlCglTSElGVF9SRUdTIGNsYXNzLiAgUHJvdmlkZSBhZGRpdGlvbmFsIGNvbW1lbnRzLgoJKHBhX2Nhbm5vdF9jaGFuZ2VfbW9kZV9jbGFzcywgcGFfbW9kZXNfdGllYWJsZV9wKTogTmV3IGZ1bmN0aW9ucy4KCSogcGEuaCAoTU9ERVNfVElFQUJMRV9QKTogVXNlIHBhX21vZGVzX3RpZWFibGVfcC4KCShTRUNPTkRBUllfTUVNT1JZX05FRURFRCk6IERlbGV0ZSBkZWZpbmUuCgkoSU5UMTRfT0tfU1RSSUNUKTogRGVmaW5lLgoJKE1PREVfT0tfRk9SX1NDQUxFRF9JTkRFWElOR19QKTogQWxsb3cgU0Ztb2RlIGFuZCBERm1vZGUgd2hlbiB1c2luZwoJc29mdCBmbG9hdC4KCShNT0RFX09LX0ZPUl9VTlNDQUxFRF9JTkRFWElOR19QKTogTGlrZXdpc2UuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogVXNlIElOVDE0X09LX1NUUklDVCBpbiBSRUcrRCBjYXNlIGZvcgoJU0Ztb2RlIGFuZCBERm1vZGUuCgkoTEVHSVRJTUlaRV9SRUxPQURfQUREUkVTUyk6IFVzZSBJTlQxNF9PS19TVFJJQ1QgaW4gbWFzayBzZWxlY3Rpb24uCglBbGlnbiBESW1vZGUgb2Zmc2V0cyB3aGVuIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUuCgkqIHBhMzItcmVncy5oIChWQUxJRF9GUF9NT0RFX1ApOiBSZW1vdmUgUUltb2RlIGFuZCBISW1vZGUuCgkoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogRGVmaW5lLgoJKiBwYTY0LXJlZ3MuaCAoVkFMSURfRlBfTU9ERV9QKTogUmVtb3ZlIFFJbW9kZSBhbmQgSEltb2RlLgoJKENBTk5PVF9DSEFOR0VfTU9ERV9DTEFTUyk6IERlZmluZSB1c2luZyBwYV9jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MuCgoyMDA3LTEyLTA5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBmb3J0cmFuLzIyMjQ0CgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19HRVRfQVJSQVlfREVTQ1JfSU5GTyk6IERlZmluZS4KCShMQU5HX0hPT0tTX0ZPUl9UWVBFU19JTklUSUFMSVpFUik6IEFkZCBpdC4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBhcnJheV9kZXNjcl9pbmZvKTogRm9yd2FyZCBkZWNsYXJhdGlvbi4KCShzdHJ1Y3QgbGFuZ19ob29rc19mb3JfdHlwZXMpOiBBZGQgZ2V0X2FycmF5X2Rlc2NyX2luZm8gZmllbGQuCgkqIGR3YXJmMi5oIChEV19BVF9iaXRfc3RyaWRlLCBEV19BVF9ieXRlX3N0cmlkZSk6IE5ldy4KCShEV19BVF9zdHJpZGVfc2l6ZSwgRFdfQVRfc3RyaWRlKTogS2VlcCBhcm91bmQgZm9yIER3YXJmMgoJY29tcGF0aWJpbGl0eS4KCSogZHdhcmYyb3V0LmggKHN0cnVjdCBhcnJheV9kZXNjcl9pbmZvKTogTmV3IHR5cGUuCgkqIGR3YXJmMm91dC5jIChkd2FyZl9hdHRyX25hbWUpOiBSZW5hbWUgRFdfQVRfc3RyaWRlIHRvCglEV19BVF9ieXRlX3N0cmlkZSBhbmQgRFdfQVRfc3RyaWRlX3NpemUgdG8gRFdfQVRfYml0X3NpemUuCgkoZGVzY3JfaW5mb19sb2MsIGFkZF9kZXNjcl9pbmZvX2ZpZWxkLCBnZW5fZGVzY3JfYXJyYXlfdHlwZV9kaWUpOgoJTmV3IGZ1bmN0aW9ucy4KCShnZW5fdHlwZV9kaWVfd2l0aF91c2FnZSk6IENhbGwgbGFuZ19ob29rcy50eXBlcy5nZXRfYXJyYXlfZGVzY3JfaW5mbwoJYW5kIGdlbl9kZXNjcl9hcnJheV90eXBlX2RpZS4KCjIwMDctMTItMDggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zNDM5MQoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rfc2V0dXBfcmVhbGlnbm1lbnQpOiBNYXJrIG5ldwoJc3ltYm9scyBmb3IgcmVuYW1pbmcuCgoyMDA3LTEyLTA3ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoJCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKEFTTV9QUkVGRVJSRURfRUhfREFUQV9GT1JNQVQpOiBEZWZpbmUuCgkoQVNNX09VVFBVVF9EV0FSRl9QQ1JFTCk6IERlZmluZS4KCQoyMDA3LTEyLTA3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zNDM4MgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIE9QVF9mZm9yY2VfYWRkci4KCjIwMDctMTItMDcgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIG0zMmMuaCAoTEVHSVRJTUlaRV9BRERSRVNTKTogVXNlIFdJTiBpbnN0ZWFkIG9mIHdpbi4KCShMRUdJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogU2FtZS4KCjIwMDctMTItMDcgIFNhbXVlbCBUYXJkaWV1ICA8c2FtQHJmYzExNDkubmV0PgoKCVBSIGFkYS8yOTE1NwoJKiBkb2MvaW5zdGFsbC50ZXhpOiBFeHBsYWluIGhvdyB0byBjaGVjayBmb3IgYSBjbGVhbiBlbnZpcm9ubWVudCB3aGVuCglidWlsZGluZyBHTkFULgoKMjAwNy0xMi0wNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1wcm9maWxlLmMgKGdjb3ZfdHlwZV90bXBfdmFyKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCSh0cmVlX2dlbl9lZGdlX3Byb2ZpbGVyKTogVXNlIGEgc2luZ2xlIHNoYXJlZCB2YXJpYWJsZSBkZWNsIHBlcgoJZnVuY3Rpb24gZm9yIGVkZ2UgY291bnRlciBpbmNyZW1lbnRpbmcuCgkodHJlZV9wcm9maWxpbmcpOiBSZS1zZXQgdGhlIHNoYXJlZCB2YXJpYWJsZS4KCjIwMDctMTItMDYgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jICh4dGVuc2FfdmFfc3RhcnQpOiBBZGQgcHJvdG90eXBlLgoKMjAwNy0xMi0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGMvMjkxNzIKCSogYy1vcHRzLmMgKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBDYWxsIGNwcF9jbGVhcl9maWxlX2NhY2hlLgoKMjAwNy0xMi0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogQ2hlY2sKCXRhcmdldG0uYmluZHNfbG9jYWxfcCBhcyB3ZWxsIGFzIERFQ0xfRVhURVJOQUwuCgoyMDA3LTEyLTA2ICBIYXJzaGEgSmFnYXNpYSA8aGFyc2hhLmphZ2FzaWFAYW1kLmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5jIChzbHBlZWxfYWRkX2xvb3BfZ3VhcmQpOiBHaW1wbGlmeSB0aGUgY29uZGl0aW9uLgoJKHNldF9wcm9sb2d1ZV9pdGVyYXRpb25zKTogTmV3LiBTZXQgdGhlIHByb2xvZ3VlIGl0ZXJhdGlvbnMgdG8gdG90YWwKCW51bWJlciBvZiBzY2FsYXIgaXRlcmF0aW9ucyBpZiB0aGUgY29zdCBtb2RlbCBjaGVjayBpbmRpY2F0ZXMgdGhhdAoJc2NhbGFyIGNvZGUgc2hvdWxkIGJlIGdlbmVyYXRlZC4KCShzbHBlZWxfdHJlZV9wZWVsX2xvb3BfdG9fZWRnZSk6IEFkZCBhIG5ldyBwYXJhbWV0ZXIgYW5kIGNvZGUgZm9yIAoJZ2VuZXJhdGluZyB0aGUgY29zdCBjb25kaXRpb24gZm9yIGVwaWxvZy4gQ2FsbAoJc2V0X3Byb2xvZ3VlX2l0ZXJhdGlvbnMgdG8gZ2VuZXJhdGUgY29zdCBjb25kaXRpb24gZm9yIHByb2xvZy4KCShuZXdfbG9vcF92ZWNfaW5mbyk6IEluaXRpYWxpemUgTE9PUF9WSU5GT19OSVRFUlNfVU5DSEFOR0VELgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAoTE9PUF9WSU5GT19OSVRFUlNfVU5DSEFOR0VEKTogTmV3LgoJKHNscGVlbF90cmVlX3BlZWxfbG9vcF90b19lZGdlKTogVXBkYXRlIGRlY2xhcmF0aW9uLgoJKHNldF9wcm9sb2d1ZV9pdGVyYXRpb25zKTogTmV3IGRlY2xhcmF0aW9uLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfbG9vcF9mb3JtKTogVXBkYXRlIAoJTE9PUF9WSU5GT19OSVRFUlNfVU5DSEFOR0VELgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMKCSh2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzKTogQWRkIG5ldyBwYXJhbWV0ZXIgYW5kCgljb2RlIHRvICBjaGVjayBpZiBydW4gdGltZSBjb3N0IG1vZGVsIHRlc3QgaXMgbmVlZGVkLgoJUmVtb3ZlIGNvZGUgdGhhdCBhZGRzIGJ1aWx0aW4gdmVjdG9yaXphdGlvbiBjb3N0IHRvIHNjYWxhcgoJb3V0c2lkZSBjb3N0IGZvciB0aGUgcnVuIHRpbWUgY29zdCBtb2RlbCB0ZXN0LiBJZiBydW4gdGltZQoJY29zdCBtb2RlbCB0ZXN0IGlzIG5lZWRlZCBhZGQgdGhlIGFwcHJvcHJpYXRlIGd1YXJkIGNvc3QgdG8KCXRoZSBzY2FsYXIgb3V0c2lkZSBjb3N0LiBUaGUgZ3VhcmQgY29zdCBkZXBlbmRzIG9uIHdoZXRoZXIKCXRoZSBndWFyZCBpcyBnZW5lcmF0ZWQgYXQgdmVyc2lvbmluZyBvciBhdCBwcm9sb2cgZ2VuZXJhdGlvbgoJb3IgYXQgZXBpbG9nIGdlbmVyYXRpb24uIENoYW5nZSBjb3N0IG1vZGVsIGVxdWF0aW9uIHRvIGluY2x1ZGUKCXNjYWxhciBvdXRzaWRlIGNvc3QuCgkoY29uc2VydmF0aXZlX2Nvc3RfdGhyZXNob2xkKTogTmV3LiBSZXR1cm4gdGhlIGxlc3MgY29uc2VydmF0aXZlCglwcm9maXRhYmlsaXR5IHRocmVzaG9sZCBiZXR3ZWVuIHRoZSBjb3N0IG1vZGVsIHRocmVzaG9sZCBhbmQgdGhlCgl1c2VyIGRlZmluZWQgdmVjdG9yaXphdGlvbiB0aHJlc2hvbGQuCgkodmVjdF9kb19wZWVsaW5nX2Zvcl9sb29wX2JvdW5kKTogQ2FsbCBjb25zZXJ2YXRpdmVfY29zdF90aHJlc2hvbGQuCgkodmVjdF9kb19wZWVsaW5nX2Zvcl9hbGlnbm1lbnQpOiBTYW1lLgoJKHZlY3RfbG9vcF92ZXJzaW9uaW5nKTogU2FtZS4KCSh2ZWN0X2NyZWF0ZV9jb25kX2Zvcl9hbGlnbl9jaGVja3MpOiBBTkRzIHRoZSBjb3N0IG1vZGVsIGNvbmRpdGlvbgoJd2l0aCB0aGUgYWxpZ25tZW50IGNvbmRpdGlvbi4KCSh2ZWN0X3RyYW5zZm9ybV9sb29wKTogQ2FsbCBsb29wIHZlcnNpb25pbmcgb25seSB3aGVuIHRoZXJlIGlzIGEKCW1pc2FsaWdubWVudCBvciBhbiBhbGlhc2luZyBwcm9ibGVtLgoKMjAwNy0xMi0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yMDk4MwoJKiB0cmVlLXNzYS1jY3AuYyAob3B0aW1pemVfc3RkYXJnX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkoZXhlY3V0ZV9mb2xkX2FsbF9idWlsdGlucyk6IENhbGwgaXQgZm9yIEJVSUxUX0lOX1ZBX1NUQVJULAoJQlVJTFRfSU5fVkFfQ09QWSBhbmQgQlVJTFRfSU5fVkFfRU5ELgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnZ2NfdGFyZ2V0KTogQWRkIGV4cGFuZF9idWlsdGluX3ZhX3N0YXJ0IGhvb2suCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0VYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogRGVmaW5lLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBpdC4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBVc2UKCXRhcmdldG0uZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQgaG9vayBpbnN0ZWFkIG9mCglFWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCBtYWNyby4KCSogYWxwaGEvYWxwaGEuYyAoYWxwaGFfdmFfc3RhcnQpOiBNYWRlIHN0YXRpYy4KCShvdmVycmlkZV9vcHRpb25zKTogQ2xlYXIgdGFyZ2V0bS5leHBhbmRfYnVpbHRpbl92YV9zdGFydCBpZgoJVEFSR0VUX1VOSUNPU01LLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IERlZmluZS4KCSogYWxwaGEvdW5pY29zbWsuaCAoRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBSZW1vdmUuCgkqIGFscGhhL2FscGhhLmggKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlLgoJKiBhbHBoYS9hbHBoYS1wcm90b3MuaCAoYWxwaGFfdmFfc3RhcnQpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiB4dGVuc2EveHRlbnNhLmggKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlLgoJKiB4dGVuc2EveHRlbnNhLmMgKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IERlZmluZS4KCSh4dGVuc2FfdmFfc3RhcnQpOiBNYWRlIHN0YXRpYy4KCSogeHRlbnNhL3h0ZW5zYS1wcm90b3MuaCAoeHRlbnNhX3ZhX3N0YXJ0KTogUmVtb3ZlIHByb3RvdHlwZS4KCSogcGEvcGEtcHJvdG9zLmggKGhwcGFfdmFfc3RhcnQpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBwYS9wYS5oIChFWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IFJlbW92ZS4KCSogcGEvcGEuYyAoaHBwYV92YV9zdGFydCk6IE1hZGUgc3RhdGljLCBhZGQgcHJvdG90eXBlLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IERlZmluZS4KCSogZnJ2L2Zydi5jIChmcnZfZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBNYWRlIHN0YXRpYywgYWRkIHByb3RvdHlwZS4KCShUQVJHRVRfRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBEZWZpbmUuCgkqIGZydi9mcnYtcHJvdG9zLmggKGZydl9leHBhbmRfYnVpbHRpbl92YV9zdGFydCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGZydi9mcnYuaCAoRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBSZW1vdmUuCgkqIGkzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogQ2xlYXIKCXRhcmdldG0uZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQgaWYgLW0zMiBvciA2NC1iaXQgTVMgQUJJLgoJKGl4ODZfdmFfc3RhcnQpOiBNYWRlIHN0YXRpYy4KCShUQVJHRVRfRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBEZWZpbmUuCgkqIGkzODYvaTM4Ni5oIChFWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IFJlbW92ZS4KCSogaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X3ZhX3N0YXJ0LCBpeDg2X3ZhX2FyZyk6IFJlbW92ZSBwcm90b3R5cGVzLgoJKiBpcTIwMDAvaXEyMDAwLXByb3Rvcy5oIChpcTIwMDBfdmFfc3RhcnQpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBpcTIwMDAvaXEyMDAwLmggKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlLgoJKiBpcTIwMDAvaXEyMDAwLmMgKGlxMjAwMF92YV9zdGFydCk6IE1hZGUgc3RhdGljLCBhZGQgcHJvdG90eXBlLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IERlZmluZS4KCSogcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX3ZhX3N0YXJ0KTogUmVtb3ZlIHByb3RvdHlwZS4KCSogcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmFfc3RhcnQpOiBNYWRlIHN0YXRpYywgYWRkIHByb3RvdHlwZS4KCShUQVJHRVRfRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBEZWZpbmUuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBDbGVhciB0YXJnZXRtLmV4cGFuZF9idWlsdGluX3ZhX3N0YXJ0IGlmCglERUZBVUxUX0FCSSAhPSBBQklfVjQuCgkqIHJzNjAwMC9yczYwMDAuaCAoRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBSZW1vdmUuCgkqIHNwdS9zcHUuYyAoc3B1X3ZhX3N0YXJ0KTogTWFkZSBzdGF0aWMsIGFkZCBwcm90b3R5cGUuCgkoVEFSR0VUX0VYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogRGVmaW5lLgoJKiBzcHUvc3B1LmggKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlLgoJKiBzcHUvc3B1LXByb3Rvcy5oIHNwdV92YV9zdGFydCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIHN0b3JteTE2L3N0b3JteTE2LmggKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlLgoJKiBzdG9ybXkxNi9zdG9ybXkxNi1wcm90b3MuaCAoeHN0b3JteTE2X2V4cGFuZF9idWlsdGluX3ZhX3N0YXJ0KToKCVJlbW92ZSBwcm90b3R5cGUuCgkqIHN0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9leHBhbmRfYnVpbHRpbl92YV9zdGFydCk6IE1hZGUgc3RhdGljLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IERlZmluZS4KCSogczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX3ZhX3N0YXJ0KTogUmVtb3ZlIHByb3RvdHlwZS4KCSogczM5MC9zMzkwLmMgKHMzOTBfdmFfc3RhcnQpOiBNYWRlIHN0YXRpYy4KCShUQVJHRVRfRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBEZWZpbmUuCgkqIHMzOTAvczM5MC5oIChFWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IFJlbW92ZS4KCSogbW4xMDMwMC9tbjEwMzAwLmggKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlLgoJKiBtbjEwMzAwL21uMTAzMDAtcHJvdG9zLmggKG1uMTAzMDBfdmFfc3RhcnQpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBtbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF92YV9zdGFydCk6IE1hZGUgc3RhdGljLCBhZGQgcHJvdG90eXBlLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IERlZmluZS4KCSogYXJjL2FyYy5jIChhcmNfdmFfc3RhcnQpOiBNYWRlIHN0YXRpYywgYWRkIHByb3RvdHlwZS4KCShUQVJHRVRfRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBEZWZpbmUuCgkqIGFyYy9hcmMuaCAoRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBSZW1vdmUuCgkqIGFyYy9hcmMtcHJvdG9zLmggKGFyY192YV9zdGFydCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIG10L210LXByb3Rvcy5oIChtdF92YV9zdGFydCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIHNwYXJjL3NwYXJjLmMgKHNwYXJjX3ZhX3N0YXJ0KTogTWFkZSBzdGF0aWMsIGFkZCBwcm90b3R5cGUuCgkoVEFSR0VUX0VYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogRGVmaW5lLgoJKiBzcGFyYy9zcGFyYy1wcm90b3MuaCAoc3BhcmNfdmFfc3RhcnQpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBzcGFyYy9zcGFyYy5oIChFWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IFJlbW92ZS4KCSogc2gvc2guYyAoc2hfdmFfc3RhcnQpOiBNYWRlIHN0YXRpYywgYWRkIHByb3RvdHlwZS4KCShUQVJHRVRfRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBEZWZpbmUuCgkqIHNoL3NoLXByb3Rvcy5oIChzaF92YV9zdGFydCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIHNoL3NoLmggKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlLgoJKiBtaXBzL21pcHMtcHJvdG9zLmggKG1pcHNfdmFfc3RhcnQpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBtaXBzL21pcHMuaCAoRVhQQU5EX0JVSUxUSU5fVkFfU1RBUlQpOiBSZW1vdmUuCgkqIG1pcHMvbWlwcy5jIChtaXBzX3ZhX3N0YXJ0KTogTWFkZSBzdGF0aWMuCgkoVEFSR0VUX0VYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogRGVmaW5lLgoKMjAwNy0xMi0wNiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIHRyZWUtc3NhLWxvb3AuYyAoZ2F0ZV90cmVlX3BhcmFsbGVsaXplX2xvb3BzKTogUmV0dXJuIHRydWUgd2hlbgoJImZsYWdfdHJlZV9wYXJhbGxlbGl6ZV9sb29wcyA+IDEiLgoJCjIwMDctMTItMDYgIFpkZW5layBEdm9yYWsgIDxvb2tAdWN3LmN6PgoJICAgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQwMDUKCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX2Zvcm1hbF90bXBfcmhzKTogQWRkIGEgY2FzZSBmb3IgQ09ORF9FWFBSLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jdHgpOiBBZGQgYSBuZXcgbWVtYmVyIGFsbG93X3Joc19jb25kX2V4cHIuCgkoZ2ltcGxpZnlfcHVyZV9jb25kX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJpY19leHByX2NvdWxkX3RyYXBfcCk6IE5ldyBmdW5jdGlvbi4KCShnaW1wbGlmeV9jb25kX2V4cHIpOiBDYWxsIGdpbXBsaWZ5X3B1cmVfY29uZF9leHByLgoJKGZvcmNlX2dpbXBsZV9vcGVyYW5kKTogSW5pdGlhbGl6ZSBuZXcgZmllbGQgYWxsb3dfcmhzX2NvbmRfZXhwci4KCjIwMDctMTItMDYgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZW1pdF9zdGFja190aWUpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9lbWl0X3Byb2xvZ3VlKTogRW1pdCBhIHN0YWNrIHRpZSB3aGVuIHdyaXRpbmcgdG8gdGhlCglmOC1mMTUgc3RhY2sgc2xvdHMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJzdGFja190aWUiKTogTmV3IGluc24gZGVmaW5pdGlvbi4KCjIwMDctMTItMDYgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogU0VSVklDRTogUmVtb3ZlLgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aSAoTWlzY2VsbGFuZW91cyBEb2NzKTogUmVtb3ZlIFNFUlZJQ0UgaXRlbS4KCjIwMDctMTItMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzQzMzcKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSkgPGNhc2UgQklUX0lPUl9FWFBSPjogRG9uJ3QgbWluaW1pemUKCW51bWJlciBvZiBiaXRzIHNldCBpbiBDMSBpZiBhIG1vZGUgbWFzayBmb3Igc29tZSBtb2RlIGNhbiBiZSB1c2VkCglpbnN0ZWFkLgoKMjAwNy0xMi0wNSAgQmVybmhhcmQgRmlzY2hlciAgPGFsZG90QGdjYy5nbnUub3JnPgoKCSogdmFyYXNtLmMgKG1lcmdlX3dlYWssIHdlYWtfZmluaXNoLCBhc3NlbWJsZV9hbGlhcyk6IENvbW1lbnRhcnkgdHlwbwoJZml4ZXMuCgoyMDA3LTEyLTA1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQxMzgKCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAodHJlZV9zc2FfZm9yd2FyZF9wcm9wYWdhdGVfc2luZ2xlX3VzZV92YXJzKToKCURvIG5vdCBmb3J3YXJkIHByb3BhZ2F0ZSBhZGRyZXNzZXMgaWYgdGhhdCBjaGFuZ2VzIHZvbGF0aWxlbmVzcyBvZgoJdGhlIHBvaW50ZWQtdG8gdHlwZS4KCjIwMDctMTItMDUgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzM0MzEyCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9mdW5jdGlvbl9yZWdwYXJtKTogQWxzbyBjaGVjayBmb3IgZml4ZWQKCXJlZ2lzdGVycyB3aGVuIGNoZWNraW5nIHRoYXQgcmVncGFybSByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZS4KCUxvd2VyIHJlZ3Bhcm0gdmFsdWUgZHVlIHRvIGZpeGVkIHJlZ2lzdGVycyB1c2FnZSBpbiBhZGRpdGlvbiB0bwoJZ2xvYmFsIHJlZ3MgdXNhZ2UuCgoyMDA3LTEyLTA1ICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJKiBzcGFyc2VzZXQuYzogSW5jbHVkZSBjb25maWcuaCBhbmQgc3lzdGVtLmggYmVmb3JlIHNwYXJzZXNldC5oLgoJKiBzcGFyc2VzZXQuaDogUmVtb3ZlIGluY2x1c2lvbiBvZiBzeXN0ZW0uaC4KCjIwMDctMTItMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIG9wdGFicy5jIChpbml0X2luc25fY29kZXMpOiBOZXcgZnVuY3Rpb24uCgkobmV3X29wdGFiKTogRGVsZXRlLgoJKGluaXRfb3B0YWIsIGluaXRfb3B0YWJ2KTogRG9uJ3QgY2FsbCBuZXdfb3B0YWIuCgkoaW5pdF9jb252ZXJ0X29wdGFiKTogRG9uJ3QgY2xlYXIgdGhlIGluc24gY29kZXMuCgkoaW5pdF9vcHRhYnMpOiBDYWxsIGluaXRfaW5zbl9jb2Rlcy4KCjIwMDctMTItMDQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogb21wLWxvdy5jIChvcHRpbWl6ZV9vbXBfbGlicmFyeV9jYWxscyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfb21wX3BhcmFsbGVsKTogQ2FsbCBpdCBpZiBvcHRpbWl6aW5nLgoKCVBSIG1pZGRsZS1lbmQvMzQxMzQKCSogc3RtdC5jIChleHBhbmRfc3RhY2tfcmVzdG9yZSk6IENhbGwgZXhwYW5kX25vcm1hbCBvbiB2YXIgdG8gZ2V0CglydHggZm9yIGl0IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgd2lsbCBiZSBhIFZBUl9ERUNMLgoKMjAwNy0xMi0wNCAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJKiBjLXBhcnNlciAoY19wYXJzZXJfc3RhdGVtZW50X2FmdGVyX2xhYmVscyk6IE1vdmUgZXJyb3IgZnJvbSBoZXJlLi4uCgkoY19wYXJzZXJfbGFiZWwpOiAuLi4gdG8gaGVyZS4gQ2hlY2sgdGhhdCB0aGUgZGVjbGFyYXRpb24gaXMgbm90CglhY3R1YWxseSBqdXN0IGFub3RoZXIgbGFiZWwuCgoyMDA3LTEyLTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zNDMzNAoJUFIgbWlkZGxlLWVuZC8zNDIyMgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfYWRkcl9kZXJlZmVyZW5jZV9vcGVyYW5kcyk6IElmIHdlCglmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIFNNVHMgYWxpYXNlcywgbWFrZSBzdXJlIHRvIGFkZCB2aXJ0dWFsCglvcGVyYW5kcyBmb3IgdGhlIFNNVCBpdHNlbGYuCgkoY3JlYXRlX3NzYV9hcnRpZmljaWFsX2xvYWRfc3RtdCk6IEZpeCB0eXBvLiAgTWFrZSBzdXJlIHRvIGFsc28KCWNsZWFyIHRoZSBsb2FkZWQgYW5kIHN0b3JlZCBzeW1ib2xzIGJpdG1hcHMuCgoyMDA3LTEyLTA0ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zcHUvc3B1LmggKEFTTV9GT1JNQVRfUFJJVkFURV9OQU1FKTogUmVtb3ZlOyB1c2UgZGVmYXVsdC4KCjIwMDctMTItMDQgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZG9jL3RtLnRleGkgKEV4Y2VwdGlvbiBIYW5kbGluZyk6IE1lbnRpb24gdW53aW5kLWR3Mi14dGVuc2EuYy4KCjIwMDctMTItMDMgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmIuZ2NjQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMzNzEzCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIC1mZm9yY2UtYWRkciBkb2N1bWVudGF0aW9uLgoJKiBleHByLmMgKGVtaXRfbW92ZV9pbnNuKTogUmVtb3ZlIHVzZSBvZiBmbGFnX2ZvcmNlX2FkZHIuCgkoZXhwYW5kX2V4cHJfcmVhbF8xKTogU2FtZS4KCShkb190YWJsZWp1bXApOiBTYW1lLgoJQ2FsbCBtZW1vcnlfYWRkcmVzcyBpbnN0ZWFkIG9mIG1lbW9yeV9hZGRyZXNzX25vZm9yY2UuCgkqIGV4cHIuaCAobWVtb3J5X2FkZHJlc3Nfbm9mb3JjZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGV4cGxvdy5jIChtZW1vcnlfYWRkcmVzcyk6IFJlbW92ZSBzdXBwb3J0IGZvciBmbGFnX2ZvcmNlX2FkZHIuCgkodmFsaWRpemVfbWVtKTogU2FtZS4KCShtZW1vcnlfYWRkcmVzc19ub2ZvcmNlKTogUmVtb3ZlLgoJKiBjb21tb24ub3B0OiBBZGQgZHVtbXkgZG9jdW1lbnRhdGlvbiBmb3IgLWZmb3JjZS1hZGRyLgoJKiBjb21iaW5lLmMgKGNhbl9jb21iaW5lX3ApOiBSZW1vdmUgLWZmb3JjZS1hZGRyIGNvbW1lbnQuCgkqIGNvbmZpZy9jcmlzL2NyaXMuaCAoT1BUSU1JWkFUSU9OX09QVElPTlMpOiBSZW1vdmUgc2V0IG9mCglmbGFnX2ZvcmNlX2FkZHIuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoUElDX0NBU0VfVkVDVE9SX0FERFJFU1MpOiBSZW1vdmUgY29tbWVudAoJcmVsYXRpbmcgdG8gbWVtb3J5X2FkZHJlc3Nfbm9mb3JjZS4KCSogdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvY29tcGlsZS8yMDA1MDgwMi0xLmM6IFJlbW92ZS4KCSogdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvY29tcGlsZS8yMDAxMTExMy0xLmM6IFJlbW92ZS4KCQoyMDA3LTEyLTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG9tcC1sb3cuYyAobG9va3VwX2RlY2xfaW5fb3V0ZXJfY3R4KTogQWxsb3cgY2FsbGluZyB0aGlzCgl3aXRoICFjdHgtPmlzX25lc3RlZC4KCShtYXliZV9sb29rdXBfZGVjbF9pbl9vdXRlcl9jdHgpOiBMb29rIHVwIGluIG91dGVyIGNvbnRleHRzCglldmVuIGlmICFjdHgtPmlzX25lc3RlZC4KCShsb3dlcl9jb3B5cHJpdmF0ZV9jbGF1c2VzLCBsb3dlcl9zZW5kX2NsYXVzZXMsCglsb3dlcl9zZW5kX3NoYXJlZF92YXJzKTogQ2FsbCBsb29rdXBfZGVjbF9pbl9vdXRlcl9jdHgKCXVuY29uZGl0aW9uYWxseS4KCglQUiBtaWRkbGUtZW5kLzI5NzQ5CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpIDxjYXNlIEJJVF9BTkRfRVhQUj46IE9wdGltaXplCgkoWCA8PCBDMSkgJiBDMiBpbnRvIChYIDw8IEMxKSAmIChDMiB8ICgoMSA8PCBDMSkgLSAxKSkKCWFuZCAoWCA+PiBDMSkgJiBDMiBpbnRvIChYID4+IEMxKSAmIChDMiB8IH4oKHR5cGUpIC0xID4+IEMxKSkuCgkoZm9sZF9iaW5hcnkpIDxjYXNlIExTSElGVF9FWFBSLCBjYXNlIFJTSElGVF9FWFBSPjogT3B0aW1pemUKCShYICYgQzIpIDw8IEMxIGludG8gKFggPDwgQzEpICYgKEMyIDw8IEMxKSBhbmQKCShYICYgQzIpID4+IEMxIGludG8gKFggPj4gQzEpICYgKEMyID4+IEMxKSBpZiB0aGF0IGFsbG93cyBmdXJ0aGVyCglvcHRpbWl6YXRpb25zLgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNDUzCgkqIHRyZWUtZGF0YS1yZWYuYyAoc3BsaXRfY29uc3RhbnRfb2Zmc2V0KTogVXNlIFBPSU5URVJfUExVU19FWFBSCglmb3IgcG9pbnRlciBhZGRpdGlvbi4KCSogdHJlZS1wYXJsb29wcy5jIChjYW5vbmljYWxpemVfbG9vcF9pdnMpOiBMaWtld2lzZS4KCShzZXBhcmF0ZV9kZWNsc19pbl9sb29wX25hbWUpOiBDb3B5IERFQ0xfR0lNUExFX1JFR19QIGZyb20gdmFyIHRvCgl2YXJfY29weS4KCjIwMDctMTItMDMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fRkRQSUNfXyBhcwoJbmVjZXNzYXJ5LgoKMjAwNy0xMi0wMyAgUmF6eWEgTGFkZWxza3kgPHJhenlhQGlsLmlibS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKGZpcGEtY3AsIGZpcGEtbWF0cml4LXJlb3JnKTogQWRkIGRvY3VtZW50YXRpb24uCgoyMDA3LTEyLTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzM0MzE3CgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgT1BUX2Z0cmVlX3N0b3JlX2NvcHlfcHJvcC4KCSogY29tbW9uLm9wdCAoZnRyZWUtc3RvcmUtY29weS1wcm9wKTogVXNlIHRoZSBzYW1lIGhlbHAgdGV4dCBhcyBmb3IKCW90aGVyIG5vcCBzd2l0Y2hlcy4KCjIwMDctMTItMDIgIEF5YWwgWmFrcyAgPHpha3NAaWwuaWJtLmNvbT4KCSAgICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBtb2R1bG8tc2NoZWQuYyAoY2FsY3VsYXRlX211c3RfcHJlY2VkZV9mb2xsb3csCgl0cnlfc2NoZWR1bGluZ19ub2RlX2luX2N5Y2xlKTogTmV3IGZ1bmN0aW9ucy4KCShzbXNfc2NoZWR1bGVfYnlfb3JkZXIpOiBDYWxsIHRoZSBuZXcgZnVuY3Rpb25zLgoJKHBzX2luc25fZmluZF9jb2x1bW4pOiBVc2UgbXVzdF9mb2xsb3cgYW5kIG11c3RfcHJlY2VkZSBvbmx5IGlmCgl0aGV5IGFyZSBub3QgTlVMTC4KCShwc19pbnNuX2FkdmFuY2VfY29sdW1uKTogTGlrZXdpc2UuCgoyMDA3LTEyLTAyICBBeWFsIFpha3MgIDx6YWtzQGlsLmlibS5jb20+CgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogbW9kdWxvLXNjaGVkLmMgKGdldF9zY2hlZF93aW5kb3cpOiBGaXggdGhlIGRpcmVjdGlvbiBvZiB0aGUKCXNjaGVkdWxpbmcgd2luZG93IGFuZCBhZGQgZHVtcCBpbmZvLgoKMjAwNy0xMi0wMiAgU2FtdWVsIFRhcmRpZXUgIDxzYW1AcmZjMTE0OS5uZXQ+CgoJKiBjb25maWcvc2gvc2gubWQgKGNtcGdldXNpX3QpOiBGaXggY29uZGl0aW9uLgoKMjAwNy0xMS0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2djLWNvbW1vbi5jIChkdW1wX2dnY19sb2Nfc3RhdGlzdGljcyk6IFJlc2V0IGdnY19mb3JjZV9jb2xsZWN0IGZsYWcuCgoyMDA3LTExLTMwICBTZW9uZ2JhZSBQYXJrIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzM0MTcxCgkqIGNmZ3J0bC5jICh1cGRhdGVfYmJfZm9yX2luc25fY2hhaW4pOiBOZXcgZnVuY3Rpb24sCglyZWZhY3RvcmVkIGZyb20gdXBkYXRlX2JiX2Zvcl9pbnNuLgoJKHVwZGF0ZV9iYl9mb3JfaW5zbik6IENhbGwgdXBkYXRlX2JiX2Zvcl9pbnNuLgoJKHJ0bF9tZXJnZV9ibG9ja3MsIHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6CglSZXBsYWNlIGEgbG9vcCB3aXRoIHVwZGF0ZV9iYl9mb3JfaW5zbl9jaGFpbiBjYWxsLgoJKGNmZ19sYXlvdXRfbWVyZ2VfYmxvY2tzKTogQWRkIGEgY2FsbCB0bwoJdXBkYXRlX2JiX2Zvcl9pbnNuX2NoYWluLiBSZXBsYWNlIHRoZSBmb3IgbG9vcAoJd2l0aCBhIGNhbGwgdG8gdXBkYXRlX2JiX2Zvcl9pbnNuX2NoYWluLgoKMjAwNy0xMS0zMCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjb25maWcvdmF4L3ZheC5oIChBU01fRk9STUFUX1BSSVZBVEVfTkFNRSk6IFJlbW92ZS4gVXNlIGRlZmF1bHQuCgoyMDA3LTExLTI5ICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zNDI0NAoJKiB0cmVlLXZycC5jIChhZGp1c3RfcmFuZ2Vfd2l0aF9zY2V2KTogQ2xlYXIgc2NldiBjYWNoZS4KCShyZWNvcmRfbnVtYmVyc19vZl9pdGVyYXRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGV4ZWN1dGVfdnJwKTogQ2FjaGUgdGhlIG51bWJlcnMgb2YgaXRlcmF0aW9ucyBvZiBsb29wcy4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKHNjZXZfcmVzZXRfZXhjZXB0X25pdGVycyk6IE5ldyBmdW5jdGlvbi4KCShzY2V2X3Jlc2V0KTogVXNlIHNjZXZfcmVzZXRfZXhjZXB0X25pdGVycy4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmggKHNjZXZfcmVzZXRfZXhjZXB0X25pdGVycyk6IERlY2xhcmUuCgoyMDA3LTExLTI5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM0MzQKCSogdHJlZS1pbmxpbmUuYyAoc2V0dXBfb25lX3BhcmFtZXRlcik6IElmIHRoZSB2YWx1ZSBwYXNzZWQgdG8KCWEgcGFyYW1ldGVyIGlzIG5ldmVyIHVzZWQsIGRvbid0IHNldCBpdCB1cC4KCjIwMDctMTEtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zMjEzMAoJKiBjb25maWcvcnM2MDAwL2VhYmktY24uYXNtIChfX0RUT1JfRU5EX18pOiBNYWtlIGl0IHdlYWsuCgkqIGNvbmZpZy9yczYwMDAvc29sLWNuLmFzbSAoX19EVE9SX0VORF9fKTogTGlrZXdpc2UuCgoyMDA3LTExLTI5ICBBbmRyaXMgUGF2ZW5pcyA8YW5kcmlzLnBhdmVuaXNAaWtpLmZpPgoKCSogTWFrZWZpbGUuaW46IFVzZSBzZXBhcmF0ZSB2cGF0aCBsaW5lcyBmb3IgZWFjaCBwYXRoLgoKMjAwNy0xMS0yOSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBTRVJWSUNFOiBVcGRhdGUgVVJMLgoKMjAwNy0xMS0yOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQxNDAKCSogdHJlZS1pZi1jb252LmMgKGlmX2NvbnZlcnRpYmxlX3BoaV9wKTogRmFpbCBpZiBCQiBvdGhlciB0aGFuCglsb29wLT5oZWFkZXIgaGFzIHZpcnR1YWwgcGhpIG5vZGVzLgoKMjAwNy0xMS0yOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCVBSIHRhcmdldC8zMjQwNgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9ub25sb2NhbF9nb3RvKTogQWxzbyBlbWl0IGEgdXNlCglvZiBHUCByZWdpc3RlciwgaWYgdmFsaWQgYW5kIGZpeGVkLgoKCVJldmVydDoKCTIwMDctMDYtMjEgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJUFIgdGFyZ2V0LzMyNDA2CgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGRlZmluZV9jb25zdGFudHMpOiBSZW5hbWUgVU5TUEVDX0VIX1JFQ0VJVkVSCgl0byBVTlNQRUNfTk9OTE9DQUxfR09UT19SRUNFSVZFUiBnbG9iYWxseS4KCShleGNlcHRpb25fcmVjZWl2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiAuLi4gdGhpcy4KCjIwMDctMTEtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCSAgICBKb2V5IFllIDxqb2V5LnllQGludGVsLmNvbT4KCglQUiB0YXJnZXQvMzQwMDEKCSogY29uZmlnL2kzODYvaTM4Ni5jIChmdW5jdGlvbl9hcmdfMzIpOiBEb24ndCBwYXNzIGFnZ3JlZ2F0ZQoJYXJndW1lbnRzIGluIEVDWC9FRFggZm9yIGZhc3RjYWxsLgoKMjAwNy0xMS0yOCAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogY29uZmlnL2kzODYvbGludXguaCAoQ1JUX0dFVF9SRklCX0RBVEEpOiBBZGQgSW50ZWwgc3ludGF4IGlubGluZQoJYXNtIHRvIG1hY3JvLgoJKiBjb25maWcvaTM4Ni9zY281LmggKENSVF9HRVRfUkZJQl9EQVRBKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3N5c3Y0LmggKENSVF9HRVRfUkZJQl9EQVRBKTogTGlrZXdpc2UuCgoyMDA3LTExLTI4ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWl4NjQub3B0IChtYWl4NjQpOiBBZGQgTmVnYXRpdmUobWFpeDMyKS4KCShtYWl4MzIpOiBBZGQgTmVnYXRpdmUobWFpeDY0KS4KCjIwMDctMTEtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzM0MDE2CgkqIHRyZWUtc3NhLWxvb3AuYyAocGFzc19saW5lYXJfdHJhbnNmb3JtKTogQWRkCglUT0RPX3VwZGF0ZV9zc2Ffb25seV92aXJ0dWFscyB0byB0b2RvX2ZsYWdzX2ZpbmlzaC4KCjIwMDctMTEtMjcgIEVyaWMgQi4gV2VkZGluZ3RvbiAgPGVyaWMud2VkZGluZ3RvbkBhdG1lbC5jb20+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbWN1X3R5cGVzKTogQWRkIGF0bWVnYTMyaHZiLgoJKiBjb25maWcvYXZyL2F2ci5oIChMSU5LX1NQRUMpOiBMaWtld2lzZS4KCShDUlRfQklOVVRJTFNfU1BFQ1MpOiBMaWtld3NpZS4KCSogY29uZmlnL2F2ci90LWF2ciAoTVVMVElMSUJfTUFUQ0hFUyk6IExpa2V3aXNlLgoJCjIwMDctMTEtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zNDIyNQoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChhZGphY2VudF9tZW1fbG9jYXRpb25zKTogRG9uJ3QgYXNzdW1lCglNRU1fU0laRSBpcyBzZXQgb24gYWxsIE1FTXMuCgoyMDA3LTExLTI3ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5vcHQgKG1oYXJkLWZsb2F0KTogQWRkIHRoZSBvcHRpb24gdG8gYmUKCW92ZXJyaWRkZW4uICBUaGF0IHdhcyBtaXNzaW5nIGluIG15IGxhc3QgcGF0Y2guCgoyMDA3LTExLTI3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQyNDEKCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAoZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByKTogTWFrZSBzdXJlCgl0byBvbmx5IGRlbGV0ZSByZWFsIGNvbnZlcnNpb24gY2hhaW5zLgoKMjAwNy0xMS0yNyAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAub3B0IChtMzEsIG02NCwgbWVzYSwgbXphcmNoLCBtc29mdC1mbG9hdCwKCW1oYXJkLWZsb2F0LCBtbG9uZy1kb3VibGUtNjQsIG1sb25nLWRvdWJsZS0xMjgpOiBBZGQgdGhlCglvcHRpb24gdG8gYmUgb3ZlcnJpZGRlbi4KCjIwMDctMTEtMjcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl8xKTogVmVyaWZ5IHRoZSBhcmd1bWVudCB0eXBlcwoJb2YgQlVJTFRfSU5fSVNOT1JNQUwuCgkoZm9sZF9idWlsdGluX24pOiBWZXJpZnkgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gdmFyaWFkaWMKCWJ1aWx0LWluIGZ1bmN0aW9ucy4KCjIwMDctMTEtMjcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9lbGYuaCAoU1VCVEFSR0VUX0RSSVZFUl9TRUxGX1NQRUNTKTogTmV3IG1hY3JvLgoJKiBkb2MvaW52b2tlLnRleGkgKEJsYWNrZmluIE9wdGlvbnMpOiBEb2N1bWVudCB0aGUgZWZmZWN0cy4KCjIwMDctMTEtMjcgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5vcHQgKG0zMik6IEFkZCBOZWdhdGl2ZShtNjQpLgoJKG02NCk6IEFkZCBOZWdhdGl2ZShtMzIpLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5vcHQgKG0zMik6IEFkZCBOZWdhdGl2ZShtNjQpLgoJKG02NCk6IEFkZCBOZWdhdGl2ZShtMzIpLgoKMjAwNy0xMS0yNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChzZXRfcmhzKSA8R0lNUExFX01PRElGWV9TVE1UPjogRml4IHR5cG8uCgoyMDA3LTExLTI2ICBNaWNoYWVsIE1laXNzbmVyICA8bWljaGFlbC5tZWlzc25lckBhbWQuY29tPgoKCVBSIHRhcmdldC8zNDA3NwoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX21vdm1lbSk6IElmIHRoZSBjb3B5IHNpemUgaXMgYQoJY29uc3RhbnQsIGF2b2lkIGNhbGxpbmcgZW1pdF9jbXBfYW5kX2p1bXBfaW5zbnMuICBVc2UgY291bnRlcl9tb2RlCgl0byBnZXQgdGhlIG1vZGUgZm9yIGxvYWRpbmcgYSBwc2V1ZG8gcmVnaXN0ZXIgd2l0aCBhIGNvdW50IHJhdGhlcgoJdGhhbiBkdXBsaWNhdGluZyBjb2RlLgoKMjAwNy0xMS0yNSAgRXJpYyBCLiBXZWRkaW5ndG9uICA8ZXJpYy53ZWRkaW5ndG9uQGF0bWVsLmNvbT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9tY3VfdHlwZXMpOiBBZGQgYXRtZWdhMTI4NHAuCgkqIGNvbmZpZy9hdnIvYXZyLmggKExJTktfU1BFQyk6IExpa2V3aXNlLgoJKENSVF9CSU5VVElMU19TUEVDUyk6IExpa2V3c2llLgoJKiBjb25maWcvYXZyL3QtYXZyIChNVUxUSUxJQl9NQVRDSEVTKTogTGlrZXdpc2UuCgoyMDA3LTExLTI2ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCQoJKiBjLWNvbW1vbi5jIChjb252ZXJzaW9uX3dhcm5pbmcpOiBVc2UgZ2V0X3Vud2lkZW5lZCBpbnN0ZWFkIG9mCglnZXRfbmFycm93ZXIuCgkKMjAwNy0xMS0yNiAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJUFIgYy8yMzcyMgoJKiBjLXBhcnNlci5jIChzdHJ1Y3QgY19wYXJzZXIpOiBOZXcgYml0IGluX2lmX2Jsb2NrLgoJKGNfcGFyc2VyX2NvbXBvdW5kX3N0YXRlbWVudF9ub3N0YXJ0KTogSGFuZGxlIHVuZXhwZWN0ZWQgJ2Vsc2UnCglrZXl3b3JkLgoJKGNfcGFyc2VyX3N0YXRlbWVudF9hZnRlcl9sYWJlbHMpOiBTZXQgaW5faWZfYmxvY2sgdG8gZmFsc2Ugd2hpbGUKCXBhcnNpbmcuCgkoY19wYXJzZXJfaWZfYm9keSk6IERvbid0IGNhbGwgY19wYXJzZXJfc3RhdGVtZW50X2FmdGVyX2xhYmVscyBpZgoJYSBzZW1pY29sb24gaXMgZm91bmQsIGp1c3QgY29uc3VtZSBpdC4gRG9uJ3QgY2FsbAoJY19wYXJzZXJfc3RhdGVtZW50X2FmdGVyX2xhYmVscyBpZiBhbiBvcGVuIGJyYWNlIGlzIGZvdW5kLCBjYWxsCgljX3BhcnNlcl9jb21wb3VuZF9zdGF0ZW1lbnQgaW5zdGVhZC4KCShjX3BhcnNlcl9lbHNlX2JvZHkpOiBOZXcuCgkoY19wYXJzZXJfaWZfc3RhdGVtZW50KTogU2V0IGluX2lmX2Jsb2NrIHRvIHRydWUgd2hlbiBwYXJzaW5nIHRoZQoJYm9keSBvZiB0aGUgJ2lmJyBzdGF0ZW1lbnQuIFVzZSBjX3BhcnNlcl9lbHNlX2JvZHkuCgoyMDA3LTExLTI2ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCVBSIGMrKy8zNDA4MQoJKiBjLWRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IFBhc3MgJ2ZhbHNlJyBmb3IgdGhlIG5ldwoJYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uIHBhcmFtZXRlci4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYnVpbGRfc3RhdGljX2NkdG9yKTogTGlrZXdpc2UuCgkqIHRyZWUtcGFybG9vcHMuYyAoY3JlYXRlX2xvb3BfZm4pOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAocHVzaF9mdW5jdGlvbl9jb250ZXh0X3RvLCBwdXNoX3N0cnVjdF9mdW5jdGlvbiwKCWluaXRfZnVuY3Rpb25fc3RhcnQpOiBMaWtld2lzZS4KCShhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24pOiBBZGQgYm9vbGVhbiBwYXJhbWV0ZXIuCgkqIHRyZWUuaCAoYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uKTogQWRkIGJvb2xlYW4gcGFyYW1ldGVyLgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBNb3ZlIHJldHVybnNfc3RydWN0IGFuZAoJcmV0dXJuc19wY2Nfc3RydWN0IHRvIHRoZSBlbmQgb2YgdGhlIHN0cnVjdHVyZSBkZWZpbml0b24uCgoyMDA3LTExLTI2ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zNDIxNQoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0cnVuY2Rmc2YyKTogU2VsZWN0IFNMT1RfVEVNUCBzdGFjayBzbG90IGlmCgl2aXJ0dWFsIHJlZ2lzdGVycyBhcmUgYWxyZWFkeSBpbnN0YW50aWF0ZWQuCgkodHJ1bmN4Zjxtb2RlPjIpOiBEaXR0by4KCShmbG9hdHNpPG1vZGU+Mik6IERpdHRvLgoJKGZsb2F0ZGlzZjIpOiBEaXR0by4KCShmbG9hdGRpZGYyKTogRGl0dG8uCgoyMDA3LTExLTI2ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJUFIgdGFyZ2V0LzM0MTc0CgkqIGNvbmZpZy9mcjMwL2ZyMzAuYyAoZnIzMF9tb3ZlX2RvdWJsZSk6IFNhbml0aXplIG1lbS0+cmVnIGNhc2UuIENvcHkKCXRoZSBhZGRyZXNzIGJlZm9yZSBpdCBpcyBjbG9iYmVyZWQuCgoyMDA3LTExLTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZDogKGNhbGxfaW50ZXJuYWwpOiBSZW1vdmUgbW9kZSBvbgoJb3BlcmFuZCAwIGluIG9yZGVyIHRvIG1hdGNoIFVOUFNFQydlZCBjYWxscyBnZW5lcmF0ZWQgaW4gUElDIG1vZGUuCgkoY2FsbF92YWx1ZV9pbnRlcm5hbCk6IFJlbW92ZSBtb2RlIG9uIG9wZXJhbmRzIDAgYW5kIDEgaW4gb3JkZXIgdG8KCW1hdGNoIFVOUFNFQydlZCBjYWxscyBnZW5lcmF0ZWQgaW4gUElDIG1vZGUuCgkoR09UYWRkcjJwaWNyZWcpOiBVc2UgY29weV9ydHggdG8gcHJldmVudCBzaGFyaW5nIGFuIHJ0eCBiZXR3ZWVuCgl0d28gaW5zbnMuCgoyMDA3LTExLTI2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zNDIzMwoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9wb3cpOiBVc2UgZXhwYW5kX2V4cHIgdG8gZXhwYW5kCgl0aGUgcmVzdWx0IG9mIGJ1aWxkX2NhbGxfZXhwci4KCjIwMDctMTEtMjYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmIuZ2NjQGdtYWlsLmNvbT4gCgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPiAKCglQUiBtaWRkbGUtZW5kLzM0MDg1CgkqIGJiLXJlb3JkZXIuYyAoaW5zZXJ0X3NlY3Rpb25fYm91bmRhcnlfbm90ZSk6IENsZWFyCglCTE9DS19GT1JfSU5TTiBpbiBOT1RFX0lOU05fU1dJVENIX1RFWFRfU0VDVElPTlMuCgoyMDA3LTExLTI2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9lbGZvYWJpLmggKERSSVZFUl9TRUxGX1NQRUNTKTogQWRkIG1pc3NpbmcgY29tbWEuCgoyMDA3LTExLTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMmFzbS5jIChzcGxheV90cmVlX2NvbXBhcmVfc3RyaW5ncyk6IE5ldyBmdW5jdGlvbi4KCShkdzJfZm9yY2VfY29uc3RfbWVtKTogVXNlIGl0LgoKMjAwNy0xMS0yNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB0cmVlLmMgKHR5cGVfaGFzaF9hZGQpOiBEb24ndCB2aW9sYXRlIHN0cmljdCBhbGlhc2luZyBydWxlcy4KCjIwMDctMTEtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGMvMjc4OTgKCSogYy10eXBlY2suYyAodGFnZ2VkX3R5cGVzX3R1X2NvbXBhdGlibGVfcCk6IEVuYWJsZSBleGFjdAoJbWF0Y2hlcyBiZXR3ZWVuIGFub255bW91cyB1bmlvbiBmaWVsZHMuCgoyMDA3LTExLTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4sIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxpdmUuYyAocmVtb3ZlX3VudXNlZF9zY29wZV9ibG9ja19wKTogRHJvcAoJZGVjbGFyYXRpb25zIGFuZCBibG9ja3Mgb25seSBhZnRlciBpbmxpbmluZy4gIENoZWNrIHRoYXQKCW5vbi1lbXB0eSBibG9ja3MgYXJlIG5vdCBkcm9wcGVkLgoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBDaGVjayB0aGF0IGZ1bmN0aW9ucyBhcmUKCW5vdCBpbmxpbmVkIHRvbyBsYXRlLgoKMjAwNy0xMS0yNiAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiB1bndpbmQtZHcyLWZkZS5jOiBGaXggY29tbWVudCB0eXBvLgoJKiB1bndpbmQtZ2VuZXJpYy5oOiBMaWtld2lzZSwgZml4IGNvbW1lbnQgdHlwb3MuCgkKMjAwNy0xMS0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogdHJlZS1zcmEuYyAoc2NhbGFyaXplX3VzZSk6IEFkanVzdCB0aGUgdnBvcyBhcmd1bWVudCB0bwoJc3JhX2V4cGxvZGVfYml0ZmllbGRfYXNzaWdubWVudCBpbiBjYXNlcyB3aGVyZSB0aGUgdHlwZSBpcwoJd2lkZXIgdGhhbiB0aGUgYml0ZmllbGQuCgoyMDA3LTExLTI1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2Jsb2NrKTogTW92ZSBsb2N1cyBtZW1iZXIgbmV4dCB0byBmbGFncy4KCSogYy1kZWNsLmMgKFNDT1BFX0xJU1RfQVBQRU5EKTogVXNlIEJMT0NLX0NIQUlOLgoJKFNDT1BFX0xJU1RfQ09OQ0FUKTogTGlrZXdpc2UuCgkocG9wX3Njb3BlKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGluc3RhbnRpYXRlX2RlY2xzXzEpOiBMaWtld2lzZS4KCShzZXRqbXBfdmFyc193YXJuaW5nKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKHNldF91c2VkX2RlY2xzKTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKGFkZF9sZXhpY2FsX2Jsb2NrKTogTGlrZXdpc2UuCgoyMDA3LTExLTI0ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHJ0bGFuYWwuYyAobGFiZWxfaXNfanVtcF90YXJnZXRfcCk6IFJldHVybiB0cnVlIGZvciBhIG1hdGNoaW5nCglSRUdfTEFCRUxfVEFSR0VULgoJKiByZW9yZy5jIChmaWxsX3Nsb3RzX2Zyb21fdGhyZWFkKTogQ29ycmVjdCBsYXN0IGNoYW5nZSB0byB1c2UKCU5VTExfUlRYLCBub3QgTlVMTC4gIE91dHNpZGUgb2YgUkVHX05PVEVTIGxvb3AsIGluY3JlYXNlIGFuZAoJZGVjcmVhc2UgTEFCRUxfTlVTRVMgZm9yIEpVTVBfTEFCRUwgKHRyaWFsKSwgbm90IFhFWFAgKG5vdGUsIDApLgoJKiBqdW1wLmMgKG1hcmtfanVtcF9sYWJlbF8xKTogQWRkIGNvbW1lbnQgZm9yIGxhc3QgY2hhbmdlCglyZWdhcmRpbmcgSlVNUF9MQUJFTCBzZXR0aW5nLgoJKiBnY3NlLmMgKGFkZF9sYWJlbF9ub3Rlcyk6IFJlbW92ZSBjb25kaXRpb25hbCB0aGF0IHRoZSBsYWJlbCBpcwoJbWVudGlvbmVkIGluIGluc24gYmVmb3JlIGFkZGluZyByZWdub3RlLgoJKiBzY2hlZC1yZ24uYyAoaXNfY2ZnX25vbnJlZ3VsYXIpOiBEb24ndCByZXR1cm4gMSBmb3IgYQoJc2luZ2xlX3NldCBpbnNuIG9ubHkgZmVlZGluZyBhIGxhYmVsIHRvIGEganVtcCB0aHJvdWdoIGEKCXJlZ2lzdGVyIHRoYXQgZGllcyB0aGVyZS4KCjIwMDctMTEtMjMgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgkgICAgUmljaGFyZCBHdWVudGhlciA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zNDE5NwoJKiB0cmVlLXZycC5jIChjaGVja19hcnJheV9yZWYpOiBNb3ZlIGNoZWNrIGZvciB2YWxpZCBsb2NhdGlvbi4uCgkoY2hlY2tfYXJyYXlfYm91bmRzKSBoZXJlLiBVc2UgRVhQUl9IQVNfTE9DQVRJT04oKS4KCjIwMDctMTEtMjMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEpIDxhdXRvaW5jZGVjIGNhc2VzPjoKCUNhbGwgUkVHX09LX0ZPUl9DT05URVhUIHdpdGggdGhlIGF1dG9pbmNkZWMgY29kZSwgbm90IG91dGVyX2NvZGUuCgoyMDA3LTExLTIzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgkgICAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzM0MTc2CgkqIGFsbG9jLXBvb2wuaCAoZW1wdHlfYWxsb2NfcG9vbCk6IERlY2xhcmUuCgkqIGFsbG9jLXBvb2wuYyAoZW1wdHlfYWxsb2NfcG9vbCk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1zc2Etc2Njdm4uYyAodm5fcmVmZXJlbmNlX2xvb2t1cCk6IEFsc28gbG9va3VwIGZyb20gdGhlCgl2YWxpZCB0YWJsZSBpZiBhIGxvb2t1cCBmcm9tIHRoZSBvcHRpbWlzdGljIHRhYmxlIGZhaWxlZC4KCSh2bl91bmFyeV9vcF9sb29rdXApOiBMaWtld2lzZS4KCSh2bl9iaW5hcnlfb3BfbG9va3VwKTogTGlrZXdpc2UuCgkodm5fcGhpX2xvb2t1cCk6IExpa2V3aXNlLgoJKHByb2Nlc3Nfc2NjKTogQ2xlYXIgb3B0aW1pc3RpYyB0YWJsZXMgYmVmb3JlIGV2ZXJ5IGl0ZXJhdGlvbi4KCjIwMDctMTEtMjMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWNvcHkuYyAobWF5X3Byb3BhZ2F0ZV9jb3B5KTogUmVtb3ZlIHJlZHVuZGFudCBjaGVja3MuCgkobWVyZ2VfYWxpYXNfaW5mbyk6IERvIHZlcmlmaWNhdGlvbiBvbmx5IGlmIGNoZWNraW5nIGlzCgllbmFibGVkLiAgTWVyZ2UgZmxvdy1zZW5zaXRpdmUgYWxpYXMgaW5mb3JtYXRpb24gaW4gc2ltcGxlIGNhc2VzLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfYWRkcl9kZXJlZmVyZW5jZV9vcGVyYW5kcyk6IEFsc28KCWNvbXBsYWluIGFib3V0IG1pc3NpbmcgTk1Ucy4KCjIwMDctMTEtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zNDE5OAoJKiBjLWNvbW1vbi5jIChjb252ZXJzaW9uX3dhcm5pbmcpOiBGb3IgSU5URUdFUl9UWVBFIHRvCglJTlRFR0VSX1RZUEUgY29udmVyc2lvbnMgY2FsbCBnZXRfbmFycm93ZXIgb24gZXhwciB0byBhdm9pZAoJc3B1cmlvdXMgd2FybmluZ3MgZnJvbSBiaW5vcCBzaG9ydGVuaW5nIG9yIHdoZW4gdGhlIGltcGxpY2l0Cgljb252ZXJzaW9uIGNhbid0IGNoYW5nZSB0aGUgdmFsdWUuCgoyMDA3LTExLTIyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzE0MDUwCgkqIGMtZGVjbC5jIChzZXRfYXJyYXlfZGVjbGFyYXRvcl9pbm5lcik6IERvbid0IGdpdmUgZXJyb3IgZm9yCglzdGF0aWMgb3IgdHlwZSBxdWFsaWZpZXJzIGluIGFic3RyYWN0IGRlY2xhcmF0b3IuICBSZW1vdmUKCWFic3RyYWN0X3AgcGFyYW1ldGVyLgoJKiBjLXRyZWUuaCAoc2V0X2FycmF5X2RlY2xhcmF0b3JfaW5uZXIpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9kaXJlY3RfZGVjbGFyYXRvcl9pbm5lcik6IFVwZGF0ZSBjYWxsIHRvCglzZXRfYXJyYXlfZGVjbGFyYXRvcl9pbm5lci4KCSogZG9jL3N0YW5kYXJkcy50ZXhpOiBVcGRhdGUgZm9yIEM5OSBUQzMuCgoyMDA3LTExLTIyICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWcvbW1peC9tbWl4LmMgKG1taXhfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZSBkdXBsaWNhdGUKCWxpbmUgaW4gbXkgZWRpdCBvZiB0aGUgbGFzdCBjaGFuZ2UuCgoyMDA3LTExLTIyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMzM5NDcKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2luaXRfdGxzX2J1aWx0aW5zKTogU2V0IFRSRUVfTk9USFJPVwoJYW5kIFRSRUVfUkVBRE9OTFkgb24gdGhlIGZuIGRlY2wgcmF0aGVyIHRoYW4gcGFzc2luZyBhIGNoYWluCglvZiBhdHRyaWJ1dGVzLgoKMjAwNy0xMS0yMiAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2gubWQgKGRpdnNpX2ludl9tMyk6IEhhbmRsZSB6ZXJvIGRpdmlkZW5kIHNwZWNpYWxseS4KCjIwMDctMTEtMjIgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQ2hhbmdlIGNoZWNraW5nCglvZiBpeDg2X2FyY2ggYW5kIGl4ODZfdHVuZSBpbnRvIGEgc3dpdGNoIHN0YXRlbWVudC4KCShlbnVtIHByb2Nlc3Nvcl90eXBlKTogRGVmYXVsdCBQUk9DRVNTT1JfSTM4NiB0byAwLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZGVjb21wb3NlX2FkZHJlc3MpOiBVc2UgVEFSR0VUX0s2IGluc3RlYWQKCW9mICJpeDg2X3R1bmUgPT0gUFJPQ0VTU09SX0s2Ii4KCShpYTMyX211bHRpcGFzc19kZmFfbG9va2FoZWFkKTogQ2hhbmdlIGNoZWNraW5nIG9mIGl4ODZfdHVuZSBpbnRvCglhIHN3aXRjaCBzdGF0ZW1lbnQuCgoyMDA3LTExLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW1peC9tbWl4LmMgKG1taXhfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFVzZSBhbGxvY2EgdG8KCWF2b2lkIHdyaXRpbmcgaW50byBzdHJpbmcgYWxsb2NhdGVkIGJ5IGdnY19hbGxvY19zdHJpbmcuCgoyMDA3LTExLTIxICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCglQUiB0YXJnZXQvMzQxNTUKCSogY29uZmlnL3NoL3NoLm1kIChiaW5hcnlfc2Zfb3ApOiBSZW1vdmUuCgkoYmluYXJ5X3NmX29wMCwgYmluYXJ5X3NmX29wMSk6IE5ldyBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9leHBhbmRfYmlub3BfdjJzZik6IFVzZSBnZW5fYmluYXJ5X3NmX29wMAoJYW5kIGdlbl9iaW5hcnlfc2Zfb3AxLgoKMjAwNy0xMS0yMSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiByZWdjbGFzcy5jIChpbml0X3JlZ19hdXRvaW5jKTogRml4IHR5cG8gcHJldmVudGluZyB0ZXN0IG9mCglzZWNvbmRhcnkgb3V0cHV0IHJlbG9hZCB3aGVuIHNldHRpbmcgZm9yYmlkZGVuX2luY19kZWNfY2xhc3MuCgoyMDA3LTExLTIxICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQxNDgKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoY3JlYXRlX3ZhcmlhYmxlX2luZm9fZm9yKTogRG8gbm90IHVzZQoJZmllbGQtc2Vuc2l0aXZlIFBUQSBmb3Igc2luZ2xlLWVsZW1lbnQgc3RydWN0dXJlcy4KCSogdHJlZS1zc2EtYWxpYXMuYyAoY3JlYXRlX292ZXJsYXBfdmFyaWFibGVzX2Zvcik6IERvIG5vdCBjcmVhdGUKCVNGVHMgZm9yIHNpbmdsZS1lbGVtZW50IHN0cnVjdHVyZXMuCgoyMDA3LTExLTIwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zNDE1NAoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9zd2l0Y2hfZXhwcik6IFVzZSB0cmVlX2ludF9jc3RfbHQgaW5zdGVhZAoJb2YgdGhlIHNpZ25lZCBJTlRfQ1NUX0xULgoJKiBzdG10LmMgKGV4cGFuZF9jYXNlKTogTGlrZXdpc2UuCgkoZXN0aW1hdGVfY2FzZV9jb3N0cyk6IExpa2V3aXNlLgoKMjAwNy0xMS0yMCAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogcmVhZC1ydGwuYyAoZmF0YWxfZXhwZWN0ZWRfY2hhcik6IFByaW50IEVPRiBhcyB0ZXh0IHJhdGhlciB0aGF0CglpdHMgYmluYXJ5IHJlcHJlc2VudGF0aW9uLgoKMjAwNy0xMS0yMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYWRkX3ZpcnR1YWxfb3BlcmFuZCk6IENvbnNpc3RlbnRseSBwcnVuZQoJYWNjZXNzZXMuCgoyMDA3LTExLTIwICBUaGllbW8gU2V1ZmVyICA8dGhzQG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2ZpbGVfc3RhcnQpOiBBZGQgc3VwcG9ydCBmb3IKCWZsYWdnaW5nIDMyLWJpdCBjb2RlIHdpdGggLW1mcDY0IGZsb2F0aW5nLXBvaW50LgoKMjAwNy0xMS0yMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYy8zNDE0NgoJKiBjLWdpbXBsaWZ5LmMgKG9wdGltaXplX2NvbXBvdW5kX2xpdGVyYWxzX2luX2N0b3IpOiBOZXcgZnVuY3Rpb24uCgkoY19naW1wbGlmeV9leHByKTogVXNlIGl0LgoKMjAwNy0xMS0yMCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjb25maWcvc3B1L3NwdV9tZmNpby5oOiBGaXggdHlwby4KCjIwMDctMTEtMjAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdW53aW5kLmluYzogQ29tbWVudCB0aGF0IHVud2luZC1zamxqLmMgaW5jbHVkZXMgdGhpcyBmaWxlLgoKMjAwNy0xMS0yMCAgVWxyaWNoIFdlaWdhbmQgIDxVbHJpY2guV2VpZ2FuZEBkZS5pYm0uY29tPgoJICAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnL3NwdS9tZmNfdGFnX3JlbGVhc2UuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9zcHUvbWZjX211bHRpX3RhZ19yZWxlYXNlLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc3B1L21mY19tdWx0aV90YWdfcmVzZXJ2ZS5jOiBMaWtld2lzZS4KCSogY29uZmlnL3NwdS9tZmNfdGFnX3JlbGVhc2UuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcHUvbWZjX3RhZ19yZXNlcnZlLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc3B1L21mY190YWdfdGFibGUuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcHUvdC1zcHUtZWxmIChMSUIyRlVOQ1NfU1RBVElDX0VYVFJBKTogQ29tcGlsZSB0aGVtLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IERlZmluZSBfX0lOX0xJQkdDQzIuCgkqIGNvbmZpZy9zcHUvc3B1X21mY2lvLmg6IEF2b2lkIDxzdGRpbnQuaD4uCgkodWludDY0X3QpOiBUeXBlZGVmIGlmIF9fSU5fTElCR0NDMiBpcyBkZWZpbmVkLgoJKE1GQ19UQUdfSU5WQUxJRCwgTUZDX1RBR19WQUxJRCk6IE5ldyBtYWNyb3MuCgkobWZjX3RhZ19yZXNlcnZlLCBtZmNfdGFnX3JlbGVhc2UsIG1mY19tdWx0aV90YWdfcmVzZXJ2ZSwKCW1mY19tdWx0aV90YWdfcmVsZWFzZSk6IExpa2V3aXNlLgoJKF9fbWZjX3RhZ19yZXNlcnZlLCBfX21mY190YWdfcmVsZWFzZSwgX19tZmNfbXVsdGlfdGFnX3Jlc2VydmUsCglfX21mY19tdWx0aV90YWdfcmVsZWFzZSk6IERlY2xhcmUuCgoyMDA3LTExLTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy8yODgzNCwgZGVidWcvMjk0MzYsIGMvMzIzMjYKCSogdHJlZS5jIChidWlsZF90eXBlX2F0dHJpYnV0ZV9xdWFsX3ZhcmlhbnQpOiBSZWZ1c2UgdG8gbWFrZQoJYSBkaXN0aW5jdCBjb3B5IG9mIGEgc3RydWN0L2VudW0gdHlwZS4gIFVzZSBidWlsZF9kaXN0aW5jdF90eXBlX2NvcHkuCgkqIGRvYy9leHRlbmQudGV4aSAoVHlwZSBBdHRyaWJ1dGVzKTogRG9uJ3QgZW5jb3VyYWdlIHBlb3BsZSB0byBhZGQKCWF0dHJpYnV0ZXMgdG8gc3RydWN0L2VudW0gdHlwZXMgaW4gYSB0eXBlZGVmLiAgRml4Cgl0cmFuc3BhcmVudF91bmlvbiBleGFtcGxlLgoKCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfdHlwZV8xKTogUmVtb3ZlIGNvZGUgdGhhdCdzIHJlZHVuZGFudCB3aXRoCglyZW1hcF90eXBlLgoJKGJ1aWxkX2R1cGxpY2F0ZV90eXBlKTogU2V0IGlkLmNvcHlfZGVjbC4KCSogYy1jb21tb24uYyAoaGFuZGxlX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZSk6IFNpbXBsaWZ5IGxvZ2ljLgoKMjAwNy0xMS0xOSAgUGV0ZXIgQmVyZ25lciAgPGJlcmduZXJAdm5ldC5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoaW52YWxpZF9lNTAwX3N1YnJlZywKCXJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AsIGxlZ2l0aW1hdGVfbG9fc3VtX2FkZHJlc3NfcCwKCXJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MsIHJzNjAwMF9sZWdpdGltaXplX3JlbG9hZF9hZGRyZXNzLAoJcnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVzcywgZnVuY3Rpb25fYXJnX2FkdmFuY2UsCglzcGVfYnVpbGRfcmVnaXN0ZXJfcGFyYWxsZWwsIHJzNjAwMF9zcGVfZnVuY3Rpb25fYXJnLAoJcnM2MDAwX3NwbGl0X211bHRpcmVnX21vdmUsIHNwZV9mdW5jX2hhc182NGJpdF9yZWdzX3AsCgllbWl0X2ZyYW1lX3NhdmUsIGdlbl9mcmFtZV9tZW1fb2Zmc2V0LCByczYwMDBfZnVuY3Rpb25fdmFsdWUsCglyczYwMDBfbGliY2FsbF92YWx1ZSwgcnM2MDAwX2R3YXJmX3JlZ2lzdGVyX3NwYW4pOiBIYW5kbGUgRERtb2RlIGFuZAoJVERtb2RlIHNpbWlsYXJseSB0byBERm1vZGUgYW5kIFRGbW9kZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTE9DQUxfQUxJR05NRU5ULCBNRU1CRVJfVFlQRV9GT1JDRVNfQkxLLAoJREFUQV9BTElHTk1FTlQsIENMQVNTX01BWF9OUkVHUywgQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogTGlrZXdpc2UuCgoyMDA3LTExLTE5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobGFuZ19hZGp1c3RfcmxpKTogRGVsZXRlLgoJKHNldF9sYW5nX2FkanVzdF9ybGkpOiBMaWtld2lzZS4KCShsYXlvdXRfdHlwZSk6IERvIG5vdCBjYWxsIGxhbmdfYWRqdXN0X3JsaSBob29rLgoJKiB0cmVlLmggKHNldF9sYW5nX2FkanVzdF9ybGkpOiBEZWxldGUuCgoyMDA3LTExLTE5ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoJCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAobXVzdF9zYXZlX3ApOiBOZXcgZnVuY3Rpb24sIG1vc3RseSBicm9rZW4gb3V0IG9mCgluX2RyZWdzX3RvX3NhdmUgYW5kIG5fcHJlZ3NfdG9fc2F2ZS4KCShuX3ByZWdzX3RvX3NhdmUsIG5fZHJlZ3NfdG9fc2F2ZSk6IFVzZSBpdC4gIE5ldyBhcmd1bWVudCBDT05TRUNVVElWRTsKCWFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoZXhwYW5kX3Byb2xvZ3VlX3JlZ19zYXZlLCBleHBhbmRfZXBpbG9ndWVfcmVnX3Jlc3RvcmUpOiBFbmhhbmNlIHRvIGJlCglhYmxlIHRvIHNhdmUgc2luZ2xlIEQvUCByZWdpc3RlcnMgdGhhdCBhcmVuJ3Qgc2F2ZWQgYnkgdGhlIHB1c2gvcG9wCgltdWx0aXBsZSBpbnNucy4KCjIwMDctMTEtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zNDA5OQoJKiB0cmVlLXNzYS1jY3AuYyAobGlrZWx5X3ZhbHVlKTogRXhjbHVkZSBhbGwgYnV0IFBMVVNfRVhQUiwKCU1JTlVTX0VYUFIgYW5kIFBPSU5URVJfUExVU19FWFBSIGZyb20gaGFuZGxpbmcgYXMgVU5ERUZJTkVECglpZiBvbmx5IG9uZSBvcGVyYW5kIGlzIHVuZGVmaW5lZC4KCjIwMDctMTEtMTkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQwMzYKCSogb3B0cy5jIChzZXRfZmFzdF9tYXRoX2ZsYWdzKTogRG8gbm90IHNldCBmbGFncyBpbiBjb21tb24KCXdpdGggc2V0X3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnNfZmxhZ3MsIGludm9rZSBpdCBkaXJlY3RseS4KCShzZXRfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9uc19mbGFncyk6IFVuc2V0IGZsYWdfdHJhcHBpbmdfbWF0aAoJYW5kIGZsYWdfc2lnbmVkX3plcm9zLgoJKiB0b3BsZXYuYyAocHJvY2Vzc19vcHRpb25zKTogRm9yY2UgZmxhZ19hc3NvY2lhdGl2ZV9tYXRoIHRvIDAgYW5kCgl3YXJuLCBpZiBpdCBpcyBzZXQgYW5kIGVpdGhlciBmbGFnX3RyYXBwaW5nX21hdGggb3IgZmxhZ19zaWduZWRfemVyb3MKCWlzIHNldCB0b28uCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW1pemUgT3B0aW9ucyk6IERvY3VtZW50IHRoZSBuZXcgYmVoYXZpb3IKCW9mIC1mdW5zYWZlLW1hdGgtb3B0aW1pemF0aW9ucywgdGhhdCAtZmFzc29jaWF0aXZlLW1hdGggcmVxdWlyZXMKCWJvdGggLWZuby1zaWduZWQtemVyb3MgYW5kIC1mbm8tdHJhcHBpbmctbWF0aCBhbmQgbWFrZSBpdCBjbGVhcgoJdGhhdCAtZm5vLXRyYXBwaW5nLW1hdGggcmVxdWlyZXMgLWZuby1zaWduYWxpbmctbmFucy4gIFJlZmFjdG9yCglkb2N1bWVudGF0aW9uIG9mIC1mZmFzdC1tYXRoLgoKMjAwNy0xMS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zNDEzMgoJKiBnY3NlLmMgKHRyeV9yZXBsYWNlX3JlZyk6IEF2b2lkIHJ0eCBzaGFyaW5nIGJldHdlZW4gUkVHX0VRVUFMIG5vdGUKCWFuZCBpbnNuLgoKCVBSIG1pZGRsZS1lbmQvMzMzMzUKCSogb3B0YWJzLmggKG9wdGFiX3RhYmxlKTogQ2hhbmdlIHR5cGUgdG8gc3RydWN0IG9wdGFiIGZyb20gb3B0YWIuCgkoY29udmVydF9vcHRhYl90YWJsZSk6IFNpbWlsYXJseS4KCUFkanVzdCBhbGwgX29wdGFiIG1hY3JvcyB0byBleHBhbmQgdG8gYWRkcmVzc2VzIG9mIG9wdGFiX3RhYmxlCglyZXNwLiBjb252ZXJ0X29wdGFiX3RhYmxlIGVsZW1lbnRzIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb2YgdGhlCgllbGVtZW50cy4KCSogb3B0YWJzLmMgKG9wdGFiX3RhYmxlKTogQ2hhbmdlIHR5cHlwZSB0byBzdHJ1Y3Qgb3B0YWIgZnJvbSBvcHRhYi4KCUlmIGNvbXBpbGVkIGJ5IHJlY2VudCBHQ0MsIGluaXRpYWxpemUgYWxsIHRoZSBpbnNuX2NvZGUgZmllbGRzIGluCgl0aGUgYXJyYXkgdXNpbmcgZGVzaWduYXRlZCByYW5nZSBpbml0aWFsaXplcnMuCgkoY29udmVydF9vcHRhYl90YWJsZSk6IFNpbWlsYXJseS4KCShjb252ZXJ0X29wdGFiX2xpYmZ1bmMsIG9wdGFiX2xpYmZ1bmMsIHNldF9vcHRhYl9saWJmdW5jLAoJc2V0X2NvbnZfbGliZnVuYyk6IEludG8gbGliZnVuY19lbnRyeSdzIG9wdGFiIGZpZWxkIHN0b3JlIGluZGV4IHdpdGhpbgoJb3B0YWJfdGFibGUgcmVzcC4gY29udmVydF9vcHRhYl90YWJsZSBhcnJheSBpbnN0ZWFkIG9mIGRpZmZlcmVuY2UKCWJldHdlZW4gdHdvIHNlcGFyYXRlbHkgbWFsbG9jZWQgYWRkcmVzc2VzLgoJKG5ld19vcHRhYik6IEFkZCBvcCBhcmd1bWVudCwgZG9uJ3QgcmV0dXJuIGFueXRoaW5nLiAgSW5pdGlhbGl6ZQoJanVzdCB0aGUgaW5zbl9jb2RlIGZpZWxkIGluIGhhbmRsZXJzIGFycmF5IGFuZCBvbmx5IHdoZW4gbmVlZGVkLgoJKGluaXRfb3B0YWIsIGluaXRfb3B0YWJ2KTogQWRkIG9wIGFyZ3VtZW50LCBkb24ndCByZXR1cm4gYW55dGhpbmcuCglBZGp1c3QgbmV3X29wdGFiIGNhbGxlci4KCShuZXdfY29udmVydF9vcHRhYik6IFJlbW92ZWQuCgkoaW5pdF9jb252ZXJ0X29wdGFiKTogQWRkIG9wIGFyZ3VtZW50LCBkb24ndCByZXR1cm4gYW55dGhpbmcsIGRvbid0CgljYWxsIG5ld19jb252ZXJ0X29wdGFiLiAgSWYgbmVlZGVkLCBpbml0aWFsaXplIGluc25fY29kZSBmaWVsZCBpbgoJaGFuZGxlcnMgYXJyYXkuCgkoaW5pdF9vcHRhYnMpOiBBZGp1c3QgaW5pdF9vcHRhYiwgaW5pdF9vcHRhYnYgYW5kIGluaXRfY29udmVydF9vcHRhYgoJY2FsbGVycy4KCShkZWJ1Z19vcHRhYl9saWJmdW5jcyk6IEFkanVzdCB1c2VzIG9mIG9wdGFiX3RhYmxlIGFuZAoJY29udmVydF9vcHRhYl90YWJsZSBhcnJheXMuCgoyMDA3LTExLTE4ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzQxMjcKCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAodHJlZV9zc2FfZm9yd2FyZF9wcm9wYWdhdGVfc2luZ2xlX3VzZV92YXJzKToKCU1ha2UgY29kZSBtYXRjaCB1cCB0aGUgY29tbWVudHMsIHJlcXVpcmUgY29tcGF0aWJpbGl0eSBvZiB0aGUKCXBvaW50ZWQtdG8gdHlwZXMuCgoyMDA3LTExLTE3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zNDEzMAoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2XzEpOiBEbyBub3QgbW92ZSBuZWdhdGl2ZQoJY29uc3RhbnRzIGluc2lkZSBBQlNfRVhQUi4KCjIwMDctMTEtMTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBjb2xsZWN0Mi5jIChkdW1wX2ZpbGUpOiBJZiBhIGRlbWFuZ2xlZCBzeW1ib2wgaXMgZm9sbG93ZWQgYnkgYQoJc3BhY2UsIG1ha2Ugc3VyZSB3ZSBvdXRwdXQgYXQgbGVhc3Qgb25lIHNwYWNlLgoKMjAwNy0xMS0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzQwMzAKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IFVzZSBjb3JyZWN0IHR5cGVzIGZvciBmb2xkaW5nCgkxIDw8IFggJiBZIHRvIFkgPj4gWCAmIDEuCgoyMDA3LTExLTE2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM4NzAKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9tZW1vcnlfdGFnKTogQWRkIGJhc2VfZm9yX2NvbXBvbmVudHMgZmxhZy4KCShzdHJ1Y3QgdHJlZV9zdHJ1Y3RfZmllbGRfdGFnKTogUmVtb3ZlIG5lc3RpbmdfbGV2ZWwgZmllbGQuCgkoU0ZUX05FU1RJTkdfTEVWRUwpOiBSZW1vdmUuCgkoU0ZUX0JBU0VfRk9SX0NPTVBPTkVOVFNfUCk6IEFkZC4KCSogdHJlZS1mbG93LmggKHN0cnVjdCBmaWVsZG9mZik6IFJlbW92ZSBuZXN0aW5nX2xldmVsIGZpZWxkLiAgQWRkCgliYXNlX2Zvcl9jb21wb25lbnRzIGZsYWcuCgkocHVzaF9maWVsZHNfb250b19maWVsZHN0YWNrKTogUmVtb3ZlIG5lc3RpbmdfbGV2ZWwgcGFyYW1ldGVyLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjcmVhdGVfc2Z0KTogTGlrZXdpc2UuICBBZGQgYmFzZV9mb3JfY29tcG9uZW50cwoJcGFyYW1ldGVyLgoJKGNyZWF0ZV9vdmVybGFwX3ZhcmlhYmxlc19mb3IpOiBEZWFsIHdpdGggaXQuCgkqIHRyZWUtZGZhLmMgKGR1bXBfc3VidmFyc19mb3IpOiBMaWtld2lzZS4KCShkdW1wX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHB1c2hfZmllbGRzX29udG9fZmllbGRzdGFjayk6IExpa2V3aXNlLgoJU2V0IGJhc2VfZm9yX2NvbXBvbmVudHMgZm9yIGZpcnN0IGVsZW1lbnRzIG9mIHN1Yi1zdHJ1Y3R1cmVzLgoJKGNyZWF0ZV92YXJpYWJsZV9pbmZvX2Zvcik6IEhhbmRsZSBiYXNlX2Zvcl9jb21wb25lbnRzLgoJKHNldF91aWRzX2luX3B0c2V0KTogQWx3YXlzIHNldCBTRlRfVU5QQVJUSVRJT05BQkxFX1AgZm9yCglwb2ludGVkLXRvIFNGVHMgaWYgU0ZUX0JBU0VfRk9SX0NPTVBPTkVOVFNfUCBpcyBzZXQuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKHJlZl9uZXN0aW5nX2xldmVsKTogUmVtb3ZlLgoJKGFkZF92YXJzX2Zvcl9vZmZzZXQpOiBSZW1vdmUgZnVsbF9yZWYgcGFyYW1ldGVyLCBhbHdheXMgYWRkCgl0aGUgb2Zmc2V0IG9mIHRoZSBwb2ludGVkLXRvIFNGVC4KCShhZGRfdmlydHVhbF9vcGVyYW5kKTogQWRqdXN0IGZvciBjaGFuZ2VkIHNpZ25hdHVyZSBvZgoJYWRkX3ZhcnNfZm9yX29mZnNldC4KCjIwMDctMTEtMTYgIFNhIExpdSAgPHNhbGl1QGRlLmlibS5jb20+CgoJKiBjb25maWcvc3B1L3NwdS5tZCAoZmxvYXR1bnNzaWRmMiwgZmxvYXR1bnNkaWRmMik6IElubGluZWQgCglmbG9hdHVuc3NpZGYyIGFuZCBmbG9hdHVuc2RpZGYyLgoKMjAwNy0xMS0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzM0MTEzCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6CglVc2UgY29ycmVjdCBjb252ZXJzaW9uIGRpcmVjdGlvbiBmb3IgY2hlY2tpbmcgdHlwZSBjb21wYXRpYmlsaXR5LgoKMjAwNy0xMS0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzM0MDk5CgkqIHRyZWUtc3NhLWNjcC5jIChsaWtlbHlfdmFsdWUpOiBVc2UgYSB3aGl0ZWxpc3QgZm9yIG9wZXJhdG9ycwoJdGhhdCBwcm9kdWNlIFVOREVGSU5FRCByZXN1bHQgaWYgYXQgbGVhc3Qgb25lIG9mIGl0cyBvcGVyYW5kcwoJaXMgVU5ERUZJTkVELiAgQnkgZGVmYXVsdCB0aGUgcmVzdWx0IGlzIG9ubHkgVU5ERUZJTkVEIGlmIGFsbAoJb3BlcmFuZHMgYXJlIFVOREVGSU5FRC4KCjIwMDctMTEtMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGRyaXZlci8zMDQ2MAoJKiBnY2MuYyAoaW5pdF9zcGVjKTogRG9uJ3QgaW5pdGlhbGl6ZSBhc21fZGVidWcgaGVyZS4uLgoJKG1haW4pOiAuLi4gYnV0IGhlcmUuCgoyMDA3LTExLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChpcGFfcHRhX2V4ZWN1dGUpOiBSZW5hbWUgJ2NmdW4nIHRvICdmdW5jJy4gCgkqIHRyZWUtcGFybG9vcHMuYyAoY3JlYXRlX2xvb3BfZm4pOiBVc2Ugc2V0X2NmdW4uCgkqIGdlbmd0eXBlLmMgKG9wZW5fYmFzZV9maWxlcyk6IEVtaXQgI3VuZGVmIGNmdW4uCgkqIGlwYS1zdHJ1Y3QtcmVvcmcuYyAoZG9fcmVvcmdfMSk6IFVzZSBzZXRfY2Z1bi4KCSogZnVuY3Rpb24uaCAoY2Z1bik6IE5ldyBkZWZpbmUuCgkqIGZ1bmN0aW9uLmM6IFVuZGVmaW5lIGNmdW4uCgoyMDA3LTExLTA3ICBFcmljIEIuIFdlZGRpbmd0b24gIDxld2VkZGluZ3RvbkBjc28uYXRtZWwuY29tPgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX21jdV90eXBlcyk6IEFkZCBhdHRpbnk4OC4KCSogY29uZmlnL2F2ci9hdnIuaCAoTElOS19TUEVDKTogTGlrZXdpc2UuCgkoQ1JUX0JJTlVUSUxTX1NQRUNTKTogTGlrZXdzaWUuCgkqIGNvbmZpZy9hdnIvdC1hdnIgKE1VTFRJTElCX01BVENIRVMpOiBMaWtld2lzZS4KCjIwMDctMTEtMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjM4NDgKCSogdHJlZS1zc2EtY2NwLmMgKG9wdGltaXplX3N0YWNrX3Jlc3RvcmUpOiBOZXcgZnVuY3Rpb24uCgkoZXhlY3V0ZV9mb2xkX2FsbF9idWlsdGlucyk6IENhbGwgb3B0aW1pemVfc3RhY2tfcmVzdG9yZSBmb3IKCUJVSUxUX0lOX1NUQUNLX1JFU1RPUkUuCgoyMDA3LTExLTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZndwcm9wLmMgKHRyeV9md3Byb3Bfc3Vic3QpOiBTa2lwIHByb2ZpdGFiaWxpdHkgY2hlY2sgZm9yIGZvcndhcmQKCXByb3BhZ2F0aW9uIGludG8gYW4gYWRkcmVzczsgdGhhdCdzIGRvbmUgaW4gc2hvdWxkX3JlcGxhY2VfYWRkcmVzcy4KCQkKMjAwNy0xMS0xNSAgVWxyaWNoIFdlaWdhbmQgIDxVbHJpY2guV2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3NwdS9zcHUtcHJvdG9zLmggKGxlZ2l0aW1hdGVfY29uc3QpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBjb25maWcvc3B1L3NwdS5jIChsZWdpdGltYXRlX2NvbnN0KTogUmVtb3ZlLgoJKGNsYXNzaWZ5X2ltbWVkaWF0ZSk6IElubGluZSBjYWxsIHRvIGxlZ2l0aW1hdGVfY29uc3QuCgkoc3B1X2xlZ2l0aW1hdGVfYWRkcmVzcyk6IExpa2V3aXNlLiAgQWxsb3cgU1lNQk9MX1JFRiArIENPTlNUX0lOVAoJZm9yIGFueSBjb25zdGFudCwgbm90IGp1c3QgLTUxMiAuLiA1MTEuCgoyMDA3LTExLTE1ICBTYSBMaXUgIDxzYWxpdUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3NwdS9zcHUuYyAoc3B1X2VtaXRfYnJhbmNoX29yX3NldCk6IFJlbW92ZSBQUk9DRVNTT1JfQ0VMTAoJY29uZGl0aW9uIGZyb20gSE9OT1JfTkFOUyB0ZXN0LgoJKiBjb25maWcvc3B1L3NwdS5tZCAoY2VxX2RmKTogQWx3YXlzIGdlbmVyYXRlIGNvbXBhcmlzb24gY29kZQoJaW5saW5lLCBpbmNsdWRpbmcgY2hlY2tzIGZvciBOYU5zIGFuZCBpbmZpbml0aWVzLgoJKGNndF9kZik6IExpa2V3aXNlLgoJKGNndF92MmRmKTogTGlrZXdpc2UuCgkoY21wZGYpOiBNYWtlIHRoaXMgZXhwYW5kZXIgdW5jb25kaXRpb25hbC4KCjIwMDctMTEtMTUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNyZWF0ZV9vdmVybGFwX3ZhcmlhYmxlc19mb3IpOiBNYWtlIHN1cmUKCXRvIG9ubHkgY3JlYXRlIFNGVHMgaWYgd2UgYWxzbyBjcmVhdGUgdmFyaWFibGUgaW5mb3MgZm9yIFBUQS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoc2V0X3VpZHNfaW5fcHRzZXQpOiBBZGQgYWxsIG92ZXJsYXBwaW5nIFNGVHMuCgoyMDA3LTExLTE1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChzZXRfdWlkc19pbl9wdHNldCk6IFVzZSB0aGUgcG9pbnRlZC10bwoJdHlwZSBmb3IgVEJBQSBwcnVuaW5nLgoJKGZpbmRfd2hhdF9wX3BvaW50c190byk6IENhbGwgc2V0X3VpZHNfaW5fcHRzZXQgd2l0aCB0aGUgb3JpZ2luYWwKCXBvaW50ZXIsIG5vdCB0aGUgZGVjbCBvZiB0aGUgc29sdXRpb24gd2UgY29sbGFwc2VkIHRvLgoKMjAwNy0xMS0xNCAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LXVud2luZC5oIChtaXBzX2ZhbGxiYWNrX2ZyYW1lX3N0YXRlKTogVXNlIENGQQoJdG8gZmluZCBzaWdjb250ZXh0LgoKMjAwNy0xMS0xNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMzM5MjMKCSogY29uZmlnL2lhNjQvaWE2NC5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBGb3JiaWQgbW9kZSBjaGFuZ2VzCglmb3IgcmVnaXN0ZXJzIGluIEJSX1JFR1MgY2xhc3MuCgoyMDA3LTExLTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzM0MDg4CgkqIHRyZWUtc3NhLmMgKGRlbGV0ZV90cmVlX3NzYSk6IERvbid0IGNhbGwgZmluaV9zc2Ffb3BlcmFuZHMgaWYKCWluaXRfc3NhX29wZXJhbmRzIGhhcyBub3QgYmVlbiBjYWxsZWQgZm9yIGNmdW4uCgoyMDA3LTExLTE0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzM0MDQ2CgkqIGNmZy5jICh1cGRhdGVfYmJfcHJvZmlsZV9mb3JfdGhyZWFkaW5nKTogQXZvaWQgdGhlIGRpdmlzaW9uIGZvciB0aGUKCXNjYWxpbmcgaWYgdGhlIG9sZCBwcm9iYWJpbGl0eSBpcyBncmVhdGVyIHRoYW4gdGhlIG5ldyBiYXNlLgoKMjAwNy0xMS0xNCAgU2ViYXN0aWFuIFBvcCAgPHNlYmFzdGlhbi5wb3BAYW1kLmNvbT4KCgkqIHRyZWUtc3NhLWxvb3AtaXZjYW5vbi5jICh0cnlfdW5yb2xsX2xvb3BfY29tcGxldGVseSk6IFJlbW92ZQoJdW51c2VkIGVkZ2VzIGFmdGVyIGxvb3AgZHVwbGljYXRpb24uCgoyMDA3LTExLTE0ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfQ1BVX0RFRkFVTFRfKik6IFN1YnN0aXR1dGUgd2l0aCAuLi4KCShlbnVtIHRhcmdldF9jcHVfZGVmYXVsdCk6IC4uLiB0aGlzIGVudW0uCgkoVEFSR0VUX0NQVV9ERUZBVUxUX05BTUVTKTogUmVtb3ZlIG1hY3JvLiAgTW92ZSBpbml0aWFsaXplciB0byAuLi4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogLi4uIGhlcmUuCgkqIGNvbmZpZy9pMzg2L2kzODYtaW50ZXJpeC5oIChUQVJHRVRfQ1BVX0RFRkFVTFQpOiBVc2UKCVRBUkdFVF9DUFVfREVGQVVMVF9pNDg2LgoKMjAwNy0xMS0xNCAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogZ2xvYmFsLmMgKHJlc3Rfb2ZfaGFuZGxlX2dsb2JhbF9hbGxvYyk6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjb25maWcvc2gvc2guYyAoc2hfcnR4X2Nvc3RzKTogTGlrZXdpc2UuCgkqIENoYW5nZUxvZzogTGlrZXdpc2UuCgoyMDA3LTExLTEzICBTZWJhc3RpYW4gUG9wICA8c2ViYXN0aWFuLnBvcEBhbWQuY29tPgoKCSogdHJlZS1jaHJlYy5oIChidWlsZF9wb2x5bm9taWFsX2NocmVjKTogUkhTIG9mIGEgY2hyZWMKCXNob3VsZCBub3QgYmUgb2YgcG9pbnRlciB0eXBlLgoKMjAwNy0xMS0xMyAgTWljaGFlbCBNZWlzc25lciAgPG1pY2hhZWwubWVpc3NuZXJAYW1kLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9zc2U1X3ZhbGlkX29wX3ApOiBQdXQgdHlwZSBvbiBzZXBhcmF0ZSBsaW5lLgoKMjAwNy0xMS0xMyAgU3RlcmxpbmcgQXVndXN0aW5lICA8c3RlcmxpbmdAdGVuc2lsaWNhLmNvbT4KCSAgICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoJCgkqIGNvbmZpZy94dGVuc2EvdW53aW5kLWR3Mi14dGVuc2EuYzogTmV3LgoJKiBjb25maWcveHRlbnNhL3Vud2luZC1kdzIteHRlbnNhLmg6IE5ldy4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoTVVTVF9VU0VfU0pMSl9FWENFUFRJT05TKTogUmVtb3ZlLgoJKERXQVJGMl9VTldJTkRfSU5GTyk6IFJlbW92ZS4KCShEV0FSRl9GUkFNRV9SRUdJU1RFUlMpOiBEZWZpbmUuCgkoRUhfUkVUVVJOX0RBVEFfUkVHTk8pOiBEZWZpbmUuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLm1kIChVTlNQRUNWX0VIX1JFVFVSTik6IERlZmluZS4KCShlaF9yZXR1cm4pOiBOZXcuCgkqIGNvbmZpZy94dGVuc2EvdC14dGVuc2EgKExJQjJBRERFSCk6IERlZmluZS4KCQoyMDA3LTExLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRml4IGRlc2NyaXB0aW9uIG9mIC1mc2NoZWQtc3RhbGxlZC1pbnNucz0wLAoJLWZzY2hlZC1zdGFsbGVkLWluc25zLgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzM0MDYzCgkqIHRyZWUtY2hyZWMuYyAoY2hyZWNfZXZhbHVhdGUpOiBQdXQgQ0hSRUNfTEVGVCBiYXNlZCBhcmd1bWVudAoJYXMgZmlyc3QgY2hyZWNfZm9sZF9wbHVzIG9wZXJhbmQgcmF0aGVyIHRoYW4gc2Vjb25kLgoKMjAwNy0xMS0xMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGdvb2dsZS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM4NzAKCSogdHJlZS5oIChzdHJjdXQgdHJlZV9tZW1vcnlfdGFnKTogQWRkIGZpZWxkIHVucGFydGl0aW9uYWJsZS4KCVJlbW92ZSBmaWVsZCBpbl9uZXN0ZWRfc3RydWN0LgoJKHN0cnVjdCB0cmVlX3N0cnVjdF9maWVsZF90YWcpOiBBZGQgZmllbGQgbmVzdGluZ19sZXZlbC4KCShzZnRfaW5fbmVzdGVkX3N0cnVjdCk6IFJlbW92ZS4KCShzZnRfbmVzdGluZ19sZXZlbCk6IERlZmluZS4KCShzZnRfdW5wYXJ0aXRpb25hYmxlX3ApOiBEZWZpbmUuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKG1lbV9zeW1fc2NvcmUpOiBJZiBtcC0+dmFyIGlzIG5vdAoJcGFydGl0aW9uYWJsZSwgcmV0dXJuIGxvbmdfbWF4LgoJKGNvbXB1dGVfbWVtb3J5X3BhcnRpdGlvbnMpOiBEbyBub3QgcGFydGl0aW9uIHNmdHMgbWFya2VkCgl1bnBhcnRpdGlvbmFibGUuCgkoY3JlYXRlX3NmdCk6IEFkZCBhcmd1bWVudCBuZXN0aW5nX2xldmVsLiAgU2V0CglzZnRfbmVzdGluZ19sZXZlbCB3aXRoIGl0LiAgVXBkYXRlIGFsbCB1c2Vycy4KCShjcmVhdGVfb3ZlcmxhcF92YXJpYWJsZXNfZm9yKTogU2hvdyBuZXN0aW5nIGxldmVsLgoJKiB0cmVlLWRmYS5jIChkdW1wX3N1YnZhcnNfZm9yKTogTGlrZXdpc2UuCgkoZHVtcF92YXJpYWJsZSk6IExpa2V3aXNlLiBTaG93IHdoZXRoZXIgdGhlIHNmdCBpcwoJcGFydGl0aW9uYWJsZSBvciBub3QuCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgZmllbGRvZmYpOiBSZW1vdmUgZmllbGQgaW5fbmVzdGVkX3N0cnVjdC4KCUFkZCBmaWVsZCBuZXN0aW5nX2xldmVsLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChzdHJ1Y3QgdmFyaWFibGVfaW5mbyk6IFJlbW92ZQoJZmllbGQgaW5fbmVzdGVkX3N0cnVjdC4KCShwdXNoX2ZpZWxkc19vbnRvX2ZpZWxkc3RhY2spOiBBZGQgYXJndW1lbnQgbmVzdGluZ19sZXZlbC4KCVVwZGF0ZSBhbGwgdXNlcnMuICBVcGRhdGUgZG9jdW1lbnRhdGlvbi4gVXBkYXRlIHBhaXItPm5lc3RpbmdfbGV2ZWwKCXdpdGggbmVzdGluZ19sZXZlbC4gIE1ha2UgcmVjdXJzaXZlIGNhbGxzIHdpdGggbmVzdGluZ19sZXZlbCArIDEuCgkoc2V0X3VpZHNfaW5fcHRzZXQpOiBJZiBhbiBzZnQgaXMgYWRkZWQgdG8gdGhlIHBvaW50cy10byBzZXQsCgltYXJrIGl0IGFzIHVucGFydGl0aW9uYWJsZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAocmVmX25lc3RpbmdfbGV2ZWwpOiBOZXcuCgkoYWRkX3ZhcnNfZm9yX29mZnNldCk6IENhbGwgaXQuICBBZGQgYXJndW1lbnQgZnVsbF9yZWYuIFVwZGF0ZQoJY2FsbGVycy4gIElmIHZhciBpcyBpbnNpZGUgYSBuZXN0ZWQgc3RydWN0dXJlIGFuZCB0aGUgbmVzdGluZyBsZXZlbAoJb2YgZnVsbF9yZWYgaXMgbG93ZXIgdGhhbiB0aGUgbmVzdGluZyBsZXZlbCBvZiB2YXIsCglhZGp1c3Qgb2Zmc2V0IGJ5IHRoZSBvZmZzZXQgb2YgdmFyLgoKMjAwNy0xMS0xMyAgVmljdG9yIEthcGxhbnNreSAgPHZpY3RvcmtAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjU4MgoJKiBNYWtlZmlsZS5pbiAoQ1JUU1RVRkZfQ0ZMQUdTKTogQWRkIC1mbm8tdHJlZS12ZWN0b3JpemUKCjIwMDctMTEtMTIgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKGRsbGltcG9ydCk6IERvY3VtZW50IHRoYXQgcG9pbnRlcnMgdG8gZGxsaW1wb3J0J2QKCWZ1bmN0aW9ucyBjYW4gYmUgdXNlZCBhcyBjb25zdGFudC4KCjIwMDctMTEtMTIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zNDAzNQoJKiBjc2UuYyAoY3NlX2NmZ19hbHRlcmVkKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShjc2VfanVtcHNfYWx0ZXJlZCk6IE1ha2UgYm9vbGVhbi4KCShyZWNvcmRlZF9sYWJlbF9yZWYpOiBMaWtld2lzZS4KCShjc2VfaW5zbik6IEFkanVzdCBmb3IgYWJvdmUgY2hhbmdlcy4KCShjc2VfZXh0ZW5kZWRfYmFzaWNfYmxvY2spOiBMaWtld2lzZS4gIFNldCBjc2VfY2ZnX2FsdGVyZWQKCWlmIGRlYWQgZWRnZXMgaGF2ZSBiZWVuIHB1cmdlZC4KCShjc2VfbWFpbik6IENoYW5nZSByZXR1cm4gdmFsdWUgc3BlY2lmaWNhdGlvbiBhbmQgYWRqdXN0IGNvZGUuCgkocmVzdF9vZl9oYW5kbGVfY3NlKTogQWRqdXN0IGZvciBhYm92ZSBjaGFuZ2UuCgkocmVzdF9vZl9oYW5kbGVfY3NlMik6IExpa2V3aXNlLgoJKiBnY3NlLmMgKHJlc3Rfb2ZfaGFuZGxlX2djc2UpOiBMaWtld2lzZS4KCjIwMDctMTEtMTIgIER3YXJha2FuYXRoIFJhamFnb3BhbCAgPGR3YXJhay5yYWphZ29wYWxAYW1kLmNvbT4KCSAgICBNaWNoYWVsIE1laXNzbmVyICA8bWljaGFlbC5tZWlzc25lckBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc3NlNV9zZXRjYzxtb2RlPik6IFVzZSA8c3NlbW9kZWZzdWZmaXg+IHRvCglnZXQgdGhlIGFwcHJvcHJpYXRlIHN1ZmZpeCBmb3IgdGhlIGNvbXMqIGluc3RydWN0aW9uLgoJKHNzZTVfcGNtb3ZfPG1vZGU+KTogUmVzdHJpY3Qgb3BlcmFuZHMgb2YgcGNtb3YKCWZvciBzY2FsYXIgY2FzZSB0byBiZSBvbmx5IHhtbSByZWdpc3RlcnMgYW5kIG5vdCBtZW1vcnkuCgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHNzZTVfcGNtb3ZfPG1vZGU+KTogQ29ycmVjdCB0aGUgb3BlcmFuZAoJY29uc3RyYWludHMgdG8gZm9sbG93IHRoZSBtbmVtb25pY3MgZm9yIHRoZSBwY21vdiBpbnN0cnVjdGlvbgkKCjIwMDctMTEtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCglQUiB0YXJnZXQvMzQwNDIKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3JldHVybl9mcHJfc2luZ2xlKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfZnVuY3Rpb25fdmFsdWUpOiBVc2UgaXQgd2hlbiByZXR1cm5pbmcgc2luZ2xlLWZpZWxkCglhZ2dyZWdhdGVzIGluIEZQUnMuCgkobWlwc19leHBhbmRfY2FsbCk6IEhhbmRsZSB0aGUgUEFSQUxMRUxzIGNyZWF0ZWQgYnkKCW1pcHNfcmV0dXJuX2Zwcl9zaW5nbGUuCgoyMDA3LTExLTEyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zNDA3MAoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KTogSWYgdGVzdGluZyBmb3Igbm9uLW5lZ2F0aXZlCglvcGVyYW5kcyB3aXRoIHRyZWVfZXhwcl9ub25uZWdhdGl2ZV93YXJudl9wIG1ha2Ugc3VyZSB0bwoJdXNlIG9wMCB3aGljaCBoYXMgYWxsIChzaWduKSBjb252ZXJzaW9ucyByZXRhaW5lZC4KCjIwMDctMTEtMTIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzM0MDI3CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpOiBGb2xkIG4gLSAobiAvIG0pICogbSB0byBuICUgbS4KCShmb2xkX2JpbmFyeSk6IEZvbGQgdW5zaW5nZWQgRkxPT1JfRElWX0VYUFIgdG8gVFJVTkNfRElWX0VYUFIuCgoyMDA3LTExLTEyICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM5NTMKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0b3JpemFibGVfb3BlcmF0aW9uKTogSW4gY2FzZSBvZiBTTFAsCglhbGxvY2F0ZSB2ZWNfb3BybmRzMSBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjcmVhdGVkIHZlY3RvcgoJc3RhdGVtZW50cy4gSW4gY2FzZSBvZiBzaGlmdCB3aXRoIHNjYWxhciBhcmd1bWVudCwgc3RvcmUgc2NhbGFyCglvcGVyYW5kIGZvciBldmVyeSB2ZWN0b3Igc3RhdGVtZW50IHRvIGJlIGNyZWF0ZWQgZm9yIHRoZSBTTFAgbm9kZS4KCUZpeCBhIGNvbW1lbnQuCgoyMDA3LTExLTEwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJKiBnY3NlLmMgKENVSURfSU5TTik6IFJlbW92ZS4KCShjdWlkX2luc24pOiBEaXR0by4KCShhbGxvY19nY3NlX21lbSk6IERvbid0IGFsbG9jYXRlIGN1aWRfaW5zbi4KCShmcmVlX2djc2VfbWVtKTogRG9uJ3QgZnJlZSBjdWlkX2luc24uCgoyMDA3LTExLTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBmb3J0cmFuLzM0MDIwCgkqIGdpbXBsaWZ5LmMgKGdvYV9saHNfZXhwcl9wKTogSW5zaWRlIElORElSRUNUX1JFRiBoYW5kbGUgdW5zaGFyZWQKCW5vcHMuCgoJUFIgbWlkZGxlLWVuZC8zNDAxOAoJKiB0cmVlLWlubGluZS5oIChjb3B5X2JvZHlfZGF0YSk6IEFkZCByZWdpbXBsaWZ5IGZpZWxkLgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfcik6IFNldCBpZC0+cmVnaW1wbGlmeSB0byB0cnVlCglpZiBhbiBUUkVFX0lOVkFSSUFOVCBBRERSX0VYUFIgaXMgbm8gbG9uZ2VyIGludmFyaWFudCBhZnRlcgoJc3Vic3RpdHV0aW9ucy4KCShjb3B5X2JiKTogQ2xlYXIgaWQtPnJlZ2ltcGxpZnkgYmVmb3JlIHdhbGtfdHJlZSwgaWYgaXQgaXMKCXNldCBhZnRlcndhcmRzLCByZWdpbXBsaWZ5IHRoZSB3aG9sZSBzdGF0ZW1lbnQuCgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM2ODAKCSogdHJlZS1kYXRhLXJlZi5jIChzcGxpdF9jb25zdGFudF9vZmZzZXQpIDxjYXNlIEFERFJfRVhQUj46IFB1bnQKCWlmIHRoZSBhZGRlZCBjYXN0IGludm9sdmVzIHZhcmlhYmxlIGxlbmd0aCB0eXBlcy4KCjIwMDctMTEtMDkgIEFsZXhhbmRlciBNb25ha292ICA8YW1vbmFrb3ZAaXNwcmFzLnJ1PgoJICAgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV9pbnNuKTogVXNlIE1PVkVfQkFSUklFUgoJaW5zdGVhZCBvZiBUUlVFX0JBUlJJRVIgZm9yIGp1bXBzLiAgQWRkIHJlZ2lzdGVyIGRlcGVuZGVuY2llcwoJZXZlbiB3aGVuIHJlZ19wZW5kaW5nX2JhcnJpZXIgaXMgc2V0LgoKMjAwNy0xMS0wOSAgQWxleGFuZGVyIE1vbmFrb3YgIDxhbW9uYWtvdkBpc3ByYXMucnU+CgoJKiBoYWlmYS1zY2hlZC5jIChoYWlmYV9jbGFzc2lmeV9pbnNuKTogUmVuYW1lIHRvIC4uLgoJKGhhaWZhX2NsYXNzaWZ5X3J0eCk6IC4uLiAgdGhpcy4gIEltcHJvdmUgaGFuZGxpbmcgb2YgQ09ORF9FWEVDcywKCWhhbmRsZSBQQVJBTExFTHMgYnkgcmVjdXJzaW5nLiAgVXNlIGl0IC4uLiAgCgkoaGFpZmFfY2xhc3NpZnlfaW5zbik6IC4uLiAgaGVyZS4gIFJlaW1wbGVtZW50LgoKMjAwNy0xMS0wOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogYml0bWFwLmggKGJpdG1hcF9zaW5nbGVfYml0X3NldF9wKTogRGVjbGFyZS4KCSogYml0bWFwLmMgKGJpdG1hcF9zaW5nbGVfYml0X3NldF9wKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChhZGRfbWF5X2FsaWFzX2Zvcl9uZXdfdGFnKTogVXNlIGl0LgoJKG1heWJlX2NyZWF0ZV9nbG9iYWxfdmFyKTogVXNlIGJpdG1hcF9lbXB0eV9wLgoKMjAwNy0xMS0wOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzM0MDEyCgkqIGZ3cHJvcC5jICh0cnlfZndwcm9wX3N1YnN0KTogRG8gbm90IHJlcGxhY2UgaWYgdGhlIG5ldwoJU0VUX1NSQyBoYXMgYSBoaWdoZXIgY29zdCB0aGFuIHRoZSBvbGQgb25lLgoKMjAwNy0xMS0wOSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMzNzMyCgkqIHJlbG9hZC5jIChwdXNoX3JlbG9hZCk6IENoZWNrIHRoYXQgdGhlIFJFR19ERUFEIG5vdGUgd2FzIHJlZmVycmluZwoJdG8gYSBoYXJkcmVnIG9yIHRvIGEgcHNldWRvIHRoYXQgaGFzIGJlZW4gYXNzaWduZWQgZXhhY3RseSBvbmUgaGFyZHJlZwoJYmVmb3JlIGNvbnNpZGVyaW5nIGl0IGluIG9yZGVyIHRvIHNlbGVjdCB0aGUgcmVsb2FkIHJlZ2lzdGVyLgoJKGNvbWJpbmVfcmVsb2Fkcyk6IExpa2V3aXNlLgoJKGZpbmRfZHVtbXlfcmVsb2FkKTogTGlrZXdpc2UuCgoyMDA3LTExLTA5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IHB0cl9pbmZvX2RlZik6IE1ha2UgZXNjYXBlX21hc2sgYSBFTlVNX0JJVEZJRUxELgoJKHN0cnVjdCBwdHJfaW5mb19kZWYpOiBMaWtld2lzZS4KCShlbnVtIGVzY2FwZV90eXBlKTogQWxzbyB1c2UgYml0IHplcm8uCgoyMDA3LTExLTA5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM2MDQKCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAodHJlZV9zc2FfZm9yd2FyZF9wcm9wYWdhdGVfc2luZ2xlX3VzZV92YXJzKToKCURpc3JlZ2FyZCBjaGFuZ2VzIGluIENWIHF1YWxpZmllcnMgb2YgcG9pbnRlZCB0byB0eXBlcyBmb3IKCWZvcndhcmQgcHJvcGFnYXRpbmcgQUREUl9FWFBScy4KCSogdHJlZS1zc2EtY2NwLmMgKGZvbGRfc3RtdF9yKTogUHJlc2VydmUgdm9sYXRpbGVuZXNzIG9mIHRoZSBvcmlnaW5hbAoJZXhwcmVzc2lvbi4KCjIwMDctMTEtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGRzZS5jIChmaW5kX3NoaWZ0X3NlcXVlbmNlKTogQWx3YXlzIGNob29zZSBhbiBpbnRlZ2VyIG1vZGUgZm9yCgluZXdfbW9kZS4KCShyZXBsYWNlX3JlYWQpOiBSZXF1aXJlIGJvdGggdGhlIHJlYWQgYW5kIHN0b3JlIG1vZGUgdG8gYmUKCWludGVnZXIgb25lcy4gIFJlbW92ZSBhIHRoZW4tcmVkdW5kYW50IEZMT0FUX1AgY2hlY2suCgoyMDA3LTExLTA4ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLWRmYS5jIChyZW1vdmVfcmVmZXJlbmNlZF92YXIpOiBJZiByZW1vdmluZyBhCgl2YXJpYWJsZSB3aGljaCBoYXMgc3VidmFycywgYWxzbyByZW1vdmUgdGhvc2UgZnJvbQoJdGhlIHJlZmVyZW5jZWQgdmFycy4gIERvIG5vdCBjcmVhdGUgYSB2YXJpYWJsZSBhbm5vdGF0aW9uLgoKMjAwNy0xMS0wOCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9leHBhbmRfcHJvbG9ndWUpOiBSZW1vdmUgZmlyc3QKCWFyZ3VtZW50IGZvciBnZW5fZW50cnkgY2FsbHMuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLm1kOiBBZGQgbmV3ICJlbnRyeSIgdmFsdWUgdG8gInR5cGUiIGF0dHJpYnV0ZS4KCShlbnRyeSk6IFVzZSB0aGUgbmV3IGF0dHJpYnV0ZSB2YWx1ZS4gIFJlbW92ZSB1bnVzZWQgZmlyc3Qgb3BlcmFuZC4KCjIwMDctMTEtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX3RyYW5zbGF0aW9uX3VuaXQpOiBVc2UgbG9jYXRpb24gaW4gZXJyb3IuCgkoY19wYXJzZXJfZXh0ZXJuYWxfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjX3BhcnNlcl9kZWNsYXJhdGlvbl9vcl9mbmRlZik6IExpa2V3aXNlLgoJKGNfcGFyc2VyX2VudW1fc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkoY19wYXJzZXJfc3RydWN0X29yX3VuaW9uX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3N0cnVjdF9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3R5cGVvZl9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9wYXJtc19saXN0X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9hc21fc3RyaW5nX2xpdGVyYWwpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9icmFjZWRfaW5pdCk6IExpa2V3aXNlLgoJKGNfcGFyc2VyX2luaXRlbHQpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9jb21wb3VuZF9zdGF0ZW1lbnRfbm9zdGFydCk6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3N0YXRlbWVudF9hZnRlcl9sYWJlbHMpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9kb19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9hc21fc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY19wYXJzZXJfY29uZGl0aW9uYWxfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3VuYXJ5X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjX3BhcnNlcl9zaXplb2ZfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbl9hZnRlcl9wYXJlbl90eXBlKTogTGlrZXdpc2UuCgkoY19wYXJzZXJfb2JqY19jbGFzc19pbnN0YW5jZV92YXJpYWJsZXMpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9vYmpjX21ldGhvZF9kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoY19wYXJzZXJfb2JqY19tZXRob2Rwcm90b2xpc3QpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9wcmFnbWEpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9vbXBfY2xhdXNlX251bV90aHJlYWRzKTogTGlrZXdpc2UuCgkoY19wYXJzZXJfb21wX2NsYXVzZV9zY2hlZHVsZSk6IExpa2V3aXNlLgoJKGNfcGFyc2VyX29tcF9hbGxfY2xhdXNlcyk6IExpa2V3aXNlLgoJKGNfcGFyc2VyX29tcF9zZWN0aW9uc19zY29wZSk6IExpa2V3aXNlLgoJKGNfcGFyc2VyX2xhYmVsKTogVXNlIGxvY2F0aW9uIG9mIGxhYmVsLCBub3QgY29sb24uCgoyMDA3LTExLTA4ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIHRhcmdldC8zMzc3NAoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKEJJR0dFU1RfRklFTERfQUxJR05NRU5UKTogRGVmaW5lIG9ubHkgaWYKCUlOX1RBUkdFVF9MSUJTLgoKMjAwNy0xMS0wNyAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMzODI2CgkqIGlwYS1wdXJlLWNvbnN0LmMgKHN0YXRpY19leGVjdXRlKTogQWRkZWQgY29kZSB0byBrZWVwIHJlY3Vyc2l2ZQoJZnVuY3Rpb25zIGZyb20gYmVpbmcgbWFya2VkIGFzIHB1cmUgb3IgY29uc3QuCgkqIGlwYS11dGlscy5jIChzZWFyY2hjKTogRml4ZWQgY29tbWVudC4KCQkKMjAwNy0xMS0wOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY29tbW9uLm9wdCAoZnNob3ctY29sdW1uKTogRGVmYXVsdCB0byAwLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGNvbmZpZ3VyZS5hYyAoLS1lbmFibGUtbWFwcGVkLWxvY2F0aW9uKTogRGVmYXVsdCB0byAneWVzJy4KCjIwMDctMTEtMDcgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBjb21tb24ub3B0OiBBZGQgcG9pbnRlciB0byBkb2Mvb3B0aW9ucy50ZXhpLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mZHNlLCAtZmRjZSwgLWZhdXRvLWluYy1kZWMsIC1maXBhLXB1cmUtY29uc3QsCgktZmlwYS1yZWZlcmVuY2UpOiBBZGQgb3IgY29ycmVjdCBkb2MuICBTb3J0ZWQgb3B0aW9ucyBsaXN0IGZvciAtT3MKCS1PLCAtTzIuCgoyMDA3LTExLTA3ICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJUFIgdGFyZ2V0LzE2MzUwCgkqIGNvbmZpZy5nY2M6IEZvciBhcm0qYi0qIGRlZmluZSBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxULgoJKiBjb25maWcvYXJtL2xpbnV4LWVsZi5oIChUQVJHRVRfRU5ESUFOX0RFRkFVTFQpOiBEZWZpbmUgYmFzZWQgb24KCVRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQuICBVc2UgZm9yIE1VTFRJTElCX0RFRkFVTFRTLgoJKFRBUkdFVF9ERUZBVUxUKTogU2V0IGFjY29yZGluZyB0byBUQVJHRVRfRU5ESUFOX0RFRkFVTFQuCgkoTElOVVhfVEFSR0VUX0xJTktfU1BFQyk6IFBhc3MgLW1saXR0bGUtZW5kaWFuIG9uIHRvIHRoZSBhc3NlbWJsZXIuCgkqIGNvbmZpZy9hcm0vbGludXgtZWFiaS5oIChUQVJHRVRfTElOS0VSX0VNVUxBVElPTik6IFNldCBhY2NvcmRpbmcKCXRvIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQuCgkoU1VCVEFSR0VUX0VYVFJBX0xJTktfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2JwYWJpLmggKFRBUkdFVF9ERUZBVUxUX01BU0spOiBTZXQgYWNjb3JkaW5nCgl0byBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxULgoKMjAwNy0xMS0wNyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGdvb2dsZS5jb20+CgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX3N0cnVjdF9maWVsZF90YWcpOiBNb3ZlIGZpZWxkCglpbl9uZXN0ZWRfc3RydWN0IC4uLgoJKHN0cnVjdCB0cmVlX21lbW9yeV90YWcpOiAuLi4gaGVyZS4KCjIwMDctMTEtMDcgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0Bnb29nbGUuY29tPgoKCVBSIDMzODcwCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfc3RydWN0X2ZpZWxkX3RhZyk6IEFkZCBmaWVsZCBpbl9uZXN0ZWRfc3RydWN0LgoJKFNGVF9JTl9ORVNURURfU1RSVUNUKTogRGVmaW5lLgoJKiB0cmVlLWRmYS5jIChkdW1wX3N1YnZhcnNfZm9yKTogU2hvdyBvZmZzZXQgb2YgZWFjaCBzdWItdmFyLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IGZpZWxkb2ZmKTogQWRkIGZpZWxkIGluX25lc3RlZF9zdHJ1Y3QuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHN0cnVjdCB2YXJpYWJsZV9pbmZvKTogTGlrZXdpc2UuCgkocHVzaF9maWVsZHNfb250b19maWVsZHN0YWNrKTogSWYgT0ZGU0VUIGlzIHBvc2l0aXZlLAoJc2V0IGluX25lc3RlZF9zdHJ1Y3QuCgkoY3JlYXRlX3ZhcmlhYmxlX2luZm9fZm9yKTogQ29weSBzZXR0aW5nIG9mCglpbl9uZXN0ZWRfc3RydWN0IGZyb20gdGhlIGZpZWxkIG9mZnNldCBvYmplY3QuCgkoc2V0X3VpZHNfaW5fcHRzZXQpOiBTZXQgU0ZUX0lOX05FU1RFRF9TVFJVQ1QgZnJvbSB0aGUKCXZhcmlhYmxlIGluZm8gb2JqZWN0LgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmFyc19mb3Jfb2Zmc2V0KTogSWYgVkFSCgliZWxvbmdzIHRvIGEgbmVzdGVkIHN0cnVjdHVyZSwgYWRqdXN0IE9GRlNFVCBieSBTRlRfT0ZGU0VUKFZBUikuCgoyMDA3LTExLTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzM3MzcKCSogY2ZnY2xlYW51cC5jICh0cnlfY3Jvc3NqdW1wX3RvX2VkZ2UpOiBBZGQgY291bnQgYW5kIGZyZXF1ZW5jeSBvZgoJdGFyZ2V0IGJsb2NrIGFmdGVyIGNvbXB1dGluZyB0aGUgcHJvYmFiaWxpdGllcyBvZiBvdXRnb2luZyBlZGdlcy4KCUNhcCB0aGUgZnJlcXVlbmN5IHRvIEJCX0ZSRVFfTUFYLgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAocmVkaXJlY3RfZWRnZXMpOiBBbHNvIGFkanVzdCBjb3VudCBhbmQKCWZyZXF1ZW5jeSBvZiB0aGUgYmFzaWMgYmxvY2sgaWYgaXQgaGFzIGJlZW4gcmV1c2VkLgoKMjAwNy0xMS0wNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMzODIyCgkqIHJ0bC5oIChSRUdfT0ZGU0VUKTogRml4IGNvbW1lbnQuCgkqIHZhci10cmFja2luZy5jIChJTlRfTUVNX09GRlNFVCk6IE5ldyBtYWNyby4KCSh2YXJfbWVtX3NldCk6IFVzZSBpdC4KCSh2YXJfbWVtX2RlbGV0ZV9hbmRfc2V0KTogTGlrZXdpc2UuCgkodmFyX21lbV9kZWxldGUpOiBMaWtld2lzZS4KCShzYW1lX3ZhcmlhYmxlX3BhcnRfcCk6IExpa2V3aXNlLgoJKHZ0X2dldF9kZWNsX2FuZF9vZmZzZXQpOiBMaWtld2lzZS4KCShvZmZzZXRfdmFsaWRfZm9yX3RyYWNrZWRfcCk6IE5ldyBwcmVkaWNhdGUuCgkoY291bnRfdXNlcyk6IERvIG5vdCB0cmFjayBsb2NhdGlvbnMgd2l0aCBpbnZhbGlkIG9mZnNldHMuCgkoYWRkX3VzZXMpOiBMaWtld2lzZS4KCShhZGRfc3RvcmVzKTogTGlrZXdpc2UuCgoyMDA3LTExLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2Etc3RydWN0YWxpYXMubyk6IERlcGVuZCBvbiAkKEZVTkNUSU9OX0gpCgkoQkFTSUNfQkxPQ0tfSCk6IEFkZCB2ZWMuaCwgJChGVU5DVElPTl9IKS4KCjIwMDctMTEtMDcgIERtaXRyeSBaaHVyaWtoaW4gIDx6aHVyQGlzcHJhcy5ydT4KCSAgICBBbmRyZXkgQmVsZXZhbnRzZXYgIDxhYmVsQGlzcHJhcy5ydT4KCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfb3JkZXJfbm9kZXMsIHBlcm11dGVfcGFydGlhbF9zY2hlZHVsZSwKCWdlbmVyYXRlX3Byb2xvZ19lcGlsb2csIGR1cGxpY2F0ZV9pbnNuc19vZl9jeWNsZXMpOiBGaXggcHJvdG90eXBlcy4KCShjYWxjdWxhdGVfb3JkZXJfcGFyYW1zLCBzbXNfb3JkZXJfbm9kZXMpOiBOZXcgcGFyYW1ldGVyIHBtYXhfYXNhcC4KCVNhdmUgY2FsY3VsYXRlZCBtYXhfYXNhcCBpbiBpdC4gCQoJKHNtc19zY2hlZHVsZSk6IENhbGN1bGF0ZSBtYXhpaSB1c2luZyBtYXhfYXNhcC4KCjIwMDctMTEtMDcgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IFJlcGxhY2UgcnM2MDAwIGRmcCBzd2l0Y2hlcyAtbWRmcC8tbW5vLWRmcAoJd2l0aCAtbWhhcmQtZGZwLy1tbm8taGFyZC1kZnAuCgoyMDA3LTExLTA3ICBNYXhpbSBLdXZ5cmtvdiAgPG1heGltQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMzY3MAoJKiBoYWlmYS1zY2hlZC5jIChjaGVja19zY2hlZF9mbGFncyk6IFJlbW92ZS4KCShzY2hlZF9pbml0KTogRG9uJ3QgY2FsbCBpdC4KCjIwMDctMTEtMDYgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0Bnb29nbGUuY29tPgoKCSogdHJlZS1mbG93LmggKHN0cnVjdCBmaWVsZG9mZik6IFJlZm9ybWF0IGNvbW1lbnQuIERvY3VtZW50IGZpZWxkcy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYzogVGlkeSB0b3AtbGV2ZWwgY29tbWVudHMuCgkoYWRkX3ZvcCk6IExpa2V3aXNlLgoJKGFkZF92YXJzX2Zvcl9vZmZzZXQpOiBUaWR5IHBhcmFtZXRlciBmb3JtYXR0aW5nLi4KCShnZXRfYWRkcl9kZXJlZmVyZW5jZV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOiBMaWtld2lzZS4KCShnZXRfZXhwcl9vcGVyYW5kcykgPE9NUF9BVE9NSUNfTE9BRD46IFJlZm9ybWF0LgoJPE9NUF9BVE9NSUNfU1RPUkU+OiBMaWtld2lzZS4KCjIwMDctMTEtMDYgIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCglQUiB0YXJnZXQvMzI3ODcKCSogY29uZmlnL2kzODYvZHJpdmVyLWkzODYuYzogVGVzdCBmb3IgX19HTlVDX18gaW5zdGVhZCBvZgoJR0NDX1ZFUlNJT04gd2hpY2ggaXMgYWx3YXlzIGRlZmluZWQuCgoyMDA3LTExLTA2ICBVbHJpY2ggV2VpZ2FuZCAgPFVscmljaC5XZWlnYW5kQGRlLmlibS5jb20+CgoJUFIgdGFyZ2V0LzMwOTYxCgkqIHJlbG9hZDEuYyAoZmluZF9yZWxvYWRzKTogQWxzbyBjaGVjayBpbl9yZWcgd2hlbiBoYW5kbGluZyBhCglzaW1wbGUgbW92ZSB3aXRoIGFuIGlucHV0IHJlbG9hZCBhbmQgYSBkZXN0aW5hdGlvbiBvZiBhIGhhcmQgcmVnaXN0ZXIuCgoyMDA3LTExLTA2ICBNYXhpbSBLdXZ5cmtvdiAgPG1heGltQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKHNjaGVkLWludC5oLCBpbnNuLWNvZGVzLmgpOiBOZXcgaW5jbHVkZXMuCgkoVEFSR0VUX1NDSEVEX0FESlVTVF9DT1NULCBUQVJHRVRfU0NIRURfVkFSSUFCTEVfSVNTVUUsCglUQVJHRVRfU0NIRURfSU5JVF9HTE9CQUwsIFRBUkdFVF9TQ0hFRF9GSU5JU0hfR0xPQkFMLAoJVEFSR0VUX1NDSEVEX0lOSVQsIFRBUkdFVF9TQ0hFRF9ERkFfUFJFX0FEVkFOQ0VfQ1lDTEUsCglUQVJHRVRfU0NIRURfREZBX1BPU1RfQURWQU5DRV9DWUNMRSk6IFJlZGVmaW5lLgoJKG02OGtfc2NoZWRfYXR0cl90eXBlMik6IE5ldyBmdW5jdGlvbi4KCShzY2hlZF9hZGp1c3RfY29zdF9zdGF0ZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkobTY4a19zY2hlZF9hZGp1c3RfY29zdCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gaW1wbGVtZW50aW5nCglzY2hlZHVsZXIgaG9vay4KCShzY2hlZF9pYl9zaXplLCBzY2hlZF9pYl9maWxsZWQsIHNjaGVkX2liX2luc24sIHNjaGVkX21lbV91bml0X2NvZGUpOgoJTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkobTY4a19zY2hlZF92YXJpYWJsZV9pc3N1ZSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gaW1wbGVtZW50aW5nCglzY2hlZHVsZXIgaG9vay4KCShzY2hlZF9kdW1wX2NsYXNzX2RlZiwgc2NoZWRfZHVtcF9jbGFzc19mdW5jX3QpOiBOZXcgdHlwZWRlZnMuCgkoc2NoZWRfZHVtcF9zcGxpdF9jbGFzcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoc2NoZWRfZHVtcF9kZmFfZ3Vlc3NfdW5pdF9jb2RlLCBzY2hlZF9kdW1wX2RmYV9zdGF0ZSk6IE5ldyBzdGF0aWMKCXZhcmlhYmxlcy4KCShzY2hlZF9kdW1wX2RmYV9jbGFzcywgbTY4a19zY2hlZF9kdW1wKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShtNjhrX3NjaGVkX21kX2luaXRfZ2xvYmFsLCBtNjhrX3NjaGVkX21kX2ZpbmlzaF9nbG9iYWwsCgltNjhrX3NjaGVkX21kX2luaXQsIG02OGtfc2NoZWRfZGZhX3ByZV9hZHZhbmNlX2N5Y2xlLAoJbTY4a19zY2hlZF9kZmFfcG9zdF9hZHZhbmNlX2N5Y2xlKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMgaW1wbGVtZW50aW5nCglzY2hlZHVsZXIgaG9va3MuCgoJKiBjb25maWcvbTY4ay9tNjhrLmggKG02OGtfc2NoZWRfYXR0cl90eXBlMik6IERlY2xhcmUuCgkoQ1BVX1VOSVRTX1FVRVJZKTogRGVmaW5lLgoKCSogY29uZmlnL202OGsvY2YubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvbTY4ay9tNjgubWQgKGNmLm1kKTogTmV3IGluY2x1ZGUuCgoyMDA3LTExLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgYysrLzMyMjU2CglQUiBjKysvMzIzNjgKCSogZnVuY3Rpb24uYyAoc2F2ZWRfaW5fc3lzdGVtX2hlYWRlcik6IE5ldyBnbG9iYWwuCgkocHVzaF9jZnVuKTogU2F2ZSBpbl9zeXN0ZW1faGVhZGVyLgoJKHBvcF9jZnVuKTogUmVzdG9yZSBpbl9zeXN0ZW1faGVhZGVyLgoJKHB1c2hfc3RydWN0X2Z1bmN0aW9uKTogU2F2ZSBpbl9zeXN0ZW1faGVhZGVyLgoKMjAwNy0xMS0wNiAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJUFIgYysrLzMzOTc3CglQUiBjKysvMzM4ODYKCSogYy1jb21tb24uYyAoY19idWlsZF9xdWFsaWZpZWRfdHlwZSk6IE1vdmVkIHRvIGMtdHlwZWNrLmMuCgkoY29tcGxldGVfYXJyYXlfdHlwZSk6IFNldCBjYW5vbmljYWwgdHlwZSBhcHByb3ByaWF0ZWx5LgoJKiBjLXR5cGVjay5jIChjX2J1aWxkX3F1YWxpZmllZF90eXBlKTogTW92ZWQgZnJvbSBjLWNvbW1vbi5jLiBUaGUKCUMgYW5kIEMrKyBmcm9udCBlbmRzIG5vdyBoYXZlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGlzIGZ1bmN0aW9uLAoJYmVjYXVzZSB0aGUgQysrIHZlcnNpb24gbmVlZHMgdG8gbWFpbnRhaW4gY2Fub25pY2FsIHR5cGVzIGhlcmUuCgoyMDA3LTExLTA0ICBSYXp5YSBMYWRlbHNreSAgPHJhenlhQGlsLmlibS5jb20+CgkKCSogdHJlZS1wYXJsb29wcy5jIChyZWR1Y3Rpb25faW5mbyk6IFJlbW92ZSByZWR1Y3Rpb25faW5pdCBmaWVsZC4KCShpbml0aWFsaXplX3JlZHVjdGlvbnMpOiBSZW1vdmUgY3JlYXRpb24gb2YgdGhlIHJlZHVjdGlvbl9pbml0IHZhcmlhYmxlLgoJKHN0cnVjdCBkYXRhX2FyZyk6IFJlbW92ZS4KCShhZGRfZmllbGRfZm9yX3JlZHVjdGlvbiwgY3JlYXRlX3N0b3Jlc19mb3JfcmVkdWN0aW9uKTogTmV3IGZ1bmN0aW9ucy4KCShhZGRfZmllbGRfZm9yX25hbWUpOiBSZW1vdmUgcmVkdWN0aW9uIGhhbmRsaW5nLgoJKHNlcGFyYXRlX2RlY2xzX2luX2xvb3ApOiBDYWxsIGFkZF9maWVsZF9mb3JfcmVkdWN0aW9uLAoJY3JlYXRlX3N0b3Jlc19mb3JfcmVkdWN0aW9uLgoKMjAwNy0xMS0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM0NTgKCSogdHJlZS1pbmxpbmUuYyAoY29weV9waGlzX2Zvcl9iYik6IElmIFBISSBhcmcgc3Vic3RpdHV0aW9uIGNyZWF0ZXMKCSFpc19naW1wbGVfdmFsIFBISSBhcmd1bWVudCwgZ2ltcGxpZnkgaXQgYW5kIGluc2VydCBpdCBvbiBlZGdlLgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzOTkzCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9nZXRfY29uc3RhbnRfdmVjdG9ycyk6IFVzZSBidWlsZF92ZWN0b3IKCXJhdGhlciB0aGFuIGJ1aWxkX2NvbnN0cnVjdG9yX2Zyb21fbGlzdCBpZiBhbGwgbGlzdCB2YWx1ZXMgYXJlCgljb25zdGFudHMuCgkoZ2V0X2luaXRpYWxfZGVmX2Zvcl9pbmR1Y3Rpb24pOiBVc2UgYnVpbGRfdmVjdG9yIGluc3RlYWQgb2YKCWJ1aWxkX2NvbnN0cnVjdG9yX2Zyb21fbGlzdC4KCjIwMDctMTEtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzMzNTc5CgkqIHRyZWUuaCAoREVDTF9JTklUX1BSSU9SSVRZKTogRG8gbm90IHJlcXVpcmUgREVDTF9IQVNfSU5JVF9QUklPUklUWV9QLgoJKERFQ0xfRklOSV9QUklPUklUWSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGRlY2xfaW5pdF9wcmlvcml0eV9sb29rdXApOiBSZW1vdmUgYXNzZXJ0LgoJKGRlY2xfZmluaV9wcmlvcml0eV9pbnNlcnQpOiBMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jIChzdGF0aWNfY3RvcnMpOiBNYWtlIGl0IGEgVkVDLgoJKHN0YXRpY19kdG9ycyk6IExpa2V3aXNlLgoJKHJlY29yZF9jZHRvcl9mbik6IEFkanVzdCBhY2NvcmRpbmdseS4KCShidWlsZF9jZHRvcik6IEdlbmVyYXRlIG11bHRpcGxlIGZ1bmN0aW9ucyBmb3IgZWFjaCBpbml0aWFsaXphdGlvbgoJcHJpb3JpdHkuCgkoY29tcGFyZV9jdG9yKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBhcmVfZHRvcik6IExpa2V3aXNlLgoJKGNncmFwaF9idWlsZF9jZHRvcl9mbnMpOiBTb3J0IHRoZSBmdW5jdGlvbnMgYnkgcHJpb3JpdHkgYmVmb3JlCgljYWxsaW5nIGJ1aWxkX2NkdG9yLgoJKGNncmFwaF9idWlsZF9zdGF0aWNfY2R0b3IpOiBQdXQgdGhlIHByaW9yaXR5IGluIHRoZSBmdW5jdGlvbidzIG5hbWUuCgoyMDA3LTExLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgZHJpdmVyLzMyNjMyCgkqIGNvbW1vbi5vcHQ6IEFkZCBzaGFyZWQgYW5kIHBpZS4KCjIwMDctMTEtMDUgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jICh4dGVuc2FfZXhwYW5kX25vbmxvY2FsX2dvdG8pOiBEbyBub3QKCXJlcGxhY2UgcmVmZXJlbmNlcyB0byB2aXJ0dWFsX3N0YWNrX3ZhcnNfcnR4IGluIGdvdG9faGFuZGxlci4KCjIwMDctMTEtMDUgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjIChhcm0qLSotKik6IFNldCBjX3RhcmdldF9vYmpzIGFuZCBjeHhfdGFyZ2V0X29ianMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9sYW5nX291dHB1dF9vYmplY3RfYXR0cmlidXRlc19ob29rKTogTmV3LgoJKGFybV9maWxlX3N0YXJ0KTogRG9uJ3Qgc2V0IFRhZ19BQklfUENTX3djaGFyX3QuICBDYWxsCglhcm1fbGFuZ19vdXRwdXRfb2JqZWN0X2F0dHJpYnV0ZXNfaG9vay4KCSogY29uZmlnL2FybS9hcm0uaCAoYXJtX2xhbmdfb3V0cHV0X29iamVjdF9hdHRyaWJ1dGVzX2hvb2spOiBEZWNsYXJlLgoJKFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKTogQ2FsbCBhcm1fbGFuZ19vYmplY3RfYXR0cmlidXRlc19pbml0LgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX2xhbmdfb2JqZWN0X2F0dHJpYnV0ZXNfaW5pdCk6IEFkZAoJcHJvdG90eXBlLgoJKiBjb25maWcvYXJtL3QtYXJtLmMgKGFybS5vKTogTmV3IHJ1bGUuCgkqIGNvbmZpZy9hcm0vYXJtLWMuYzogTmV3IGZpbGUuCgoyMDA3LTExLTA1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoJICAgIFNlYmFzdGlhbiBQb3AgIDxzZWJhc3RpYW4ucG9wQGFtZC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI1NDAKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzOTIyCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgUEFSQU1fTUFYX1BBUlRJQUxfQU5USUNfTEVOR1RILgoJKiB0cmVlLXNzYS1wcmUuYzogSW5jbHVkZSBwYXJhbXMuaC4KCShjb21wdXRlX3BhcnRpYWxfYW50aWNfYXV4KTogVXNlIFBBUkFNX01BWF9QQVJUSUFMX0FOVElDX0xFTkdUSAoJdG8gbGltaXQgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBQQSBzZXQgZm9yIGEgZ2l2ZW4gYmxvY2suCgkqIE1ha2VmaWxlLmluOiBBZGQgYSBkZXBlbmRlbmN5IHVwb24gcGFyYW1zLmggZm9yIHRyZWUtc3NhLXByZS5jCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9QQVJUSUFMX0FOVElDX0xFTkdUSCk6IE5ldyBwYXJhbWV0ZXIuCgoyMDA3LTExLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogbGliZ2NjMi5jIChfX2ZpeHVuc3RmREksIF9fZml4dW5zeGZESSwgX19maXh1bnNkZkRJLAoJX19maXh1bnNzZkRJKTogTWFrZSByZXR1cm4gdHlwZSB1bnNpZ25lZC4KCSogbGliZ2NjMi5oIChfX2ZpeHVuc3RmREksIF9fZml4dW5zeGZESSwgX19maXh1bnNkZkRJLAoJX19maXh1bnNzZkRJKTogTWFrZSByZXR1cm4gdHlwZSB1bnNpZ25lZC4KCjIwMDctMTEtMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzODU2CgkqIHRyZWUtZGF0YS1yZWYuYyAoZ2V0X3JlZmVyZW5jZXNfaW5fc3RtdCk6IERvbid0IGFkZAoJUkVGRVJFTkNFX0NMQVNTX1AgdHJlZXMgdG8gcmVmZXJlbmNlcyB2ZWN0b3IgaWYgZ2V0X2Jhc2VfYWRkcmVzcwoJcmV0dXJucyBOVUxMIG9uIHRoZW0uCgoyMDA3LTExLTA1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNmZy5jIChkdW1wX2NmZ19iYl9pbmZvKTogVXBkYXRlIGJiX2JpdG5hbWVzIHRvIG1hdGNoIGVudW0uCgoyMDA3LTExLTA0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjkzMQoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5IDxjYXNlIEVRX0VYUFI+KTogQ29udmVydCB0aGUgaW5uZXIgdHlwZQoJZm9yIFRSVVRIX05PVF9FWFBSIHRvIHR5cGUuCgoyMDA3LTExLTA0ICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCgkqIGRvYy9jb250cmliLnRleGkgKENvbnRyaWJ1dG9ycyk6IEFkZCBNYW51ZWwgTG9wZXotSWJhbmV6LgoKMjAwNy0xMS0wNCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxmeGNvdWRlcnRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8xMDIyMAoJKiBkd2FyZjJvdXQuYyAoYWRkX2NhbGxpbmdfY29udmVudGlvbl9hdHRyaWJ1dGUpOiBDaGFuZ2UKCXNlY29uZCBhcmd1bWVudC4gU2V0IGNhbGxpbmcgY29udmVudGlvbiB0byBEV19DQ19wcm9ncmFtIGZvcgoJRm9ydHJhbiBtYWluIHByb2dyYW0uCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogQWRqdXN0IHRvIG5ldyBwcm90b3R5cGUgZm9yCglhZGRfY2FsbGluZ19jb252ZW50aW9uX2F0dHJpYnV0ZS4KCjIwMDctMTEtMDMgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM5ODcKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jIChnZXRfaW5pdGlhbF9kZWZfZm9yX3JlZHVjdGlvbik6IEZpeCBhc3NlcnQuCglGaXggaW5kZW50YXRpb24uCgkodmVjdG9yaXphYmxlX3JlZHVjdGlvbik6IEFkZCB0eXBlIGNoZWNrLgoKMjAwNy0xMS0wMyAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJUFIgYy8yOTA2MgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9zdGF0ZW1lbnRfYWZ0ZXJfbGFiZWxzKTogRXJyb3IgaWYgYQoJZGVjbGFyYXRpb24gaXMgcGFyc2VkIGFmdGVyIGEgbGFiZWwuCgkKMjAwNy0xMS0wMyAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8zMzkyMQoJKiByZW9yZy5jIChlbWl0X2RlbGF5X3NlcXVlbmNlKTogRG8gbm90IGNsZWFyIHRoZSBsb2NhdG9yIG9uCgl0aGUganVtcCBpbnN0cnVjdGlvbi4KCjIwMDctMTEtMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzM2NzAKCSogaGFpZmEtc2NoZWQuYyAob2tfZm9yX2Vhcmx5X3F1ZXVlX3JlbW92YWwpOiBEb24ndCB3YWxrIG91dCBvZiB0aGUKCWN1cnJlbnQgc2NoZWQgcmVnaW9uLgoKMjAwNy0xMS0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHN0cnVjdCByZWdfd3JpdGVfc3RhdGUpOiBDaGFuZ2UgaW50bwoJdW5zaWduZWQgc2hvcnQgYml0ZmllbGRzIHJhdGhlciB0aGFuIHVuc2lnbmVkIGludCwgZGVjcmVhc2UKCWZpcnN0X3ByZWQgdG8ganVzdCAxMCBiaXRzLgoJKHJ3c19pbnNuKTogQ2hhbmdlIGludG8gYSBiaXRtYXAgb3IgaWYgbm90IEVOQUJMRV9DSEVDS0lORwoJaW50byB0d28gY2hhciBhcnJheS4KCShyd3NfaW5zbl9zZXQsIHJ3c19pbnNuX3Rlc3QpOiBOZXcgZnVuY3Rpb25zLgoJKGluX3NhZmVfZ3JvdXBfYmFycmllcik6IE5ldyB2YXJpYWJsZS4KCShyd3NfdXBkYXRlKTogUmVtb3ZlIGZpcnN0IGFyZ3VtZW50LCBhbHdheXMgc2V0IHJ3c19zdW0gYXJyYXkuCgkocndzX2FjY2Vzc19yZWdubyk6IFVzZSByd3NfaW5zbl9zZXQgbWFjcm8uICBPbmx5IGNhbGwgcndzX3VwZGF0ZQoJb3IgdXBkYXRlIHJ3c19zdW0gaWYgIWluX3NhZmVfZ3JvdXBfYmFycmllciwgYWRqdXN0IHJ3c191cGRhdGUgYXJncy4KCShydHhfbmVlZHNfYmFycmllcik6IFVzZSByd3NfaW5zbl90ZXN0IG1hY3JvLgoJKHNhZmVfZ3JvdXBfYmFycmllcl9uZWVkZWQpOiBEb24ndCBzYXZlL3Jlc3RvcmUgcndzX3N1bSBhcnJheSwKCWluc3RlYWQgc2V0L2NsZWFyIGluX3NhZmVfZ3JvdXBfYmFycmllciBmbGFnLgoKMjAwNy0xMS0wMiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9leHBhbmRfcHJvbG9ndWUpOiBQdXQgYQoJUkVHX0ZSQU1FX1JFTEFURURfRVhQUiBub3RlIG9uIHRoZSBsYXN0IGluc24gdGhhdCBzZXRzIHVwIHRoZSBzdGFjawoJcG9pbnRlciBvciBmcmFtZSBwb2ludGVyLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChEV0FSRl9VTldJTkRfSU5GTyk6IERlbGV0ZS4KCShNVVNUX1VTRV9TSkxKX0VYQ0VQVElPTlMpOiBEZWZpbmUuCgkoRFdBUkYyX1VOV0lORF9JTkZPKTogRGVmaW5lLgoJKElOQ09NSU5HX1JFVFVSTl9BRERSX1JUWCk6IERlZmluZS4KCShEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogRGVmaW5lLgoKMjAwNy0xMS0wMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogdmFycG9vbC5jIChkdW1wX3ZhcnBvb2wpOiBVc2UgJ25leHQnLCBub3QgJ25leHRfbmVlZGVkJyB3aGVuCgl0cmF2ZXJzaW5nIHBvb2wuCgoyMDA3LTExLTAyICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AZ29vZ2xlLmNvbT4KCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rc19mb3JfY2FsbGdyYXBoKTogUmVtb3ZlIHRoaXJkCglhcmd1bWVudCBmcm9tIGZ1bmN0aW9uIHBvaW50ZXIgQU5BTFlaRV9FWFBSLiAgVXBkYXRlIGFsbCB1c2Vycy4KCSogY2dyYXBoLmMgKGRlYnVnX2NncmFwaF9ub2RlKTogTmV3LgoJKGRlYnVnX2NncmFwaCk6IE5ldy4KCjIwMDctMTEtMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzM2NDgKCSogY2ZncnRsLmMgKGNmZ19sYXlvdXRfc3BsaXRfZWRnZSk6IEluaXRpYWxpemUgQkJfUEFSVElUSU9OIG9mCgl0aGUgbmV3bHkgY3JlYXRlZCBiYXNpYyBibG9jay4KCjIwMDctMTEtMDEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGdnYy1wYWdlLmMgKGV4dHJhX29yZGVyX3NpemVfdGFiKTogQWRkIGJpdG1hcF9oZWFkIHNpemUuCgoyMDA3LTExLTAxICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMzgyOAoJKiBnY3NlLmMgKGNvbXB1dGVfY29kZV9ob2lzdF92YmVpbm91dCk6IEZpeCBvcmRlciBvZiBjb21wdXRhdGlvbgoJb2YgVkJFSU4gYW5kIFZCRU9VVC4KCjIwMDctMTEtMDEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBvcHRhYnMuYyAocHJlcGFyZV9jbXBfaW5zbik6IE1lcmdlIGEgY291cGxlIG9mIGNvbmRpdGlvbmFsIGJsb2Nrcy4KCSogc2NoZWQtcmduLmMgKGNvbXB1dGVfdHJnX2luZm8pOiBaZXJvICdlbCcgbG9jYWwgdmFyaWFibGUuCgkqIHRyZWUtaWYtY29udi5jIChwcm9jZXNzX3BoaV9ub2Rlcyk6IFplcm8gJ2NvbmQnIGxvY2FsIHZhcmlhYmxlLgoKMjAwNy0xMS0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjYy5jIChnZXRlbnZfc3BlY19mdW5jdGlvbik6IEVzY2FwZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUncwoJdmFsdWUuCgoyMDA3LTExLTAxICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW1pemUgT3B0aW9ucyk6IFVuZGVyIC1mY3NlLWZvbGxvdy1qdW1wcywKCXNob3cgdGhhdCBDU0UgbWVhbnMgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24uICBDaGFuZ2Ugd29yZGluZwoJZm9yIC1mc2VlIGFuZCBkZWZpbmUgTENNLiAgUmVtb3ZlIGNhcGl0YWxpemF0aW9uIG9mIG9wdGltaXphdGlvbnMKCWZvciAtZnRyZWUtcmVhc3NvYywgLWZ0cmVlLXByZSwgYW5kIC1mdHJlZS1mcmUuCgoyMDA3LTExLTAxICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCglQUiB0ZXN0c3VpdGUvMjUzNTIKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKFRlc3QgRGlyZWN0aXZlcyk6IERvY3VtZW50IHRoYXQgeGZhaWwKCWhhcyBubyBlZmZlY3QgZm9yIGRnLWRvIGV4Y2VwdCB3aGVuIGRnLWRvLXdoYXQgaXMgInJ1biIuCgoyMDA3LTExLTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBTZXQgZGVjbCBzb3VyY2UgbG9jYXRpb25zLgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9lbnVtX3NwZWNpZmllcik6IFNldCBsb2NhdGlvbi4KCShjX3BhcnNlcl9zdHJ1Y3Rfb3JfdW5pb25fc3BlY2lmaWVyKTogTGlrZXdpc2UuCgoyMDA3LTExLTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBQcmludCBjb2x1bW4gbnVtYmVyLgoKMjAwNy0xMS0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZGVidWcvMzM1MzcKCSogZHdhcmYyb3V0LmMgKGdlbl9mb3JtYWxfcGFyYW1ldGVyX2RpZSwgZ2VuX3ZhcmlhYmxlX2RpZSwKCWdlbl9kZWNsX2RpZSk6IFVzZSBUUkVFX1RZUEUgKFRSRUVfVFlQRSAoZGVjbCkpIGFzIHR5cGUKCXJhdGhlciB0aGFuIFRSRUVfVFlQRSAoZGVjbCkgaWYgREVDTF9CWV9SRUZFUkVOQ0UgKGRlY2wpLgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzM2NzMKCSogZ2NzZS5jIChjcHJvcF9qdW1wKTogSWYgYSBjb25kaXRpb25hbCBqdW1wIGhhcyBiZWVuIG9wdGltaXplZAoJaW50byB1bmNvbmRpdGlvbmFsIGp1bXAsIG1ha2UgdGhlIHJlbWFpbmluZyBub3JtYWwgZWRnZSBmYWxsdGhydQoJYW5kIGRlbGV0ZSB0aGUganVtcCBpbnNuLgoKMjAwNy0xMS0wMSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBlbWl0LXJ0bC5jIChzZXRfcmVnX2F0dHJzX2Zyb21fbWVtKTogQ2xhcmlmeSBmdW5jdGlvbiBjb21tZW50LgoJKHNldF9tZW1fYXR0cnNfZnJvbV9yZWcpOiBMaWtld2lzZS4KCjIwMDctMTEtMDEgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzk2MQoJKiB0cmVlLXNzYS1waGlvcHQuYyAoc3RydWN0IG5hbWVfdG9fYmIuc3RvcmUpOiBOZXcgbWVtYmVyLgoJKG5hbWVfdG9fYmJfaGFzaCwgbmFtZV90b19iYl9lcSk6IENvbnNpZGVyIGFuZCBjaGVjayBpdC4KCShhZGRfb3JfbWFya19leHByKTogTmV3IGFyZ3VtZW50ICdzdG9yZScsIHVzaW5nIGl0IHRvIHNlYXJjaAoJdGhlIGhhc2ggdGFibGUuCgkobnRfaW5pdF9ibG9jayk6IEFkanVzdCBjYWxscyB0byBhZGRfb3JfbWFya19leHByLgoKMjAwNy0xMC0zMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzMxNTA3CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHB1c2hzZl9yZXg2NCk6IFVzZSBYIGluc3RlYWQgb2YgPCBjb25zdHJhaW50cwoJZm9yIHRoZSBmaXJzdCBwdXNoX29wZXJhbmQuCgoyMDA3LTEwLTMxICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3BhaXJlZC5tZCAoc21pbnYyc2YzLCBzbWF4djJzZjMsIHJlZHVjX3NtYXhfdjJzZiwKCXJlZHVjX3NtaW5fdjJzZiB2ZWNfaW50ZXJsZWF2ZV9oaWdodjJzZiwgdmVjX2ludGVybGVhdmVfbG93djJzZiwKCXZlY19leHRyYWN0X2V2ZW52MnNmLCB2ZWNfZXh0cmFjdF9vZGR2MnNmLCByZWR1Y19zcGx1c192MnNmLAoJbW92bWlzYWxpZ252MnNmLCB2Y29uZHYyc2YpOiBOZXcuCgkoVU5TUEVDX0lOVEVSSElfVjJTRiwgVU5TUEVDX0lOVEVSTE9fVjJTRiwgVU5TUEVDX0VYVEVWRU5fVjJTRiwKCVVOU1BFQ19FWFRPRERfVjJTRik6IERlZmluZSBuZXcgY29uc3RhbnRzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocGFpcmVkX2V4cGFuZF92ZWN0b3JfbW92ZSwKCXBhaXJlZF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIpOiBOZXcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAoX19QQUlSRURfXyk6IEFkZCBuZXcgYnVpbHRpbl9kZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHBhaXJlZF9leHBhbmRfdmVjdG9yX21vdmUsCglwYWlyZWRfZW1pdF92ZWN0b3JfY29uZF9leHByLCBwYWlyZWRfZW1pdF92ZWN0b3JfY29tcGFyZSk6CglOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvcnM2MDAwLzc1MGNsLmggKEFTTV9DUFVfU1BFQyk6IFBhc3MgZG93biAtbTc1MGNsIG9wdGlvbi4KCjIwMDctMTAtMzEgIFNlYmFzdGlhbiBQb3AgIDxzZWJhc3RpYW4ucG9wQGFtZC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzIzNzcKCSogdHJlZS1kYXRhLXJlZi5jIChjb21wdXRlX292ZXJsYXBfc3RlcHNfZm9yX2FmZmluZV91bml2YXIpOiBNYWtlIGl0Cgl3b3JrIGFsc28gZm9yIHVua25vd24gbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCgkoYW5hbHl6ZV9zdWJzY3JpcHRfYWZmaW5lX2FmZmluZSk6IENsZWFuIHVwLiAgRG9uJ3QgZmFpbCB3aGVuIHRoZSAKCW51bWJlciBvZiBpdGVyYXRpb25zIGlzIG5vdCBrbm93bi4KCjIwMDctMTAtMzEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMzNzc5CgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXZfMSk6IE1ha2Ugc3VyZSB0byBub3QgaW50cm9kdWNlCgluZXcgdW5kZWZpbmVkIGludGVnZXIgb3ZlcmZsb3cuCgkoZm9sZF9iaW5hcnkpOiBBdm9pZCB1c2VsZXNzIGNvbnZlcnNpb24uCgoyMDA3LTEwLTMxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJUFIgdGFyZ2V0LzMzOTQ4CgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19mcHJfcmV0dXJuX2ZpZWxkcyk6IEZpeCBTQ0FMQVJfVFlQRV9QIGNoZWNrLgoKMjAwNy0xMC0zMSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm9wdDogUmVuYW1lIC1tZGZwIG9wdGlvbiB0byAtbWhhcmQtZGZwLgoKCSogY29uZmlnL3MzOTAvczM5MC5jOiAob3ZlcnJpZGVfb3B0aW9ucyk6IFJlcGxhY2UKCS1taGFyZC1kZnAvLW1zb2Z0LWRmcCB3aXRoIC1taGFyZC1kZnAvLW1uby1oYXJkLWRmcC4KCSogY29uZmlnL3MzOTAvczM5MC5vcHQ6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmg6IEFkZCBNQVNLX0hBUkRfREZQIHRvIHRoZSBUQVJHRVRfREVGQVVMVAoJZGVmaW5pdGlvbi4KCjIwMDctMTAtMzAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogdHJlZS1zc2EuYyAoZXhlY3V0ZV91cGRhdGVfYWRkcmVzc2VzX3Rha2VuKTogSW5pdGlhbGl6ZSB1cGRhdGVfdm9wcy4KCjIwMDctMTAtMzAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSk6IEFkZCAtZmRjZSBhbmQgLWZkc2UgdG8gbGlzdCBvZgoJb3B0aW1pemF0aW9uIG9wdGlvbnMuCgkoT3B0aW1pemUgT3B0aW9ucyk6IEFkZCAtZmRjZSBhbmQgLWZkc2UgdG8gdGhlIGxpc3Qgb2Ygb3B0aW1pemF0aW9ucwoJZW5hYmxlZCBieSAtTy4gIERvY3VtZW50IC1mZGNlIGFuZCAtZmRzZS4KCjIwMDctMTAtMzAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMzcwOQoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KTogSWYgb25lIGFyZ3VtZW50IGlzIENPTVBPVU5EX0VYUFIsCgljb252ZXJ0IHNlY29uZCBvcGVyYW5kIG9mIENPTVBPVU5EX0VYUFIgdG8gdGhlIG9yaWdpbmFsIHR5cGUgb2YKCXRoYXQgYXJndW1lbnQuCgoyMDA3LTEwLTMwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmFyc19mb3Jfb2Zmc2V0KTogRml4IGV4aXQgdGVzdAoJb2YgbG9vcCBhZGRpbmcgU0ZUcyBhcyB2aXJ0dWFsIG9wZXJhbmRzLgoKMjAwNy0xMC0zMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKGRzZS5vKTogQWRkICQoT1BUQUJTX0gpIGFuZCAkKFJFQ09HX0gpIGRlcGVuZGVuY2llcy4KCjIwMDctMTAtMjkgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI4OTMKCSogdHJlZS12ZWN0b3JpemUuYyAodmVjdF9jYW5fZm9yY2VfZHJfYWxpZ25tZW50X3ApOiBDaGVjawoJU1RBQ0tfQk9VTkRBUlkgaW5zdGVhZCBvZiBQUkVGRVJSRURfU1RBQ0tfQk9VTkRBUlkuCgoyMDA3LTEwLTI5ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJKiBsb25nbG9uZy5oIChhZGRfc3NhYWFhKTogU3VwcG9ydCBJbnRlbCBhc20gc3ludGF4IGluIGkzODYgYW5kCgl4ODZfNjQgdmVyc2lvbnMuCgkoc3ViX2RkbW1zcyk6IExpa2V3aXNlLgoJKHVtdWxfcHBtbSk6IExpa2V3aXNlLgoJKHVkaXZfcXJubmQpOiBMaWtld2lzZS4KCjIwMDctMTAtMjkgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCVBSIHRlc3RzdWl0ZS8yNDg0MQoJKiBkb2Mvc291cmNlYnVpbGQudGV4aSAoVGVzdCBEaXJlY3RpdmVzKTogRG9jdW1lbnQgdGhhdCBkZy1yZXF1aXJlCglkaXJlY3RpdmVzIG11c3QgY29tZSBiZWZvcmUgZGctYWRkaXRpb25hbC1zb3VyY2VzLgoKMjAwNy0xMC0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM3MjMKCSogYy1naW1wbGlmeS5jIChjX2dpbXBsaWZ5X2V4cHIpOiBPcHRpbWl6ZSBJTklUX0VYUFIgb3IKCU1PRElGWV9FWFBSIHdpdGggbm9uLWFkZHJlc3NhYmxlIENPTVBPVU5EX0xJVEVSQUxfRVhQUiBhcyBzb3VyY2UuCgoyMDA3LTEwLTI5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM2MTQKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfaW5pdF9jb25zdHJ1Y3Rvcik6IEdpbXBsaWZ5IHZlY3RvciBjb25zdHJ1Y3RvcnMKCWlmIHRoZXkgY2FuJ3QgYmUgcmVkdWNlZCB0byBWRUNUT1JfQ1NUcyBhbmQgYXJlbid0IGxlZ2l0aW1hdGUKCWluaXRpYWxpemVyIGNvbnN0YW50cy4KCjIwMDctMTAtMjkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzg3MAoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmFyc19mb3Jfb2Zmc2V0KTogUmVtb3ZlIG1wdF92YXJzIHBhcmFtZXRlci4KCShhZGRfdmlydHVhbF9vcGVyYW5kKTogRG8gbm90IHJlY3Vyc2UgaW50byBNUFRzIGxvb2tpbmcgZm9yIHBvaW50ZWQtdG8KCVNGVHMuCgoyMDA3LTEwLTI5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogRXhjaGFuZ2Ugc3RvcmVfY29weV9wcm9wCgl3aXRoIGNvcHlfcHJvcC4KCSogdHJlZS1wYXNzLmggKHBhc3Nfc3RvcmVfY29weV9wcm9wKTogUmVtb3ZlLgoJKiB0cmVlLXNzYS1jb3B5LmMgKGRvX3N0b3JlX2NvcHlfcHJvcCk6IFJlbW92ZS4KCShzdG10X21heV9nZW5lcmF0ZS1jb3B5KTogRG8gbm90IGhhbmRsZSBzdG9yZV9jb3B5X3Byb3AuCgkoZ2V0X2NvcHlfb2ZfdmFsKTogTGlrZXdpc2UuCgkoc2V0X2NvcHlfb2ZfdmFsKTogTGlrZXdpc2UuCgkoY29weV9wcm9wX3Zpc2l0X2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCShjb3B5X3Byb3BfdmlzaXRfc3RtdCk6IExpa2V3aXNlLgoJKGNvcHlfcHJvcF92aXNpdF9waGlfbm9kZSk6IExpa2V3aXNlLgoJKGluaXRfY29weV9wcm9wKTogTGlrZXdpc2UuCgkoZXhlY3V0ZV9jb3B5X3Byb3ApOiBMaWtld2lzZS4KCShkb19jb3B5X3Byb3ApOiBSZW1vdmUuCgkoZ2F0ZV9zdG9yZV9jb3B5X3Byb3ApOiBMaWtld2lzZS4KCShzdG9yZV9jb3B5X3Byb3ApOiBMaWtld2lzZS4KCShwYXNzX3N0b3JlX2NvcHlfcHJvcCk6IExpa2V3aXNlLgoJKHBhc3NfY29weV9wcm9wKTogQ2FsbCBleGVjdXRlX2NvcHlfcHJvcC4KCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IERvIG5vdCBzZXQgZmxhZ190cmVlX3N0b3JlX2NvcHlfcHJvcC4KCSogY29tbW9uLm9wdCAoZnRyZWUtc3RvcmUtY29weS1wcm9wKTogTWFyayBvYnNvbGV0ZS4KCSogZG9jL2ludm9rZS50ZXhpIChmdHJlZS1zdG9yZS1jb3B5LXByb3ApOiBSZW1vdmUgZG9jdW1lbnRhdGlvbi4KCjIwMDctMTAtMjkgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBpZmN2dC5jIChub2NlX2Nhbl9zdG9yZV9zcGVjdWxhdGVfcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogQ2FsbCBpdC4KCShpZl9jb252ZXJ0KTogUmVtb3ZlIHJlY29tcHV0ZV9kb21pbmFuY2UgcGFyYW1ldGVyLiAgQ2hhbmdlIGFsbAoJY2FsbGVycy4KCjIwMDctMTAtMjkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoZ2V0X3N1YnZhcl9hdCk6IFVzZSBiaW5hcnkgc2VhcmNoLgoJKGdldF9maXJzdF9vdmVybGFwcGluZ19zdWJ2YXIpOiBOZXcgZnVuY3Rpb24gdG8gYmluYXJ5IHNlYXJjaAoJZm9yIHRoZSBmaXJzdCBvdmVybGFwcGluZyBzdWJ2YXIuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF92YXJzX2Zvcl9vZmZzZXQpOiBTdHJpcCBkb3duIHRvCglqdXN0IGhhbmRsZSBhZGRpbmcgc3VidmFycyBmb3IgYSBwb2ludGVkLXRvIHN1YnZhci4gIE9wdGltaXplCglhbmQgdXNlIGdldF9maXJzdF9vdmVybGFwcGluZ19zdWJ2YXIuCgkoYWRkX3ZhcnNfZm9yX2JpdG1hcCk6IEZvbGQgaW50byBzaW5nbGUgY2FsbGVyLgoJKGFkZF92aXJ0dWFsX29wZXJhbmQpOiBTdHJlYW1saW5lLCBpbmhlcml0IGFkZF92YXJzX2Zvcl9iaXRtYXAKCWFuZCBub24gcG9pbnRlZC10byBiaXRzIG9mIGFkZF92YXJzX2Zvcl9vZmZzZXQuCgoyMDA3LTEwLTI5ICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+IAoKCSogbW9kdWxvLXNjaGVkLmMgKHNtc19zY2hlZHVsZSk6IEFkZCBERl9VRF9DSEFJTiBwcm9ibGVtLgoKMjAwNy0xMC0yOSAgUmF6eWEgTGFkZWxza3kgIDxyYXp5YUBpbC5pYm0uY29tPgoJICAgIFpkZW5layBEdm9yYWsgIDxvb2tAdWN3LmN6PgoKCU9NUF9BVE9NSUMgQ2hhbmdlcywKCXJlZHVjdGlvbiBzdXBwb3J0IGZvciBhdXRvbWF0aWMgcGFyYWxsZWxpemF0aW9uLgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBBZGQgY2FzZXMgZm9yIE9NUF9BVE9NSUNfTE9BRCwKCU9NUF9BVE9NSUNfU1RPUkUuCgkqIE1ha2VmaWxlLmluOiBBZGQgZGVwZW5kZW5jaWVzIHRvIGV4cHIubywgdHJlZS1wYXJsb29wcy5vLCBvbXAtbG93Lm8KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBBZGQgT01QX0FUT01JQ19MT0FECglhbmQgT01QX0FUT01JQ19TVE9SRS4KCSogdHJlZS5oIChPTVBfRElSRUNUSVZFX1ApOiBBZGQgT01QX0FUT01JQ19MT0FELCBPTVBfQVRPTUlDX1NUT1JFLgoJKiBnaW1wbGUtbG93LmMgKGxvd2VyX3N0bXQpOiBTYW1lLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9leHByKTogU2FtZS4KCShnaW1wbGlmeV9vbXBfYXRvbWljX2ZldGNoX29wLCBnaW1wbGlmeV9vbXBfYXRvbWljX3BpcGVsaW5lLAoJZ2ltcGxpZnlfb21wX2F0b21pY19tdXRleCk6IFJlbW92ZS4KCShnaW1wbGlmeV9vbXBfYXRvbWljKTogQ2hhbmdlIGl0IHRvIHNpbXBseSBnaW1wbGlmeSB0aGUKCXN0YXRlbWVudCBpbnN0ZWFkIG9mIGV4cGFuZGluZyBpdC4KCSogb21wLWxvdy5jOiBBZGQgaW5jbHVkZXMgdG8gb3B0YWJzLmgsIGNmZ2xvb3AuaC4KCShleHBhbmRfb21wX2F0b21pYywgZXhwYW5kX29tcF9hdG9taWNfcGlwZWxpbmUsCglnb2Ffc3RhYmlsaXplX2V4cHIsIGV4cGFuZF9vbXBfYXRvbWljX211dGV4LAoJZXhwYW5kX29tcF9hdG9taWNfZmV0Y2hfb3ApOiBOZXcgZnVuY3Rpb25zIHRvIGltcGxlbWVudAoJZXhwYW5zaW9uIG9mIE9NUF9BVE9NSUMuCgkoZXhwYW5kX29tcCwgYnVpbGRfb21wX3JlZ2lvbnNfMSk6IEFkZCBzdXBwb3J0IGZvcgoJT01QX0FUT01JQ19MT0FEL09NUF9BVE9NSUNfU1RPUkUuCgkqIHRyZWUtY2ZnLmMgKG1ha2VfZWRnZXMpOiBhZGQgY2FzZSBmb3IgT01QX0FUT01JQ19MT0FELAoJT01QX0FUT01JQ19TVE9SRS4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX3N0bXQpOiBBZGQgT01QX0FUT01JQ19MT0FELAoJT01QX0FUT01JQ19TVE9SRS4KCSogdHJlZS1wYXJsb29wcy5jOiBhZGQgaW5jbHVkZSB0byB0cmVlLXZlY3Rvcml6ZXIuaC4KCShyZWR1Y3Rpb25faW5mbyk6IE5ldyBzdHJ1Y3R1cmUgZm9yIHJlZHVjdGlvbi4KCShyZWR1Y3Rpb25fbGlzdCk6IE5ldyBsaXN0IHRvIHJlcHJlc2VudCBsaXN0IG9mIHJlZHVjdGlvbnMgcGVyIGxvb3AuCgkoc3RydWN0IGRhdGFfYXJnKTogTmV3IGhlbHBlciBzdHJ1Y3R1cmUgZm9yIHJlZHVjdGlvbi4KCShyZWR1Y3Rpb25faW5mb19oYXNoLCByZWR1Y3Rpb25faW5mb19lcSwgcmVkdWN0aW9uX3BoaSwKCWluaXRpYWxpemVfcmVkdWN0aW9ucywgY3JlYXRlX2NhbGxfZm9yX3JlZHVjdGlvbiwKCWNyZWF0ZV9waGlfZm9yX2xvY2FsX3Jlc3VsdCwgY3JlYXRlX2NhbGxfZm9yX3JlZHVjdGlvbl8xLAoJY3JlYXRlX2xvYWRzX2Zvcl9yZWR1Y3Rpb25zLCBjcmVhdGVfZmluYWxfbG9hZHNfZm9yX3JlZHVjdGlvbik6CglOZXcgZnVuY3Rpb25zLgoJKGxvb3BfcGFyYWxsZWxfcCk6IElkZW50aWZ5IHJlZHVjdGlvbnMsIGFkZCByZWR1Y3Rpb25fbGlzdCBwYXJhbWV0ZXIuCgkoc2VwYXJhdGVfZGVjbHNfaW5fbG9vcF9uYW1lKTogU3VwcG9ydCByZWR1Y3Rpb24gdmFyaWFibGVzLgoJKHNlcGFyYXRlX2RlY2xzX2luX2xvb3ApOiBBZGQgcmVkdWN0aW9uX2xpc3QgYW5kIGxkX3N0X2RhdGEgYXJndW1lbnRzLAoJY2FsbCBjcmVhdGVfbG9hZHNfZm9yX3JlZHVjdGlvbiBmb3IgZWFjaCByZWR1Y3Rpb24uCgkoY2Fub25pY2FsaXplX2xvb3BfaXZzKTogSWRlbnRpZnkgcmVkdWN0aW9ucywgYWRkIHJlZHVjdGlvbl9saXN0CglwYXJhbWV0ZXIuCgkodHJhbnNmb3JtX3RvX2V4aXRfZmlyc3RfbG9vcCk6IEFkZCByZWR1Y3Rpb24gc3VwcG9ydCwgYWRkCglyZWR1Y3Rpb25fbGlzdCBwYXJhbWV0ZXIuCgkoZ2VuX3BhcmFsbGVsX2xvb3ApOiBBZGQgcmVkdWN0aW9uX2xpc3QgcGFyYW1ldGVyLiAgQWRkIGNhbGwKCXNlcGFyYXRlX2RlY2xzX2luX2xvb3Agd2l0aAoJdGhlIG5ldyBhcmd1bWVudC4gIFRyYXZlcnNlIHJlZHVjdGlvbnMgYW5kIGNhbGwKCWluaXRpYWxpemVfcmVkdWN0aW9ucywgY3JlYXRlX2NhbGxfZm9yX3JlZHVjdGlvbi4KCShwYXJhbGxlbGl6ZV9sb29wcyk6IENyZWF0ZSBhbmQgZGVsZXRlIHRoZSByZWR1Y3Rpb24gbGlzdC4KCShhZGRfZmllbGRfZm9yX25hbWUpOiBDaGFuZ2UgdXNlIG9mIGRhdGEgcGFyYW1ldGVyLiAgQWRkIGZpZWxkcyBmb3IKCXJlZHVjdGlvbnMuCgkqIHRyZWUtdmVjdG9yaXplci5oICh2ZWN0X2FuYWx5emVfbG9vcF9mb3JtKTogQWRkIGRlY2xhcmF0aW9uLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfbG9vcF9mb3JtKTogZXhwb3J0IGl0LgoJKiB0cmVlLmRlZjogQWRkIGRlZmluaXRpb25zIGZvciBPTVBfQVRPTUlDX0xPQUQsIE9NUF9BVE9NSUNfU1RPUkUuCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogYWRkIGNhc2VzIGZvcgoJT01QX0FUT01JQ19MT0FELCBPTVBfQVRPTUlDX1NUT1JFLgoJKiB0cmVlLWNmZy5jIChtYWtlX2VkZ2VzKTogQWRkIE9NUF9BVE9NSUNfTE9BRCwgT01QX0FUT01JQ19TVE9SRS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2FkZHJfZGVyZWZlcmVuY2Vfb3BlcmFuZHMpOgoJTmV3IGZ1bmN0aW9uLiAgU3Vicm91dGluZSBvZiBnZXRfaW5kaXJlY3RfcmVmX29wZXJhbmRzLgoJKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOiBDYWxsIGdldF9hZGRyX2RlcmVmZXJlbmNlX29wZXJhbmRzLgoJKGdldF9leHByX29wZXJhbmRzKTogU3VwcG9ydCBPTVBfQVRPTUlDX0xPQUQsIE9NUF9BVE9NSUNfU1RPUkUuCgoKMjAwNy0xMC0yOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLmM6IEluY2x1ZGUgZGYuaC4KCShjcmlzX2FkZHJlc3NfY29zdCk6IEFkZCBnY2NfYXNzZXJ0IGZvciBjYW5vbmljYWxpemF0aW9uCglhc3N1bXB0aW9ucy4gIEZvciBQTFVTIHdpdGggTVVMVCBvciByZWdpc3RlciwgY29ycmVjdAoJdGVzdCBmb3IgcmVnaXN0ZXIgaW4gb3RoZXIgYXJtLiAgVHdlYWsgY29tbWVudHMuCgoyMDA3LTEwLTI4ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmFyc19mb3Jfb2Zmc2V0KTogQWRkIHBhcmFtZXRlcgoJdGVsbGluZyBpZiB0aGUgdmFyIGlzIHRvIGJlIHRyZWF0ZWQgYXMgcG9pbnRzLXRvIGxvY2F0aW9uLgoJKGFkZF92YXJzX2Zvcl9iaXRtYXApOiBQYXNzIHRydWUgdG8gYWRkX3ZhcnNfZm9yX29mZnNldC4KCShhZGRfdmlydHVhbF9vcGVyYW5kKTogT25seSByZWN1cnNlIGludG8gTVBUcyBpZiBhbGlhc2VzCglpcyBmcm9tIGEgTk1ULgoKMjAwNy0xMC0yOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYWRkX3ZhcnNfZm9yX29mZnNldCk6IENsZWFuIGFuZCBzcGVlZCB1cC4KCShhZGRfdmFyc19mb3JfYml0bWFwKTogRG8gbm90IHJlY3Vyc2UgZnVydGhlci4gIE9ubHkgYWRkIHZhcnMKCWZvciBwb2ludGVkLXRvIFNGVHMuCgkoYWRkX3ZpcnR1YWxfb3BlcmFuZCk6IFJlLWluc3RhbnRpYXRlIGxvb3AgdG8gYWRkIG9wZXJhbmRzIGZvcgoJYWxpYXNlcy4gIFJlY3Vyc2UgaW50byBNUFRzLgoJKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOiBJZiB3ZSBmYWxsIGJhY2sgdG8gdXNlIGEgcG9pbnRlcnMKCVNNVCwgbWFrZSBzdXJlIHRvIG5vdCBwcnVuZSBiYXNlZCBvbiB0aGUgYWNjZXNzIG9mZnNldCBhbmQgc2l6ZS4KCjIwMDctMTAtMjggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdC8zMzU4OQoJKiB0cmVlLW91dG9mLXNzYS5jIChyZXdyaXRlX3RyZWVzKTogSWYgdGhlIHN0YXRlbWVudCBjaGFuZ2VkLCBjbGVhbnVwCgl0aGUgZWggaW5mb3JtYXRpb24gb24gdGhlIHN0YXRlbWVudC4KCjIwMDctMTAtMjggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtZmxvdy5oIChzdWJ2YXJfdCk6IE1ha2UgaXQgYSBWRUMuCgkoc3RydWN0IHN1YnZhcik6IFJlbW92ZS4KCShzdHJ1Y3QgdmFyX2Fubl9kKTogVXNlIFZFQyh0cmVlLGdjKSB0byBzdG9yZSBzdWJ2YXJzLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGdldF9zdWJ2YXJfYXQpOiBBZGp1c3QgaXRlcmF0b3JzIG92ZXIKCXZhcmlhYmxlIHN1YnZhcnMuCgkqIHRyZWUtaW50by1zc2EuYyAobWFya19zeW1fZm9yX3JlbmFtaW5nKTogTGlrZXdpc2UuCgkqIHRyZWUtbnJ2LmMgKGRlc3Rfc2FmZV9mb3JfbnJ2X3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAobWFya19hbGlhc2VzX2NhbGxfY2xvYmJlcmVkKTogTGlrZXdpc2UuCgkoc2V0X2luaXRpYWxfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKHNldHVwX3BvaW50ZXJzX2FuZF9hZGRyZXNzYWJsZXMpOiBMaWtld2lzZS4KCShuZXdfdHlwZV9hbGlhcyk6IExpa2V3aXNlLgoJKGNyZWF0ZV9vdmVybGFwX3ZhcmlhYmxlc19mb3IpOiBMaWtld2lzZS4KCSogdHJlZS1kZmEuYyAoZHVtcF9zdWJ2YXJzX2Zvcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmFyc19mb3Jfb2Zmc2V0KTogTGlrZXdpc2UuCgkoZ2V0X2V4cHJfb3BlcmFuZHMpOiBMaWtld2lzZS4KCShhZGRfdG9fYWRkcmVzc2FibGVfc2V0KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHNldF91aWRzX2luX3B0c2V0KTogTGlrZXdpc2UuCgoyMDA3LTEwLTI4ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzOTIwCgkqIHRyZWUtaWYtY29udi5jICh0cmVlX2lmX2NvbnZlcnNpb24pOiBGb3JjZSBwcmVkaWNhdGUgb2Ygc2luZ2xlCglzdWNjZXNzb3IgYmIgdG8gdHJ1ZSB3aGVuIHByZWRlY2Vzc29yIGJiIGhhcyBOVUxMIHByZWRpY2F0ZS4KCShmaW5kX3BoaV9yZXBsYWNlbWVudF9jb25kaXRpb24pOiBBc3NlcnQgdGhhdCB0bXBfY29uZCBpcyBub24tbnVsbC4KCjIwMDctMTAtMjggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEFkZCBjb21iaW5lciBwYXR0ZXJucyBmb3IgREltb2RlIGV4dGVuc2lvbnMKCW9mIEhJbW9kZSBhbmQgUUltb2RlIHRydW5jYXRpb25zLiAgUmVmb3JtYXQgSEltb2RlIDwtIFFJbW9kZSBwYXR0ZXJuCglmb3IgY29uc2lzdGVuY3kuCgoyMDA3LTEwLTI4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJUFIgdGFyZ2V0LzMzODk1CgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfZHdhcmZfZHRwcmVsKTogQWRkIEFUVFJJQlVURV9VTlVTRUQuCgoyMDA3LTEwLTI4ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogZGNlLmMgKGRlbGV0ZV91bm1hcmtlZF9pbnNucyk6IEp1c3QgZGVsZXRlIHRoZSBSRVRWQUwgYW5kCglMSUJDQUxMIG5vdGVzIGlmIHRoZXkgYXJlIGFib3V0IHRvIGJlIG1vdmVkIHRvIHRoZSBzYW1lIGluc24uCgoyMDA3LTEwLTI3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM4NzAKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYWRkX3ZhcnNfZm9yX29mZnNldCk6IFJlZHVjZSBjb2RlCglkdXBsaWNhdGlvbi4gIFJlbW92ZSByZWR1bmRhbnQgY2FsbCB0byBhY2Nlc3NfY2FuX3RvdWNoX3ZhcmlhYmxlLgoJKGFkZF92YXJzX2Zvcl9iaXRtYXApOiBOZXcgaGVscGVyIGZvciByZWN1cnNpbmcgb3ZlciBNUFQgY29udGVudHMuCgkoYWRkX3ZpcnR1YWxfb3BlcmFuZCk6IFVzZSBpdC4KCjIwMDctMTAtMjYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgZm9ydHJhbi8zMTYwOAoJKiBwYS5oIChBU01fUE5fRk9STUFUKTogRGVsZXRlIGRlZmluZS4KCjIwMDctMTAtMjYgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSwgb3B0aW1pemF0aW9ucyk6IFJlbW92ZQoJLWZib3VuZHMtY2hlY2suICBBZGQgLWZhc3NvY2lhdGl2ZS1tYXRoLCAtZnJlY2lwcm9jYWwtbWF0aCwKCS1mdHJlZS12cnAgYW5kIC1mdW5pdC1hdC1hLXRpbWUuICBDaGFuZ2UgLWZuby1zcGxpdC13aWRlLXR5cGVzIHRvCgktZnNwbGl0LXdpZGUtdHlwZXMgdG8gbWF0Y2ggbGF0ZXIgZW50cnkuICBCcmVhayB1cCBhIGxvbmcgbGluZS4KCShPcHRpb24gU3VtbWFyeSwgY29kZSBnZW4gb3B0aW9ucykgIEFkZCAtZm5vLXN0YWNrLWxpbWl0LiAgQWRkCgltaXNzaW5nIEBnb2wgdG8gdGhlIGVuZCBvZiBhIGxpbmUuCgkoT3B0aW1pemF0aW9uIE9wdGlvbnMpOiBSZW1vdmUgLWZib3VuZHMtY2hlY2ssIHdoaWNoIGlzIGFsc28KCWRvY3VtZW50ZWQgdW5kZXIgQ29kZSBHZW5lcmF0aW9uIE9wdGlvbnMuICBSZW1vdmUgPW4gZnJvbQoJaW5kZXggZW50cnkgZm9yIC1mdHJlZS1wYXJhbGxlbGl6ZS1sb29wcy4gIENoYW5nZSAtZm5vLWNwcm9wLXJlZ2lzdGVycwoJdG8gLWZjcHJvcC1yZWdpc3RlcnMgdG8gbWF0Y2ggb3RoZXIgb3B0aW9ucywgYW5kIHNheSB3aGVuIGl0IGlzCgllbmFibGVkIHJhdGhlciB0aGFuIGRpc2FibGVkLiAgUmVtb3ZlIGV4dHJhIGluZGV4IGVudHJ5IGZvcgoJLWZuby1jeC1saW1pdGVkLXJhbmdlLiAgQWRkIGluZGV4IGVudHJpZXMgZm9yIC1mc3RhY2stcHJvdGVjdG9yCglhbmQgLWZzdGFjay1wcm90ZWN0b3ItYWxsLgoJKENvZGUgR2VuIE9wdGlvbnMpOiBBZGQgaW5kZXggZW50cnkgZm9yIC1mdGxzLW1vZGVsLgoKMjAwNy0xMC0yNiAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX09TX3Rhc2tfZnVuY3Rpb25fcCk6IEFkZCBuZXcgZnVuY3Rpb24uCgkoYXZyX3JlZ3NfdG9fc2F2ZSk6IEhhbmRsZSBmdW5jdGlvbnMgd2l0aCAnT1NfdGFzaycgYXR0cmlidXRlLgoJKGF2cl9zaW1wbGVfZXBpbG9ndWUsIGV4cGFuZF9wcm9sb2d1ZSwgYXZyX2FzbV9mdW5jdGlvbl9lbmRfcHJvbG9ndWUsCglleHBhbmRfZXBpbG9ndWUsIG91dHB1dF9tb3ZoaSk6IERvbid0IGhhbmRsZSAnbWFpbicgZnVuY3Rpb24uCgkoYXZyX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCAnT1NfdGFzaycgZnVuY3Rpb24gYXR0cmlidXRlLgoJKiBjb25maWcvYXZyL2F2ci5oIChtYWNoaW5lX2Z1bmN0aW9uKTogUmVtb3ZlICdpc19tYWluJyBmaWVsZCwgYWRkCgknaXNfT1NfdGFzaycgZmllbGQuCgkqIGNvbmZpZy9hdnIvYXZyLm1kIChyZXR1cm5fZnJvbV9tYWluX2VwaWxvZ3VlKTogUmVtb3ZlIGluc24uCgkocmV0dXJuX2Zyb21fZXBpbG9ndWUsIHJldHVybl9mcm9tX2ludGVycnVwdF9lcGlsb2d1ZSk6IERvbid0IGhhbmRsZQoJJ21haW4nIGZ1bmN0aW9uLgoJKiBjb25maWcvYXZyL2F2ci5vcHQgKG1pbml0LXN0YWNrKTogUmVtb3ZlLgoKMjAwNy0xMC0yNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUtbmVzdGVkLmMgKGdldF90cmFtcG9saW5lX3R5cGUpOiBGaXggdGhpbmtvLgoKMjAwNy0xMC0yNiAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJUFIgYysrLzMzNjAxCgkqIHRyZWUuYyAoYnVpbGRfb2Zmc2V0X3R5cGUpOiBCdWlsZCBjYW5vbmljYWwgdHlwZSBiYXNlZCBvbiB0aGUKCVRZUEVfTUFJTl9WQVJJQU5UIG9mIHRoZSBiYXNlIHR5cGUuCgoyMDA3LTEwLTI2ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcmVvcmcuYyAoZW1pdF9kZWxheV9zZXF1ZW5jZSk6IE1vdmUgaW5zbiBsb2NhdG9yIGZyb20gdGhlCglmaXJzdCBpbnNuIHRvIHRoZSBzZXF1ZW5jZS4KCjIwMDctMTAtMjYgIFNhbXVlbCBUYXJkaWV1ICA8c2FtQHJmYzExNDkubmV0PgoKCSogaXBhLXB1cmUtY29uc3QuYyAoY2hlY2tfZGVjbCk6IFJldHVybiBpbW1lZGlhdGVseSB3aGVuCglwdXJlX2NvbnN0X3N0YXRlIGhhcyBiZWVuIHNldCB0byBJUEFfTkVJVEhFUi4KCjIwMDctMTAtMjUgIElyYSBSb3NlbiAgPGlyYXJAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzgzMwoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfZGF0YV9yZWZzKTogVXNlIFBPSU5URVJfUExVU19FWFBSCglhbmQgY29udmVydCBpbml0IHRvIHNpemV0eXBlIGluIGlubmVyX2Jhc2UgY29uc3RydWN0aW9uLgoKMjAwNy0xMC0yNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1mbG93LmggKG1lbV9zeW1fc3RhdHMpOiBSZW1vdmUuCgkoZHVtcF9tZW1fc3ltX3N0YXRzX2Zvcl92YXIpOiBEZWNsYXJlLgoJKiB0cmVlLWRmYS5jIChkdW1wX3ZhcmlhYmxlKTogQ2FsbCBkdW1wX21lbV9zeW1fc3RhdHNfZm9yX3Zhci4KCShtZW1fc3ltX3N0YXRzKTogTW92ZSAuLi4KCSogdHJlZS1zc2EtYWxpYXMuYyAobWVtX3N5bV9zdGF0cyk6IC4uLiBoZXJlIGFuZCBtYWtlIGl0IHN0YXRpYy4KCShtZW1fc3ltX3Njb3JlKTogUmVuYW1lIGZyb20gLi4uCgkocHNjb3JlKTogLi4uIHRoaXMuICBSZW1vdmUuCgkoZHVtcF9tZW1fc3ltX3N0YXRzX2Zvcl92YXIpOiBOZXcgZnVuY3Rpb24uICBEdW1wIHRoZSBzY29yZSwgYnV0Cglub3QgdGhlIGZyZXF1ZW5jaWVzLgoJKGNvbXBhcmVfbXBfaW5mb19lbnRyaWVzKTogTWFrZSBzb3J0IHN0YWJsZSBieSBkaXNhbWJpZ3VhdGluZwoJb24gREVDTF9VSUQuCgoyMDA3LTEwLTI1ICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM4NjYKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0b3JpemFibGVfc3RvcmUpOiBDaGVjayBvcGVyYW5kcyBvZiBhbGwKCXRoZSBzdG10cyBpbiB0aGUgZ3JvdXAgb2Ygc3RyaWRlZCBhY2Nlc3Nlcy4gR2V0IGRlZiBzdG10IHR5cGUgZm9yIGVhY2gKCXN0b3JlIGluIHRoZSBncm91cCBhbmQgcGFzcyBpdCB0byB2ZWN0X2dldF92ZWNfZGVmX2Zvcl9zdG10X2NvcHkgKCkuCgoyMDA3LTEwLTI1ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgKFkwKTogUmVuYW1lIHJlZ2lzdGVyIGNvbnN0cmFpbnQgdG8gWXouCgkoWXQpOiBSZW5hbWUgcmVnaXN0ZXIgY29uc3RyYWludCB0byBZMi4KCSogY29uZmlnL2kzODYvc3NlLm1kOiBVc2UgcmVuYW1lZCByZWdpc3RlciBjb25zdHJhaW50cy4KCSogY29uZmlnL2kzODYvbW14Lm1kOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogRGl0dG8uCgoyMDA3LTEwLTI1ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqZHVtbXlfZXh0ZW5kc2ZkZjIpOiBGaXggb3BlcmFuZCAxIGNvbnN0cmFpbnQuCgoyMDA3LTEwLTI0ICBDaGFvLXlpbmcgRnUgIDxmdUBtaXBzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChiYXNlX3R5cGVfZGllKTogVXNlIERXX0FURV91bnNpZ25lZF9maXhlZCBvcgoJRFdfQVRFX3NpZ25lZF9maXhlZCB0byBkZXNjcmliZSBGSVhFRF9QT0lOVF9UWVBFLgoKMjAwNy0xMC0yNCAgU2FtdWVsIFRhcmRpZXUgIDxzYW1AcmZjMTE0OS5uZXQ+CgkgICAgT2xnYSBHb2xvdmFuZXZza3kgPG9sZ2FAaWwuaWJtLmNvbT4KCQoJKiBpcGEtc3RydWN0LXJlb3JnLmMgKHJlcGxhY2VfZmllbGRfYWNjKTogTWFrZSBpdCBjbGVhciB0bwoJdGhlIGNvbXBpbGVyIHRoYXQgd3Iud3JhcCBhbmQgd3IuZG9tYWluIGFyZSBpbml0aWFsaXplZCBpbgoJYW55IGNhc2UuCgoyMDA3LTEwLTI0ICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCgkqIGlwYS1zdHJ1Y3QtcmVvcmcuYyAoc3VtX2NvdW50cyk6IFVzZSBIT1NUX1dJREVTVF9QUklOVF9ERUMKCXRvIHByaW50IGdjb3ZfdHlwZSB2YWx1ZXMuCgoyMDA3LTEwLTI0ICBFcmljIEIuIFdlZGRpbmd0b24gIDxld2VkZGluZ3RvbkBjc28uYXRtZWwuY29tPgoKCSogY29uZmlnL2F2ci9hdnIuaDogRG8gbm90IGluY2x1ZGUgcHJvZ21lbV9zZWN0aW9uIGRlZmluaXRpb24gd2hlbgoJYnVpbGRpbmcgd2l0aCBJTl9UQVJHRVRfTElCUy4KCjIwMDctMTAtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCglQUiB0YXJnZXQvMzM3NTUKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2xvX3N1bV9vZmZzZXQpOiBOZXcgc3RydWN0dXJlLgoJKG1pcHNfaGFzaF9iYXNlLCBtaXBzX2xvX3N1bV9vZmZzZXRfaGFzaCwgbWlwc19sb19zdW1fb2Zmc2V0X2VxKQoJKG1pcHNfbG9fc3VtX29mZnNldF9sb29rdXAsIG1pcHNfcmVjb3JkX2xvX3N1bSkKCShtaXBzX29ycGhhbmVkX2hpZ2hfcGFydF9wOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHNfYXZvaWRfaGF6YXJkKTogRG9uJ3QgY2hlY2sgSU5TTl9QIGhlcmUuCgkobWlwc19hdm9pZF9oYXphcmRzKTogUmVuYW1lIHRvLi4uCgkobWlwc19yZW9yZ19wcm9jZXNzX2luc25zKTogLi4udGhpcy4gIENvcGUgd2l0aAoJIVRBUkdFVF9FWFBMSUNJVF9SRUxPQ1MuICBEZWxldGUgb3JwaGFuZWQgaGlnaC1wYXJ0IHJlbG9jYXRpb25zLAoJb3IgdHVybiB0aGVtIGludG8gbm9wcy4KCShtaXBzX3Jlb3JnKTogUmVtb3ZlIFRBUkdFVF9FWFBMSUNJVF9SRUxPQ1MgY2hlY2sgZnJvbSBjYWxscyB0bwoJZGJyX3NjaGVkdWxlIGFuZCBtaXBzX2F2b2lkX2hhemFyZHMvbWlwc19yZW9yZ19wcm9jZXNzX2luc25zLgoJKG1pcHNfc2V0X21pcHMxNl9tb2RlKTogRG9uJ3Qgc2V0IGZsYWdfZGVsYXllZF9icmFuY2ggaGVyZS4KCShtaXBzX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgZmxhZ19kZWxheWVkX2JyYW5jaCB0byAwLgoKMjAwNy0xMC0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNT1ZFX01BWCk6IFVzZSBVTklUU19QRVJfV09SRCBhbmQgZGVzY3JpYmUKCU1JUFMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KCShNSVBTX01BWF9NT1ZFX0JZVEVTX1BFUl9MT09QX0lURVIpOiBOZXcgbWFjcm8uCgkoTUlQU19NQVhfTU9WRV9CWVRFU19TVFJBSUdIVCk6IExpa2V3aXNlLgoJKE1PVkVfUkFUSU8pOiBEZWZpbmUgdG8gTUlQU19NQVhfTU9WRV9CWVRFU19TVFJBSUdIVCAvIFVOSVRTX1BFUl9XT1JECglmb3IgdGFyZ2V0cyB3aXRoIG1vdm1lbXNpLgoJKE1PVkVfQllfUElFQ0VTX1ApOiBEZWZpbmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoTUFYX01PVkVfUkVHUywgTUFYX01PVkVfQllURVMpOiBEZWxldGUuCgkobWlwc19ibG9ja19tb3ZlX2xvb3ApOiBBZGQgYSBieXRlc19wZXJfaXRlciBhcmd1bWVudC4KCShtaXBzX2V4cGFuZF9ibG9ja19tb3ZlKTogVXNlIE1JUFNfTUFYX01PVkVfQllURVNfU1RSQUlHSFQuCglVcGRhdGUgY2FsbCB0byBtaXBzX2Jsb2NrX21vdmVfbG9vcC4KCjIwMDctMTAtMjQgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCglQUiBkZWJ1Zy8zMzg2OAoJKiB2YXItdHJhY2tpbmcuYyAodmFyaWFibGVfdW5pb24pOiBEb24ndCBicmVhayBhZnRlciBvbmUgbG9vcAoJaXRlcmF0aW9uIGJ1dCBvbmx5IHdoZW4gYSBkaWZmZXJlbmNlIGlzIGZvdW5kLgoJKGR1bXBfdmFyaWFibGUpOiBBbHNvIHByaW50IERFQ0xfVUlELgoKMjAwNy0xMC0yNCAgT2xnYSBHb2xvdmFuZXZza3kgIDxvbGdhQGlsLmlibS5jb20+CgoJKiBpcGEtdHlwZS1lc2NhcGUuaDogRXhwb3NlIGZ1bmN0aW9uCglpc19hcnJheV9hY2Nlc3NfdGhyb3VnaF9wb2ludGVyX2FuZF9pbmRleC4KCSogaXBhLXR5cGUtZXNjYXBlLmMKCShpc19hcnJheV9hY2Nlc3NfdGhyb3VnaF9wb2ludGVyX2FuZF9pbmRleCk6CglBZGQgdGhyZWUgbmV3IHBhcmFtZXRlcnMuIEFkZCBzdXBwb3J0IG9mCglQT0lOVEVSX1BMVVNfRVhQUiB0cmVlIGNvZGUuCgoyMDA3LTEwLTI0ICBPbGdhIEdvbG92YW5ldnNreSAgPG9sZ2FAaWwuaWJtLmNvbT4KCgkqIGlwYS1zdHJ1Y3QtcmVvcmcuYywgaXBhLXN0cnVjdC1yZW9yZy5oOiBOZXcgZmlsZXMuCgkqIHRyZWUtcGFzcy5oOiBBZGQgcGFzc19pcGFfc3RydWN0X3Jlb3JnLgoJKiBjb21tb24ub3B0OiBBZGQgaXBhLXN0cnVjdC1yZW9yZyBmbGFnLgoJKiBNYWtlZmlsZS5pbjogQWRkIGlwYS1zdHJjdXQtcmVvcmcubyBjb21waWxhdGlvbi4KCSogcGFzc2VzLmM6IEFkZCBwYXNzIHBhc3NfaXBhX3N0cnVjdF9yZW9yZy4KCSogcGFyYW1zLmg6ICBBZGQgU1RSVUNUX1JFT1JHX0NPTERfU1RSVUNUX1JBVElPLgoJKiBwYXJhbXMuZGVmOiBBZGQgUEFSQU1fU1RSVUNUX1JFT1JHX0NPTERfU1RSVUNUX1JBVElPLgoKMjAwNy0xMC0yNCAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzODA0CgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdG9yaXphYmxlX29wZXJhdGlvbik6IFJlbW92ZSB0aGUKCWNoZWNrcyB0aGF0IHRoZSB2ZWN0b3JpemF0aW9uIGlzIHdvcnRod2hpbGUgZnJvbSB0aGUgdHJhbnNmb3JtYXRpb24KCXBoYXNlLgoKMjAwNy0xMC0yNCAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9idWlsZF9zbHBfdHJlZSk6IFJldHVybiBmYWxzZSBpZgoJdmVjdHlwZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBmb3IgdGhlIHNjYWxhciB0eXBlLgoJKHZlY3RfYW5hbHl6ZV9zbHBfaW5zdGFuY2UpOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X21vZGVsX3JlZHVjdGlvbl9jb3N0KTogQ2hhbmdlIHRoZQoJcmV0dXJuIHR5cGUgdG8gYm9vbC4gUmV0dXJuIGZhbHNlIGlmIHZlY3R5cGUgY2Fubm90IGJlIGRldGVybWluZWQgCglmb3IgdGhlIHNjYWxhciB0eXBlLgoJKHZlY3RfZ2V0X2NvbnN0YW50X3ZlY3RvcnMpOiBSZXR1cm4gZmFsc2UgaWYgdmVjdHlwZSBjYW5ub3QgYmUKCWRldGVybWluZWQgZm9yIHRoZSBzY2FsYXIgdHlwZS4KCShnZXRfaW5pdGlhbF9kZWZfZm9yX2luZHVjdGlvbiwgdmVjdF9nZXRfdmVjX2RlZl9mb3Jfb3BlcmFuZCwKCWdldF9pbml0aWFsX2RlZl9mb3JfcmVkdWN0aW9uLCB2ZWN0X2NyZWF0ZV9lcGlsb2dfZm9yX3JlZHVjdGlvbiwKCXZlY3Rvcml6YWJsZV9yZWR1Y3Rpb24pOiBMaWtld2lzZS4JCgoyMDA3LTEwLTIzICBDcmFpZyBSb2RyaWd1ZXMgIDxyb2RyaWdjQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogRm9yIGEgRnJlZUJTRCB0YXJnZXQsIHBhcnNlIHRoZSB2YWx1ZSBvZiAke3RhcmdldH0KCXRvIGRldGVybWluZSB0aGUgdmFsdWUgb2YgRkJTRF9NQUpPUiwgaW5zdGVhZCBvZiBhZGRpbmcgYW4KCWV4cGxpY2l0IGNoZWNrIGZvciBldmVyeSBwb3NzaWJsZSBGcmVlQlNEIG1ham9yIHZlcnNpb24uCgoyMDA3LTEwLTIzICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzM4NDYKCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdF8xKSBbTk9UXTogU2tpcCB2ZWN0b3IgbW9kZXMuCgoyMDA3LTEwLTIzICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzODYwCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9hbmFseXplX2RhdGFfcmVmX2FjY2Vzcyk6IERvbid0IGFsbG93CglpbnRlcmxlYXZlZCBhY2Nlc3NlcyBpbiBjYXNlIHRoZSBkciBpcyBpbnNpZGUgdGhlIGlubmVyLWxvb3AgZHVyaW5nCglvdXRlci1sb29wIHZlY3Rvcml6YXRpb24uCgoyMDA3LTEwLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL3J0bC50ZXhpIChGbGFncyk6IEZpeCBNRU1fU0NBTEFSX1AgZW50cnkuCglEb2N1bWVudCBNRU1fUE9JTlRFUi4gIFJlcGxhY2UgbWVudGlvbnMgb2YgImludGVncmF0ZWQiCglmaWVsZCB3aXRoICJyZXR1cm5fdmFsIi4gIERlbGV0ZSBvdXRkYXRlZCBzdHVmZi4KCjIwMDctMTAtMjMgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogU2V0CglyczYwMDBfYWx0aXZlY19hYmkgb24gQUlYLgoJKGNvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlKTogU2V0IFZSMjA6MzEgZml4ZWQgb24gQUlYLgoKMjAwNy0xMC0yMyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogYWxpYXMuYyAoZ2V0X2FsaWFzX3NldCk6IEZvciBJTkRJUkVDVF9SRUZzLCBkZWFsIHdpdGgKCVNTQV9OQU1FIHBvaW50ZXJzLgoKMjAwNy0xMC0yMiAgU2VvbmdiYWUgUGFyayA8c2VvbmdiYWUucGFya0BnbWFpbC5jb20+CgkgICAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KCgkqIGRmLXNjYW4uYyAoZGZfZ2V0X2NhbGxfcmVmcyk6IE1hcmsgZ2xvYmFsIHJlZ2lzdGVycyBhcyBib3RoIGEKCURGX1JFRl9SRUdfVVNFIGFuZCBhIG5vbi1jbG9iYmVyIERGX1JFRl9SRUdfREVGLgoKMjAwNy0xMC0yMiAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzgzNAoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM4MzUKCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9hbmFseXplX29wZXJhdGlvbnMpOiBSRUxFVkFOVCBhbmQgTElWRQoJc3RtdHMgbmVlZCB0byBiZSBjaGVja2VkIGZvciBzdWNjZXNzIHNlcGVyYXRlbHkuCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdG9yaXphYmxlX2NhbGwsIHZlY3Rvcml6YWJsZV9jb252ZXJzaW9uKToKCVJlbW92ZSB0aGUgY2hlY2sgdGhhdCBzdG10IGlzIG5vdCBMSVZFLgoJKHZlY3Rvcml6YWJsZV9hc3NpZ25tZW50LCB2ZWN0b3JpemFibGVfaW5kdWN0aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX29wZXJhdGlvbiwgdmVjdG9yaXphYmxlX3R5cGVfZGVtb3Rpb24pOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfdHlwZV9wcm9tb3Rpb24sIHZlY3Rvcml6YWJsZV9sb2FkLCB2ZWN0b3JpemFibGVfc3RvcmUpOgoJTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX2xpdmVfb3BlcmF0aW9uKTogQ2hlY2sgdGhhdCBvcCBpcyBub3QgTlVMTC4gCgoyMDA3LTEwLTIyICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW1pemF0aW9uIE9wdGlvbnMpOiBJbiB0aGUgc3VtbWFyeSwgc2hvdwoJdGhhdCB0aGUgdmFsdWUgZm9yIG9wdGlvbnMgLWZhbGlnbi1qdW1wcywgLWZhbGlnbi1sYWJlbHMsCgktZmFsaWduLWxvb3BzLCAtZmFsaWduLWZ1bmN0aW9ucywgLWZzY2hlZC1zdGFsbGVkLWluc25zLCBhbmQKCS1mc2NoZWQtc3RhbGxlZC1pbnNucy1kZXAgaXMgb3B0aW9uYWwuICBJbiB0aGUgc3VtbWFyeSwgc2hvdyB0aGF0CgktZnNjaGVkLXN0YWxsZWQtaW5zbnMgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgYW5kIHRoYXQKCS1mcGFyYWxsZWxpemUtbG9vcHMgdGFrZXMgYW4gYXJndW1lbnQuICBBZGQgb3BpbmRleCBmb3Igc2V2ZXJhbAoJb3B0aW1pemF0aW9uIG9wdGlvbnMsIGFuZCBmaXggdHlwb3MgaW4gdGhlIG9waW5kZXggY29tbWFuZHMgZm9yCglzZXZlcmFsIG90aGVycy4gIEluIHRoZSBkZXNjcmlwdGlvbnMgZm9yIC1mc2NoZWQtc3RhbGxlZC1pbnNucwoJYW5kIC1mc2NoZWQtc3RhbGxlZC1pbnNucy1kZXAsIHNob3cgdGhlIG9wdGlvbnMgd2l0aCBhbmQgd2l0aG91dAoJdmFsdWVzLgoKMjAwNy0xMC0yMiAgRXJpYyBCLiBXZWRkaW5ndG9uICA8ZXdlZGRpbmd0b25AY3NvLmF0bWVsLmNvbT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9tY3VfdHlwZXMpOiBSZW1vdmUgQVRtZWdhNjAzIHdoaWNoIHdhcyBuZXZlcgoJcHJvZHVjZWQuCgkqIGNvbmZpZy9hdnIvYXZyLmggKExJTktfU1BFQyk6IExpa2V3aXNlLgoJKENSVF9CSU5VVElMU19TUEVDUyk6IExpa2V3c2llLgoJKiBjb25maWcvYXZyL3QtYXZyIChNVUxUSUxJQl9NQVRDSEVTKTogTGlrZXdpc2UuCgoyMDA3LTEwLTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzM2NDQKCSogY2ZnY2xlYW51cC5jOiBEbyBub3QgaW5jbHVkZSBkY2UuaC4KCSogY2ZncnRsLmMgKGRlbGV0ZV9pbnNuX2NoYWluX2FuZF9lZGdlcyk6IFJlc3VycmVjdC4KCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogRGVsZXRlIFJFR19MSUJDQUxMX0lEIGNhc2UuCgkqIGRjZS5jIChzb21ldGhpbmdfY2hhbmdlZCk6IERlbGV0ZS4KCShsaWJjYWxsX2RlYWRfcCk6IE5ldyBwcmVkaWNhdGUuCgkoZGVsZXRlX3VubWFya2VkX2luc25zKTogVXNlIGl0IHRvIGRlbGV0ZSBkZWFkIGxpYmNhbGxzLgoJRGVhbCB3aXRoIFJFR19MSUJDQUxMIGFuZCBSRUdfUkVUVkFMIG5vdGVzLgoJKHByZXNjYW5fbGliY2FsbF9mb3JfZGNlKTogTmV3IGZ1bmN0aW9uLgoJKHByZXNjYW5faW5zbnNfZm9yX2RjZSk6IFVzZSBpdCB0byBkZWFsIHdpdGggbGliY2FsbHMuCgkobWFya19yZWdfZGVwZW5kZW5jaWVzKTogRG8gbm90aGluZyBzcGVjaWFsIGZvciBsaWJjYWxscy4KCShkY2VfcHJvY2Vzc19ibG9jayk6IExpa2V3aXNlLgoJKGZhc3RfZGNlKTogRGVsZXRlIHVudXNlZCBsb2NhbCB2YXJpYWJsZS4KCShydW5fZmFzdF9kY2UpOiBEbyBub3QgcmV0dXJuIGEgdmFsdWUuCgkqIGRjZS5oIChzdHJ1Y3QgZGYpOiBEZWxldGUuCgkocnVuX2Zhc3RfZGNlKTogQWRqdXN0IHByb3RvdHlwZS4KCSogb3B0YWJzLmMgKGxpYmNhbGxfaWQpOiBEZWxldGUuCgkobWF5YmVfZW5jYXBzdWxhdGVfYmxvY2spOiBEbyBub3QgZW1pdCBSRUdfTElCQ0FMTF9JRCBub3Rlcy4KCShlbWl0X25vX2NvbmZsaWN0X2Jsb2NrKTogRG8gbm90IGxvb2sgZm9yIFJFR19MSUJDQUxMX0lEIG5vdGVzLgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IERlbGV0ZSBSRUdfTElCQ0FMTF9JRCBjYXNlLgoJKiBydGwuaCAoZGVsZXRlX2luc25fY2hhaW5fYW5kX2VkZ2VzKTogUmVzdXJyZWN0IHByb3RvdHlwZS4KCSogc2VlLmMgKHNlZV91cGRhdGVfcmVsZXZhbmN5KTogTG9vayBmb3IgUkVHX0xJQkNBTEwgYW5kIFJFR19SRVRWQUwKCW5vdGVzIGluc3RlYWQgb2YgUkVHX0xJQkNBTExfSUQgbm90ZXMuCgkqIHJlZy1ub3Rlcy5kZWYgKExJQkNBTExfSUQpOiBEZWxldGUuCgkqIE1ha2VmaWxlLmluIChzZWUubyk6IEFkZCBkY2UuaCBkZXBlbmRlbmN5LgoJKGNmZ2NsZWFudXAubyk6IFJlbW92ZSBkY2UuaCBkZXBlbmRlbmN5LgoKMjAwNy0xMC0yMiAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzODU1CgkqIHRyZWUtc3NhLXBoaW9wdC5jIChjb25kX3N0b3JlX3JlcGxhY2VtZW50KTogSGFuZGxlIENPTVBMRVhfVFlQRQoJYW5kIFZFQ1RPUl9UWVBFLgoKMjAwNy0xMC0yMiAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzODU0CgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3RfZGV0ZXJtaW5lX3ZlY3Rvcml6YXRpb25fZmFjdG9yKTogQWRkCglGTE9BVF9FWFBSIHRvIHRoZSBsaXN0IG9mIHByb21vdGlvbiBvcGVyYXRpb25zLgkKCjIwMDctMTAtMjIgIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCglQUiB0YXJnZXQvMjk0NzMKCVBSIHRhcmdldC8yOTQ5MwoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9waWNfYWRkcl9jb25zdCk6IFN1cHBvcnQgSW50ZWwgYXNtIHN5bnRheC4KCShwcmludF9yZWcpOiBQcmludCByZWdpc3RlciBwcmVmaXggb25seSB3aXRoIEFUJlQgYXNtIHN5bnRheC4gCglTdXBwb3J0IHBjX3J0eCBmb3IgUklQIHJlZ2lzdGVyLgoJKHByaW50X29wZXJhbmRfYWRkcmVzcyk6IFVzZSBwcmludF9yZWcoKSdzIHBjX3J0eCBzdXBwb3J0IGZvciBSSVAKCXJlbGF0aXZlIGFkZHJlc3NpbmcuICBBbHdheXMgcHJpbnQgc2VnbWVudCByZWdpc3RlciBwcmVmaXggd2l0aCBBVCZUCglhc20gc3ludGF4IGFuZCBuZXZlciB3aXRoIEludGVsIGFzbSBzeW50YXguCgkocHJpbnRfb3BlcmFuZCk6IFN1cHByZXNzICdYWFggUFRSJyBwcmVmaXggZm9yIEJMS21vZGUgb3BlcmFuZHMuIAoJRml4IHByZWZpeCBmb3IgMTYtYnl0ZSBYRm1vZGUgb3BlcmFuZHMuCgkob3V0cHV0X2FkZHJfY29uc3RfZXh0cmEpOiBTdXBwb3J0IEludGVsIGFzbSBzeW50YXguCgkoeDg2X2ZpbGVfc3RhcnQpOiBEb24ndCB1c2UgcmVnaXN0ZXIgcHJlZml4IHdpdGggSW50ZWwgYXNtIHN5bnRheC4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoIip6ZXJvX2V4dGVuZHFpaGkyX21vdnpibCIpOiBGaXggdHlwby4KCSgicmV0dXJuX2ludGVybmFsX2xvbmciKTogRml4IEludGVsIGFzbSBzeW50YXggb3V0cHV0LgoJKCJzZXRfZ290X3JleDY0Iik6IFN1cHBvcnQgSW50ZWwgYXNtIHN5bnRheC4KCSgic2V0X3JpcF9yZXg2NCIpOiBMaWtld2lzZS4KCSgic2V0X2dvdF9vZmZzZXRfcmV4NjQiKTogTGlrZXdpc2UuCgkoIipzaWJjYWxsXzFfcmV4NjRfdiIpOiBQcmludCByZWdpc3RlciBwcmVmaXggb25seSB3aXRoIEFUJlQgYXNtCglzeW50YXguCgkoIip0bHNfZ2xvYmFsX2R5bmFtaWNfNjQiKTogTGlrZXdpc2UuCgkoIip0bHNfbG9jYWxfZHluYW1pY19iYXNlXzY0Iik6IExpa2V3aXNlLgoJKCIqbG9hZF90cF9zaSIpKCIqbG9hZF90cF9kaSIpOiBMaWtld2lzZS4KCSgiKmFkZF90cF9zaSIpKCIqYWRkX3RwX2RpIik6IExpa2V3aXNlLgoJKCIqdGxzX2R5bmFtaWNfbGVhXzY0Iik6IExpa2V3aXNlLgoJKCIqc2liY2FsbF92YWx1ZV8xX3JleDY0X3YiKTogTGlrZXdpc2UuCgkoInN0YWNrX3Rsc19wcm90ZWN0X3NldF9zaSIpOiBMaWtld2lzZS4KCSgic3RhY2tfdGxzX3Byb3RlY3Rfc2V0X2RpIik6IExpa2V3aXNlLgoJKCJzdGFja190bHNfcHJvdGVjdF90ZXN0X3NpIik6IExpa2V3aXNlLgoJKCJzdGFja190bHNfcHJvdGVjdF90ZXN0X2RpIik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9tbXgubWQgKCIqbW92PG1vZGU+X2ludGVybmFsX3JleDY0Iik6IEZpeCBJbnRlbCBhc20KCXN5bnRheCBvdXRwdXQuCgkoIiptb3Z2MnNmX2ludGVybmFsX3JleDY0Iik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9jcHVpZC5oIChfX2NwdWlkKTogU3VwcG9ydCBJbnRlbCBhc20gc3ludGF4LgoJKF9fZ2V0X2NwdWlkX21heCk6IExpa2V3aXNlLgoKMjAwNy0xMC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19yZWdub19tb2RlX29rX2Zvcl9iYXNlX3ApOiBHaXZlCgl0aGUgU1RSSUNUX1AgYXJndW1lbnQgdHlwZSAiYm9vbCIgcmF0aGVyIHRoYW4gImludCIuCgkobWlwc19sZWdpdGltYXRlX2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKGZwX3JlZ2lzdGVyX29wZXJhbmQsIGxvX29wZXJhbmQpOiBEZWxldGUuCgkobWlwc19zdWJ3b3JkKTogR2l2ZSB0aGUgSElHSF9QIGFyZ3VtZW50IHR5cGUgImJvb2wiIHJhdGhlciB0aGFuICJpbnQiLgoJKG1pcHNfZW1pdF9zY2MpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2V4cGFuZF9zY2MpOiAuLi50aGlzLgoJKGdlbl9jb25kaXRpb25hbF9icmFuY2gpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2V4cGFuZF9jb25kaXRpb25hbF9icmFuY2gpOiAuLi50aGlzLgoJKGdlbl9jb25kaXRpb25hbF9tb3ZlKTogUmVuYW1lIHRvLi4uCgkobWlwc19leHBhbmRfY29uZGl0aW9uYWxfbW92ZSk6IC4uLnRoaXMuCgkobWlwc19nZW5fY29uZGl0aW9uYWxfdHJhcCk6IFJlbmFtZSB0by4uLgoJKG1pcHNfZXhwYW5kX2NvbmRpdGlvbmFsX3RyYXApOiAuLi50aGlzIGFuZCB0YWtlIGFuIHJ0eCBjb2RlIGluc3RlYWQKCW9mIGFuIG9wZXJhbmRzIGFycmF5LgoJKG1pcHNfZXhwYW5kX2NhbGwpOiBHaXZlIHRoZSBTSUJDQUxMX1AgYXJndW1lbnQgdHlwZSAiYm9vbCIKCXJhdGhlciB0aGFuICJpbnQiLgoJKG1pcHNfZW1pdF9mY2NfcmVsb2FkKTogUmVuYW1lIHRvLi4uCgkobWlwc19leHBhbmRfZmNjX3JlbG9hZCk6IC4uLnRoaXMuCgkoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogLi4udGhpcyBhbmQgcmVtb3ZlIHRoZSBsaWJuYW1lIGFyZ3VtZW50LgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogUmVuYW1lIHRvLi4uCgkobWlwc19mdW5jdGlvbl9hcmdfYWR2YW5jZSk6IC4uLnRoaXMuCgkoZnVuY3Rpb25fYXJnKTogUmVuYW1lIHRvLi4uCgkobWlwc19mdW5jdGlvbl9hcmcpOiAuLi50aGlzIGFuZCB1c2UgInJ0eCIgaW5zdGVhZCBvZgoJInN0cnVjdCBydHhfZGVmICoiLgoJKGZ1bmN0aW9uX2FyZ19ib3VuZGFyeSk6IFJlbmFtZSB0by4uLgoJKG1pcHNfZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogLi4udGhpcy4KCShtaXBzX2V4cGFuZF91bmFsaWduZWRfbG9hZCk6IFJlbmFtZSB0by4uLgoJKG1pcHNfZXhwYW5kX2V4dF9hc191bmFsaWduZWRfbG9hZCk6IC4uLnRoaXMgYW5kIGdpdmUgdGhlIFdJRFRICglhbmQgQklUUE9TIGFyZ3VtZW50cyB0eXBlICJIT1NUX1dJREVfSU5UIi4KCShtaXBzX2V4cGFuZF91bmFsaWduZWRfc3RvcmUpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2V4cGFuZF9pbnNfYXNfdW5hbGlnbmVkX3N0b3JlKTogLi4udGhpcyBhbmQgZ2l2ZSB0aGUgV0lEVEgKCWFuZCBCSVRQT1MgYXJndW1lbnRzIHR5cGUgIkhPU1RfV0lERV9JTlQiLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBSZW5hbWUgdG8uLi4KCShtaXBzX292ZXJyaWRlX29wdGlvbnMpOiAuLi50aGlzLgoJKHByaW50X29wZXJhbmQpOiBSZW5hbWUgdG8uLi4KCShtaXBzX3ByaW50X29wZXJhbmQpOiAuLi50aGlzLgoJKHByaW50X29wZXJhbmRfYWRkcmVzcyk6IFJlbmFtZSB0by4uLgoJKG1pcHNfcHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogLi4udGhpcy4KCShtaXBzX291dHB1dF9hc2NpaSk6IFJlbW92ZSB0aGUgUFJFRklYIGFyZ3VtZW50LgoJKG1pcHNfZXhwYW5kX2VwaWxvZ3VlKTogR2l2ZSB0aGUgU0lCQ0FMTF9QIGFyZ3VtZW50IHR5cGUgImJvb2wiCglyYXRoZXIgdGhhbiAiaW50Ii4KCShtaXBzX2Nhbl91c2VfcmV0dXJuX2luc24pOiBSZXR1cm4gYSAiYm9vbCIgcmF0aGVyIHRoYW4gYW4gImludCIuCgkobWlwc19mdW5jdGlvbl92YWx1ZSk6IFJlbW92ZSB0aGUgRlVOQyBhcmd1bWVudC4gIFVzZSAicnR4IiBpbnN0ZWFkCglvZiAic3RydWN0IHJ0eF9kZWYgKiIuCgkobWlwc19zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogR2l2ZSB0aGUgSU5fUCBhcmd1bWVudCB0eXBlICJib29sIgoJcmF0aGVyIHRoYW4gImludCIuCgkoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IERlbGV0ZS4KCShtaXBzX3N0b3JlX2RhdGFfYnlwYXNzX3ApOiBSZXR1cm4gYSAiYm9vbCIgcmF0aGVyIHRoYW4gYW4gImludCIuCgkobWlwc191c2VfaW5zX2V4dF9wKTogR2l2ZSB0aGUgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgdHlwZQoJIkhPU1RfV0lERV9JTlQiIHJhdGhlciB0aGFuICJydHgiLgoJKiBjb25maWcvbWlwcy9taXBzLmg6IFVwZGF0ZSBhZnRlciB0aGUgYWJvdmUgY2hhbmdlcy4gIFR3ZWFrIGNvbW1lbnRzCglhbmQgZm9ybWF0dGluZy4KCShTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTKTogUGFzcyBhIGJvb2xlYW4gSU5fUCBhcmd1bWVudC4KCShTRUNPTkRBUllfT1VUUFVUX1JFTE9BRF9DTEFTUyk6IExpa2V3aXNlLgoJKG1pcHNfcHJpbnRfb3BlcmFuZF9wdW5jdCwgbWlwc19oYXJkX3JlZ25vX21vZGVfb2spOiBDaGFuZ2UgdGhlCgllbGVtZW50IHR5cGUgZnJvbSAiY2hhciIgdG8gImJvb2wiLgoJKG1pcHNfc2VjdGlvbl90aHJlc2hvbGQsIHN5bV9saW5lbm8sIHNldF9ub2F0LCBtaXBzX2JyYW5jaF9saWtlbHkpCgkobWlwc19jcHVfaW5mb190YWJsZSk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogVXBkYXRlIGFmdGVyIHRoZSBhYm92ZSBjaGFuZ2VzLiAgVHdlYWsgc29tZQoJZm9ybWF0dGluZy4KCSogY29uZmlnL21pcHMvbWlwcy1wcy0zZC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogVHdlYWsgY29tbWVudHMgYW5kIGZvcm1hdHRpbmcuCglVc2UgTlVMTC1saWtlIG1hY3JvcyByYXRoZXIgdGhhbiAwIGluIHZhcmlvdXMgcGxhY2VzLgoJKG1pcHNfc2VjdGlvbl90aHJlc2hvbGQpOiBSZW5hbWUgdG8uLi4KCShtaXBzX3NtYWxsX2RhdGFfdGhyZXNob2xkKTogLi4udGhpcyBhbmQgZ2l2ZSBpdCBhbiB1bnNpZ25lZCB0eXBlLgoJKG51bV9zb3VyY2VfZmlsZW5hbWVzKTogUmVtb3ZlIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLgoJKHNkYl9sYWJlbF9jb3VudCk6IExpa2V3aXNlLgoJKHN5bV9saW5lbm8pOiBEZWxldGUuCgkoc2V0X25vYXQpOiBNYWtlIHN0YXRpYy4KCShtaXBzX2JyYW5jaF9saWtlbHkpOiBMaWtld2lzZSwgYW5kIGdpdmUgaXQgdHlwZSAiYm9vbCIuCgkobWlwc19pc2FfaW5mbyk6IFJlbmFtZSB0by4uLgoJKG1pcHNfaXNhX29wdGlvbl9pbmZvKTogLi4udGhpcy4KCShtaXBzX2ZsYWdfZGVsYXllZF9icmFuY2gpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2Jhc2VfZGVsYXllZF9icmFuY2gpOiAuLi50aGlzLgoJKG1pcHNfc3BsaXRfYWRkcmVzc2VzKTogRGVsZXRlLgoJKG1pcHNfcHJpbnRfb3BlcmFuZF9wdW5jdCwgbWlwc19oYXJkX3JlZ25vX21vZGVfb2spOiBDaGFuZ2UgdGhlCgllbGVtZW50IHR5cGUgZnJvbSAiY2hhciIgdG8gImJvb2wiLgoJKG1pcHNfcmVnbm9fdG9fY2xhc3MpOiBBZGQgYW4gZXhwbGljaXQgYXJyYXkgc2l6ZS4KCShtaXBzMTZfZmxpcHBlcik6IENoYW5nZSBmcm9tIHR5cGUgImludCIgdG8gdHlwZSAiYm9vbCIuCgkobWlwc19jb21wX3R5cGVfYXR0cmlidXRlcyk6IFJlbW92ZSByZWR1bmRhbnQgRlVOQ1RJT05fVFlQRSBjaGVjay4KCShtaXBzX3Rsc19vcGVyYW5kX3ApOiBSZW5hbWUgdG8uLi4KCShtaXBzX3Rsc19zeW1ib2xfcCk6IC4uLnRoaXMuCgkobWlwc19nbG9iYWxfc3ltYm9sX3ApOiBSZW1vdmUgcmVkdW5kYW50ICJjb25zdCIuCgkobWlwc19vZmZzZXRfd2l0aGluX2FsaWdubWVudF9wKTogU2ltcGxpZnkuCgkobWlwc19yZWdub19tb2RlX29rX2Zvcl9iYXNlX3ApOiBDaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGxhc3QgYXJndW1lbnQKCXRvIFNUUklDVF9QIGFuZCBnaXZlIGl0IHR5cGUgYm9vbC4KCShtaXBzX3ZhbGlkX2Jhc2VfcmVnaXN0ZXJfcCk6IExpa2V3aXNlLgoJKG1pcHNfY2xhc3NpZnlfYWRkcmVzcyk6IExpa2V3aXNlLgoJKG1pcHNfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBMaWtld2lzZS4KCShtaXBzMTZfdW5leHRlbmRlZF9yZWZlcmVuY2VfcCk6IFRha2UgdGhlIG9mZnNldCBhcyBhbgoJInVuc2lnbmVkIEhPU1RfV0lERV9JTlQiIHJhdGhlciB0aGFuIGFuICJydHgiLiAgU2ltcGxpZnkuCgkobWlwc19jb25zdF9pbnNucyk6IFVzZSBJTl9SQU5HRS4KCShtaXBzX2ZvcmNlX3RlbXBvcmFyeSk6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBjb3B5X3J0eC4KCShtaXBzMTZfZ3BfcHNldWRvX3JlZyk6IFNpbXBsaWZ5LgoJKG1pcHNfc3BsaXRfc3ltYm9sKTogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGNvcHlfcnR4LgoJKG1pcHNfbGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IE9ubHkgY3JlYXRlIHJlZ2lzdGVycyBpZiB3ZSBuZWVkIHRoZW0uCgkobWlwc19sZWdpdGltaXplX2FkZHJlc3MpOiBVc2UgbWlwc19zcGxpdF9wbHVzLgoJKG1pcHNfbW92ZV9pbnRlZ2VyKTogU3dhcCBERVNUIGFuZCBURU1QIGFyZ3VtZW50cy4gIFJlbmFtZSBsb2NhbAoJdmFyaWFibGUgQ09TVCB0byBOVU1fT1BTLgoJKG1pcHNfbGVnaXRpbWl6ZV9tb3ZlKTogVXNlIGdlbl9sb3dwYXJ0LgoJKG1pcHNfcmV3cml0ZV9zbWFsbF9kYXRhKTogUmVuYW1lIHRoZSBPUCBwYXJhbWV0ZXIgdG8gUEFUVEVSTi4KCShtMTZfY2hlY2tfb3ApOiBVc2UgSU5fUkFOR0UuCgkobWlwc19zdWJ3b3JkKTogR2l2ZSB0aGUgSElHSF9QIGFyZ3VtZW50IHR5cGUgImJvb2wiIHJhdGhlciB0aGFuICJpbnQiLgoJKG1pcHNfc3BsaXRfZG91Ymxld29yZF9tb3ZlKTogUGFzcyBib29sZWFucyB0byBtaXBzX3N1YndvcmQuCgkobWlwc19vdXRwdXRfbW92ZSk6IFN0b3JlIHRoZSBtb2RlIGluIGEgbG9jYWwgdmFyaWFibGUuCglFeHBsaWNpdGx5IGFzc2VydCB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZGVhbCB3aXRoCglNRkxPIGFuZCBNRkhJLiAgVXNlIFNNQUxMX09QRVJBTkRfVU5TSUdORUQuICBNYWtlIG9yZGVyIG9mCgljYXNlcyBtb3JlIGNvbnNpc3RlbnQuCgkobWlwc19yZWxhdGlvbmFsX29wZXJhbmRfb2tfcCk6IFJlbmFtZSB0by4uLgoJKG1pcHNfaW50X29yZGVyX29wZXJhbmRfb2tfcCk6IC4uLnRoaXMuCgkobWlwc19jYW5vbmljYWxpemVfY29tcGFyaXNvbik6IFJlbmFtZSB0by4uLgoJKG1pcHNfY2Fub25pY2FsaXplX2ludF9vcmRlcl90ZXN0KTogLi4udGhpcy4KCShtaXBzX2VtaXRfaW50X3JlbGF0aW9uYWwpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2VtaXRfaW50X29yZGVyX3Rlc3QpOiAuLi50aGlzLiAgU3RvcmUgdGhlIG1vZGUgaW4gYSBsb2NhbAoJdmFyaWFibGUuCgkobWlwc19yZXZlcnNlX2ZwX2NvbmRfcCk6IFJlbmFtZSB0by4uLgoJKG1pcHNfcmV2ZXJzZWRfZnBfY29uZCk6IC4uLnRoaXMuCgkobWlwc19lbWl0X2NvbXBhcmUpOiBNYWtlIHRoZSBvcmRlciBvZiB0aGUgc3RhdGVtZW50cyBtb3JlIGNvbnNpc3RlbnQuCgkobWlwc19lbWl0X3NjYyk6IFJlbmFtZSB0by4uLgoJKG1pcHNfZXhwYW5kX3NjYyk6IC4uLnRoaXMuCgkoZ2VuX2NvbmRpdGlvbmFsX2JyYW5jaCk6IFJlbmFtZSB0by4uLgoJKG1pcHNfZXhwYW5kX2NvbmRpdGlvbmFsX2JyYW5jaCk6IC4uLnRoaXMuCgkoZ2VuX2NvbmRpdGlvbmFsX21vdmUpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2V4cGFuZF9jb25kaXRpb25hbF9tb3ZlKTogLi4udGhpcy4gIEJ1aWxkIHRoZSBjb25kaXRpb24KCXNlcGFyYXRlbHkgZnJvbSB0aGUgbWFpbiBwYXR0ZXJuLgoJKG1pcHNfZ2VuX2NvbmRpdGlvbmFsX3RyYXApOiBSZW5hbWUgdG8uLi4KCShtaXBzX2V4cGFuZF9jb25kaXRpb25hbF90cmFwKTogLi4udGhpcyBhbmQgdGFrZSBhbiBydHggY29kZSBpbnN0ZWFkCglvZiBhbiBvcGVyYW5kcyBhcnJheS4gIFNpbXBsaWZ5LgoJKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogUmVuYW1lIHRvLi4uCgkobWlwc19pbml0X2N1bXVsYXRpdmVfYXJncyk6IC4uLnRoaXMuICBVc2UgbWVtc2V0IHJhdGhlciB0aGFuIGEKCWNvcHkgZnJvbSBhIHplcm9lZCBzdGF0aWMuICBVc2UgcHJvdG90eXBlX3AgYW5kIHN0ZGFyZ19wLgoJKG1pcHNfYXJnX2luZm8pOiBSZW5hbWUgdG8uLi4KCShtaXBzX2dldF9hcmdfaW5mbyk6IC4uLnRoaXMgYW5kIHB1dCB0aGUgSU5GTyBhcmd1bWVudCBmaXJzdC4KCShmdW5jdGlvbl9hcmcpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2Z1bmN0aW9uX2FyZyk6IC4uLnRoaXMgYW5kIHVzZSAicnR4IiBpbnN0ZWFkIG9mCgkic3RydWN0IHJ0eF9kZWYgKiIuICBPbmx5IHNwbGl0IHN0cnVjdHVyZXMgaW50byBjaHVua3MgaWYgCglUQVJHRVRfSEFSRF9GTE9BVCwgcmF0aGVyIHRoYW4gY2hlY2tpbmcgIVRBUkdFVF9TT0ZUX0ZMT0FUIG9uCglhIGNodW5rLWJ5LWNodW5rIGJhc2lzLiAgVXNlIFNDQUxBUl9GTE9BVF9UWVBFX1AgaW5zdGVhZCBvZiBhCgljb21wYXJpc29uIHdpdGggUkVBTF9UWVBFLiAgUmVuYW1lIGxvY2FsIHZhcmlhYmxlIFJFRyB0byBSRUdOTwoJYW5kIG1ha2UgaXQgdW5zaWduZWQuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2Z1bmN0aW9uX2FyZ19hZHZhbmNlKTogLi4udGhpcy4KCShmdW5jdGlvbl9hcmdfYm91bmRhcnkpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2Z1bmN0aW9uX2FyZ19ib3VuZGFyeSk6IC4uLnRoaXMuCgkobWlwc19wYWRfYXJnX3Vwd2FyZCk6IFVzZSBTQ0FMQVJfSU5UX01PREVfUCBpbnN0ZWFkIG9mIGEgY29tcGFyaXNvbgoJd2l0aCBNT0RFX0lOVC4KCShtaXBzX2Zwcl9yZXR1cm5fZmllbGRzKTogVXNlIFNDQUxBUl9GTE9BVF9UWVBFX1AgaW5zdGVhZCBvZiBhCgljb21wYXJpc29uIHdpdGggUkVBTF9UWVBFLgoJKG1pcHNfZnVuY3Rpb25fdmFsdWUpOiBSZW1vdmUgdGhlIEZVTkMgYXJndW1lbnQuICBSZW5hbWUgbG9jYWwKCXZhcmlhYmxlIFVOU0lHTkVEUCB0byBVTlNJR05FRF9QLgoJKG1pcHNfcmV0dXJuX2luX21lbW9yeSk6IFVzZSBJTl9SQU5HRS4KCShtaXBzX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBQYXNzIGEgYm9vbGVhbiByYXRoZXIgdGhhbiBhbiBpbnQKCXRvIEZVTkNUSU9OX0FSR19BRFZBTkNFLgoJKG1pcHNfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBSZW5hbWUgbG9jYWwgdmFyaWFibGUgSU5ESVJFQ1QKCXRvIElORElSRUNUX1AuICBSZW1vdmUgYSByZWR1bmRhbnQgbWlwc19hYmkgY2hlY2suICBPbmx5IGNhbGN1bGF0ZQoJU0laRSBhbmQgUlNJWkUgaWYgbmVlZGVkLgoJKG1pcHMxNl9zdHViKTogUmVuYW1lIEZQUkVUIHRvIEZQX1JFVF9QIGFuZCBnaXZlIGl0IHR5cGUgImJvb2wiCglyYXRoZXIgdGhhbiAiaW50Ii4KCShidWlsZF9taXBzMTZfZnVuY3Rpb25fc3R1Yik6IFJlbmFtZSB0by4uLgoJKG1pcHMxNl9idWlsZF9mdW5jdGlvbl9zdHViKTogLi4udGhpcy4KCShidWlsZF9taXBzMTZfY2FsbF9zdHViKTogUmVuYW1lIHRvLi4uCgkobWlwczE2X2J1aWxkX2NhbGxfc3R1Yik6IC4uLnRoaXMuICBNYWtlIHN0YXRpYywgYW5kIHJldHVybiBhCgkiYm9vbCIgcmF0aGVyIHRoYW4gYW4gImludCIuICBSZW5hbWUgdGhlIEFSR19TSVpFIGFyZ3VtZW50IHRvCglBUkdTX1NJWkUuICBSZW5hbWUgdGhlIGxvY2FsIHZhcmlhYmxlIEZQUkVUIHRvIEZQX1JFVF9QIGFuZCBnaXZlCglpdCB0eXBlICJib29sIi4gIFVzZSAianIiIHJhdGhlciB0aGFuICJqIi4gIFVzZSBYTkVXLiAgU2ltcGxpZnkuCgkobWlwc19sb2FkX2NhbGxfYWRkcmVzcyk6IEdpdmUgdGhlIFNJQkNBTExfUCBhcmd1bWVudCB0eXBlICJib29sIgoJcmF0aGVyIHRoYW4gImludCIuCgkobWlwc19leHBhbmRfY2FsbCk6IExpa2V3aXNlLiAgQXNzZXJ0IHRoYXQgTUlQUzE2IGNhbGxzIHZpYSBzdHVicwoJYXJlIG5vdCBzaWJsaW5nIG9uZXMuCgkobWlwc19lbWl0X2ZjY19yZWxvYWQpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2V4cGFuZF9mY2NfcmVsb2FkKTogLi4udGhpcy4KCShtaXBzX2dldF91bmFsaWduZWRfbWVtKTogR2l2ZSB0aGUgV0lEVEggYW5kIEJJVFBPUyBhcmd1bWVudHMgdHlwZQoJIkhPU1RfV0lERV9JTlQiLgoJKG1pcHNfZXhwYW5kX3VuYWxpZ25lZF9sb2FkKTogUmVuYW1lIHRvLi4uCgkobWlwc19leHBhbmRfZXh0X2FzX3VuYWxpZ25lZF9sb2FkKTogLi4udGhpcyBhbmQgZ2l2ZSB0aGUgV0lEVEgKCWFuZCBCSVRQT1MgYXJndW1lbnRzIHR5cGUgIkhPU1RfV0lERV9JTlQiLiAgUmVtb3ZlIHJlZHVuZGFudAoJU1VCUkVHX0JZVEUgY2hlY2suCgkobWlwc19leHBhbmRfdW5hbGlnbmVkX3N0b3JlKTogUmVuYW1lIHRvLi4uCgkobWlwc19leHBhbmRfaW5zX2FzX3VuYWxpZ25lZF9zdG9yZSk6IC4uLnRoaXMgYW5kIGdpdmUgdGhlIFdJRFRICglhbmQgQklUUE9TIGFyZ3VtZW50cyB0eXBlICJIT1NUX1dJREVfSU5UIi4KCShtaXBzX3VzZV9pbnNfZXh0X3ApOiBSZW5hbWUgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgdG8gV0lEVEgKCWFuZCBCSVRQT1MgYW5kIGdpdmUgdGhlbSB0eXBlICJIT1NUX1dJREVfSU5UIiByYXRoZXIgdGhhbiAicnR4Ii4KCVVzZSBJTl9SQU5HRS4KCShtaXBzX2luaXRfc3BsaXRfYWRkcmVzc2VzKTogUmVwbGFjZSB3aXRoLi4uCgkobWlwc19zcGxpdF9hZGRyZXNzZXNfcCk6IC4uLnRoaXMgbmV3IGZ1bmN0aW9uLgoJKG1pcHNfaW5pdF9yZWxvY3MpOiBDaGVjayBtaXBzX3NwbGl0X2FkZHJlc3Nlc19wICgpIHJhdGhlciB0aGFuCgltaXBzX3NwbGl0X2FkZHJlc3Nlcy4gIEFsd2F5cyBpbml0aWFsaXplIG1pcHNfc3BsaXRfcCB3aXRoIGJvb2xlYW5zLgoJKHByaW50X29wZXJhbmRfcmVsb2MpOiBSZW5hbWUgdG8uLi4KCShtaXBzX3ByaW50X29wZXJhbmRfcmVsb2MpOiAuLi50aGlzLiAgVXNlIGEgZ2NjX2Fzc2VydCByYXRoZXIgdGhhbgoJYSBmYXRhbF9lcnJvci4KCShwcmludF9vcGVyYW5kKTogUmVuYW1lIHRvLi4uCgkobWlwc19wcmludF9vcGVyYW5kKTogLi4udGhpcy4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBSZW5hbWUgdG8uLi4KCShtaXBzX3ByaW50X29wZXJhbmRfYWRkcmVzcyk6IC4uLnRoaXMuICBVc2UgR1BfUkVHX0ZJUlNULgoJKG1pcHNfaW5fc21hbGxfZGF0YV9wKTogU2ltcGxpZnkuCgkobWlwc19vdXRwdXRfYXNjaWkpOiBSZW1vdmUgdGhlIFBSRUZJWCBhcmd1bWVudCBhbmQgInJlZ2lzdGVyIgoJa2V5d29yZHMuICBVc2UgdGhlIFNUUklORyBwYXJhbWV0ZXIgZGlyZWN0bHkgYW5kIGNhc3QgdG8KCSJ1bnNpZ25lZCBjaGFyIi4KCShtaXBzMTZlX2NvbGxlY3RfYXJndW1lbnRfc2F2ZV9wKTogVXNlIElOX1JBTkdFLgoJKG1pcHNfZnVuY3Rpb25faGFzX2dwX2luc24pOiBTaW1wbGlmeS4KCShtaXBzX3NldF9yZXR1cm5fYWRkcmVzcyk6IFVzZSBCSVRTRVRfUC4KCShtaXBzX3Jlc3RvcmVfZ3ApOiBVc2UgYSBzZXBhcmF0ZSBzdGF0ZW1lbnQgdG8gcGljayB0aGUgYmFzZQoJcmVnaXN0ZXIuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgYSBsb2NhbCBGUkFNRSB2YXJpYWJsZS4KCShtaXBzX3NhdmVfcmVnKTogUGFzcyBib29sZWFucyB0byBtaXBzX3N1YndvcmQuCgkobWlwc19leHBhbmRfcHJvbG9ndWUpOiBVc2UgYSBsb2NhbCBGUkFNRSB2YXJpYWJsZS4gIFVzZQoJY3ByZXN0b3JlX3NpemUgdG8gZGV0ZWN0IHdoZW4gLmNwcmVzdG9yZSBpcyBuZWVkZWQuCgkobWlwc19yZXN0b3JlX3JlZyk6IFVzZSBHUF9SRUdfRklSU1QuCgkobWlwc19leHBhbmRfZXBpbG9ndWUpOiBHaXZlIHRoZSBTSUJDQUxMX1AgYXJndW1lbnQgdHlwZSAiYm9vbCIKCXJhdGhlciB0aGFuICJpbnQiLiAgVXNlIGxvY2FsIEZSQU1FIGFuZCBSRUdOTyB2YXJpYWJsZXMuCgkobWlwc19jYW5fdXNlX3JldHVybl9pbnNuKTogUmV0dXJuIGEgImJvb2wiIHJhdGhlciB0aGFuIGFuICJpbnQiLgoJKG1pcHNfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IEdpdmUgdGhlIElOX1AgYXJndW1lbnQgdHlwZSAiYm9vbCIKCXJhdGhlciB0aGFuICJpbnQiLgoJKG1pcHNfbGlua2VkX21hZGRfcCk6IFJlbmFtZSBhcmd1bWVudHMgdG8gT1VUX0lOU04gYW5kIElOX0lOU04uCgkobWlwc19zdG9yZV9kYXRhX2J5cGFzc19wKTogUmV0dXJuIGEgImJvb2wiIHJhdGhlciB0aGFuIGFuICJpbnQiLgoJKHZyNDEzMF9zd2FwX2luc25zX3ApOiBSZW5hbWUgbG9jYWwgdmFyaWFibGVzIHRvIERFUDFfUCBhbmQgREVQMl9QLgoJKG1pcHNfNzRrX2FnZW5faW5pdCk6IEFzc3VtZSBJTlNOIHNhdGlzZmllcyBVU0VGVUxfSU5TTl9QLgoJKG1pcHNfdmFyaWFibGVfaXNzdWUpOiBEbyBub3RoaW5nIHVubGVzcyBJTlNOIHNhdGlzZmllcyBVU0VGVUxfSU5TTl9QLgoJKGJ1aWx0aW5fZGVzY3JpcHRpb24pOiBSZW5hbWUgdG8uLi4KCShtaXBzX2J1aWx0aW5fZGVzY3JpcHRpb24pOiAuLi50aGlzLgoJKG1pcHNfYmRlc2MpOiBSZW5hbWUgdG8uLi4KCShtaXBzX3BzX2JkZXNjKTogLi4udGhpcy4KCShzYjFfYmRlc2MpOiBSZW5hbWUgdG8uLi4KCShtaXBzX3NiMV9iZGVzYyk6IC4uLnRoaXMuCgkoZHNwX2JkZXNjKTogUmVuYW1lIHRvLi4uCgkobWlwc19kc3BfYmRlc2MpOiAuLi50aGlzLgoJKGRzcF8zMm9ubHlfYmRlc2MpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2RzcF8zMm9ubHlfYmRlc2MpOiAuLi50aGlzLgoJKGJkZXNjX21hcCk6IFJlbmFtZSB0by4uLgoJKG1pcHNfYmRlc2NfbWFwKTogLi4udGhpcy4KCShiZGVzY19hcnJheXMpOiBSZW5hbWUgdG8uLi4KCShtaXBzX2JkZXNjX2FycmF5cyk6IC4uLnRoaXMuCgkobWlwc19wcmVwYXJlX2J1aWx0aW5fYXJnKTogUmVuYW1lIE9QIHRvIE9QTk8gYW5kIEFSR05VTSB0byBBUkdOTy4KCVR3ZWFrIGVycm9yIG1lc3NhZ2UuCgkobWlwc19leHBhbmRfYnVpbHRpbl9kaXJlY3QpOiBSZW5hbWUgSEFTX1RBUkdFVCB0byBIQVNfVEFSR0VUX1AuCglSZW5hbWUgbG9jYWwgdmFyaWFibGVzIEkgYW5kIEogdG8gT1BOTyBhbmQgQVJHTk8gcmVzcGVjdGl2ZWx5LgoJQXNzZXJ0IHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaXMgbm8gbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YKCWlucHV0IG9wZXJhbmRzLgoJKG1pcHNfZXhwYW5kX2J1aWx0aW5fY29tcGFyZSk6IFVzZSBhbiBhcnJheSBvZiBhcmd1bWVudHMgcmF0aGVyCgl0aGFuIGFuIGFycmF5IG9mIG9wZXJhbmRzLiAgQXNzZXJ0IHRoYXQgdGhlIG51bWJlciBvZiBvcGVyYW5kcyBpcwoJYXMgZXhwZWN0ZWQuCgkoYWRkX2NvbnN0YW50KTogUmVuYW1lIHRvLi4uCgkobWlwczE2X2FkZF9jb25zdGFudCk6IC4uLnRoaXMuICBVc2UgWE5FVy4KCShkdW1wX2NvbnN0YW50c18xKTogUmVuYW1lIHRvLi4uCgkobWlwczE2X2VtaXRfY29uc3RhbnRzXzEpOiAuLi50aGlzLiAgVXNlIEFMTF9TQ0FMQVJfRklYRURfUE9JTlRfTU9ERV9QLgoJKGR1bXBfY29uc3RhbnRzKTogUmVuYW1lIHRvLi4uCgkobWlwczE2X2VtaXRfY29uc3RhbnRzKTogLi4udGhpcy4KCShtaXBzX3NpbV93YWl0X3JlZywgbWlwc19zaW1fcmVjb3JkX3NldCk6IFVzZSBFTkRfUkVHTk8uCgkobWlwc19zZXRfbWlwczE2X21vZGUpOiBEb24ndCBjYWxsIG1pcHNfaW5pdF9zcGxpdF9hZGRyZXNzZXMuCglBc3NpZ24gbWlwczE2X3AgdG8gd2FzX21pcHMxNl9wLgoJKG1pcHNfcGFyc2VfY3B1KTogVHdlYWsgd2FybmluZyBtZXNzYWdlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBSZW5hbWUgdG8uLi4KCShtaXBzX292ZXJyaWRlX29wdGlvbnMpOiAuLi50aGlzLiAgTW92ZSB0aGUgbWlwc19jb3N0IGluaXRpYWxpemF0aW9uCglvdXQgb2YgdGhlICJzaGFyZWQgd2l0aCBHQVMiIGJsb2NrLiAgUXVvdGUgb3B0aW9uIG5hbWVzIGluIGVycm9yCgltZXNzYWdlcy4KCShtaXBzX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlKTogTWFrZSBsb2NhbCB2YXJpYWJsZSBSRUdOTyB1bnNpZ25lZC4KCShtaXBzX29yZGVyX3JlZ3NfZm9yX2xvY2FsX2FsbG9jKTogUmVtb3ZlIHJlZ2lzdGVyIGtleXdvcmQuCgoyMDA3LTEwLTIxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBzeXN0ZW0uaCAoSU5fUkFOR0UpOiBDYXN0IGVhY2ggYXJndW1lbnQgaW5kaXZpZHVhbGx5LgoKMjAwNy0xMC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NldF9taXBzMTZfbW9kZSkgU2F5IHNvcnJ5IGZvciBoYXJkLWZsb2F0CglNSVBTMTYgY29kZSB1bmxlc3MgdXNpbmcgbzMyIG9yIG82NC4gIAoKMjAwNy0xMC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2Nhbm5vdF9jaGFuZ2VfbW9kZV9jbGFzcyk6IERvbid0IGNoZWNrCglmb3IgbW9kZXMgc21hbGxlciB0aGFuIDQgYnl0ZXMuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCptb3ZoaV9pbnRlcm5hbCwgKm1vdnFpX2ludGVybmFsKTogUmVtb3ZlCglGUFIgYWx0ZXJuYXRpdmVzLgoKMjAwNy0xMC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19vdXRwdXRfYWxpZ25lZF9ic3MpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKEJTU19TRUNUSU9OX0FTTV9PUCk6IERlbGV0ZS4KCShBU01fT1VUUFVUX0FMSUdORURfQlNTKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2FsaWduZWRfYnNzKTogRGVsZXRlLgoKMjAwNy0xMC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogT25seSBmb3JiaWQKCXNpYmxpbmcgY2FsbHMgdG8gIm1pcHMxNiIgZnVuY3Rpb25zIGlmIHRoZSBmdW5jdGlvbiBzYXRpc2ZpZXMKCWNvbnN0X2NhbGxfaW5zbl9vcGVyYW5kLgoKMjAwNy0xMC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3ZhX3N0YXJ0KTogRml4IHR5cGVzIGluIGNhbGxzCgl0byBidWlsZF9pbnRfY3N0LgoKMjAwNy0xMC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3J0eF9jb3N0cyk6IE9ubHkgcmVjb2duaXplIHJlY2lwcm9jYWxzCglpZiBJU0FfSEFTX0ZQNC4KCjIwMDctMTAtMjEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19MREMxX1NEQzEpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zcGxpdF82NGJpdF9tb3ZlX3ApOiBVc2UgSVNBX0hBU19MREMxX1NEQzEKCWluc3RlYWQgb2YgY2hlY2tpbmcgbWlwc19pc2EuCgoyMDA3LTEwLTIxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1tcGFpcmVkLXNpbmdsZSk6IERvbid0IHNheSB0aGF0IHRoZSBvcHRpb24KCXJlcXVpcmVzIDY0LWJpdCBjb2RlLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX21vZGVzX3RpZWFibGVfcCk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19QQUlSRURfU0lOR0xFKTogTmV3IG1hY3JvLgoJKElTQV9IQVNfTk1BRERfTk1TVUIpOiBBZGQgYSBtb2RlIGFyZ3VtZW50LiAgUmV0dXJuIHRydWUgZm9yCglWMlNGIGlmIElTQV9NSVBTMzJSMi4KCShNT0RFU19USUVBQkxFX1ApOiBVc2UgbWlwc19tb2Rlc190aWVhYmxlX3AuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19ydHhfY29zdHMpOiBQYXNzIGEgbW9kZSBhcmd1bWVudAoJdG8gSVNBX0hBU19OTUFERF9OTVNVQi4KCShtaXBzX3NwbGl0X2RvdWJsZXdvcmRfbW92ZSk6IEhhbmRsZSBWMlNGLgoJKG1pcHNfbW9kZXNfdGllYWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBSZXBvcnQgYSB3YXJuaW5nIHJhdGhlciB0aGFuIGFuIGVycm9yIHdoZW4KCS1tcGFpcmVkLXNpbmdsZSBpcyB1c2VkIG9uIElTQXMgdGhhdCBkb24ndCBzdXBwb3J0IGl0OyB1c2UKCUlTQV9IQVNfUEFJUkVEX1NJTkdMRSB0byBjaGVjayB0aGF0IGNhc2UuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKE1PVkU2NCk6IE5ldyBtb2RlIGl0ZXJhdG9yLiAgUmVwbGFjZSBESQoJYW5kIERGIG1vdmUgc3BsaXR0ZXJzIHdpdGggYSBzaW5nbGUgTU9WRTY0IHNwbGl0dGVyLCB0aGVyZWJ5IGFkZGluZwoJYSBWMlNGIHNwbGl0dGVyIHRvby4KCShTUExJVEYpOiBBZGQgVEFSR0VUX0RPVUJMRV9GTE9BVCBjb25kaXRpb25zIHRvIERJIGFuZCBERi4KCUFkZCBhIFRBUkdFVF9GTE9BVDY0IGNvbmRpdGlvbiB0byBURi4gIEFkZCBWMlNGIHRvIHRoZSBpdGVyYXRvci4KCShIQUxGTU9ERSk6IEFkZCBWMlNGLgoJKCpubWFkZDxtb2RlPiwgKm5tYWRkPG1vZGU+X2Zhc3RtYXRoLCAqbm1zdWI8bW9kZT4pCgkoKm5tc3ViPG1vZGU+X2Zhc3RtYXRoKTogQWRkIGEgbW9kZSBhcmd1bWVudCB0byBJU0FfSEFTX05NQUREX05NU1VCLgoJKG1vdnYyc2ZfaGFyZGZsb2F0XzY0Yml0KTogVHdlYWsgb3JkZXJpbmcgb2YgY29uZGl0aW9ucy4KCShtb3Z2MnNmX2hhcmRmbG9hdF8zMmJpdCk6IE5ldyBwYXR0ZXJuLgoJKGxvYWRfbG93PG1vZGU+LCBsb2FkX2hpZ2g8bW9kZT4sIHN0b3JlX3dvcmQ8bW9kZT4pOiBSZW1vdmUKCVRBUkdFVF9ET1VCTEVfRkxPQVQgY29uZGl0aW9ucy4KCjIwMDctMTAtMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9saW51eC11bndpbmQuaCAocHBjX2ZhbGxiYWNrX2ZyYW1lX3N0YXRlKTogUG9pbnQKCXNhdmVkIENSMiBvZmZzZXQgdG8gbG93IDMyIGJpdHMgb2YgcmVncy0+Y2NyIHJhdGhlciB0aGFuIHRoZSB3aG9sZQoJNjQtYml0IHJlZ2lzdGVyIGluIDY0LWJpdCBsaWJnY2MuCgoyMDA3LTEwLTIwICBFcmljIEIuIFdlZGRpbmd0b24gIDxld2VkZGluZ3RvbkBjc28uYXRtZWwuY29tPgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX21jdV90eXBlcyk6IEFkZCBhdDkwcHdtMmIsIGF0OTBwd20zYi4KCSogY29uZmlnL2F2ci9hdnIuaCAoTElOS19TUEVDKTogTGlrZXdpc2UuCgkoQ1JUX0JJTlVUSUxTX1NQRUNTKTogTGlrZXdzaWUuCgkqIGNvbmZpZy9hdnIvdC1hdnIgKE1VTFRJTElCX01BVENIRVMpOiBMaWtld2lzZS4KCjIwMDctMTAtMjAgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCSogZG9jL2ludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBNb3ZlIC13LCAtV2Vycm9yLCAtV2Vycm9yPQoJYW5kIC1XZmF0YWwtZXJyb3JzIHRvZ2V0aGVyLgoJCjIwMDctMTAtMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzMzODEyCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogUmV2ZXJ0IDIwMDctMDUtMTYKCWNoYW5nZSBmb3IgdnJzYXZlLCBpZSByZXN0b3JlIGFmdGVyIGZyYW1lIHBvcC4KCjIwMDctMTAtMTkgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+CgoJKiBjb25maWcvc3BhcmMvbmlhZ2FyYTIubWQ6IEZpeCBjb3B5cmlnaHQgbm90aWNlLgoKMjAwNy0xMC0xOSAgU2ViYXN0aWFuIFBvcCAgPHNlYmFzdGlhbi5wb3BAYW1kLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yMzgyMAoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjQzMDkKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNzY2CgkqIHRlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIyMzgyMC5jOiBOZXcuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIyNDMwOS5jOiBOZXcuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIzMzc2Ni5jOiBOZXcuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbHRyYW5zLTMuYzogWEZBSUxlZC4KCSogdHJlZS1sb29wLWxpbmVhci5jIChwZXJmZWN0X2xvb3BfbmVzdF9kZXB0aCk6IE5ldy4KCShsaW5lYXJfdHJhbnNmb3JtX2xvb3BzKTogVXNlIHBlcmZlY3RfbG9vcF9uZXN0X2RlcHRoLgoJKiBsYW1iZGEtY29kZS5jIChwZXJmZWN0X25lc3RfcCk6IE91dGVyIGxvb3BzIGluIHBlcmZlY3QgbmVzdHMgCglzaG91bGQgaGF2ZSBhIHNpbmdsZSBjb25kaXRpb246IHRoZWlyIGV4aXQuCgoyMDA3LTEwLTE5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMzgxNgoJUFIgbWlkZGxlLWVuZC8zMjkyMQoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IEFzc2VydCB0aGF0IGFnZ3JlZ2F0ZXMgZG8gbm90CgloYXZlIHRoZWlyIGFsaWFzIHNldHMgc2V0LgoJKiBhbGlhcy5jIChnZXRfYWxpYXNfc2V0KTogUmV0dXJuIGFsaWFzIHNldCB6ZXJvIGZvciBpbmNvbXBsZXRlCgl0eXBlcywgcmV0dXJuIHRoZSBhbGlhcyBzZXQgb2YgdGhlIGVsZW1lbnQgZm9yIGluY29tcGxldGUgYXJyYXkKCXR5cGVzLCBidXQgZG8gbm90IHJlbWVtYmVyIHRoZXNlLgoKMjAwNy0xMC0xOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVJldmVydAoJMjAwNy0xMC0xOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzI5MjEKCSogdHJlZS5jIChidWlsZF9hcnJheV90eXBlKTogRG8gbm90IHJlLWxheW91dCB1bmJvdW5kIGFycmF5Cgl0eXBlcy4KCjIwMDctMTAtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMyOTIxCgkqIHRyZWUuYyAoYnVpbGRfYXJyYXlfdHlwZSk6IERvIG5vdCByZS1sYXlvdXQgdW5ib3VuZCBhcnJheSB0eXBlcy4KCjIwMDctMTAtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jYW5vbmljYWxpemVfY29tcGFyaXNvbik6ICBDaGVjawoJbWlwc19yZWxhdGlvbmFsX29wZXJhbmRfb2tfcCBiZWZvcmUgdHJ5aW5nIHRvIHJld3JpdGUgdGhlIHRlc3QuCglPbmx5IGNhbGN1bGF0ZSBQTFVTX09ORSBpZiBuZWVkZWQuCgkobWlwc19lbWl0X2ludF9yZWxhdGlvbmFsKTogRG9uJ3QgY2FsbCBtaXBzX3JlbGF0aW9uYWxfb3BlcmFuZF9va19wCgloZXJlLgoKMjAwNy0xMC0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzMTZlX2J1aWxkX3NhdmVfcmVzdG9yZSk6IEZpeCAqT0ZGU0VUX1BUUgoJY2FsY3VsYXRpb24uCgoyMDA3LTEwLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY2FsbF90bHNfZ2V0X2FkZHIpOiBEb24ndCBjbGFpbSB0aGF0Cgl0aGUgY2FsbCB1c2VzIHRoZSBpbmNvbWluZyB2YWx1ZSBvZiAkMi4KCjIwMDctMTAtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jYWxsX3Rsc19nZXRfYWRkcik6IFVzZSBnZW5fY29uc3RfbWVtCglyYXRoZXIgdGhlbiBnZW5fcnR4X01FTS4KCShtaXBzX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBVc2UgZ2VuX2ZyYW1lX21lbSByYXRoZXIgdGhhbgoJZ2VuX3J0eF9NRU0uCgkobWlwc19zZXRfcmV0dXJuX2FkZHJlc3MpOiBMaWtld2lzZS4KCShtaXBzX3Jlc3RvcmVfZ3ApOiBMaWtld2lzZS4KCjIwMDctMTAtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZ3ByX21vZGUpOiBEZWxldGUuCgkobWlwczE2ZV9idWlsZF9zYXZlX3Jlc3RvcmUpOiBVc2Ugd29yZF9tb2RlIGFuZCBVTklUU19QRVJfV09SRAoJaW5zdGVhZCBvZiBncHJfbW9kZS4KCShtaXBzX2Zvcl9lYWNoX3NhdmVkX3JlZyk6IExpa2V3aXNlLgoJKG1pcHNfZXhwYW5kX3Byb2xvZ3VlLCBtaXBzX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBEb24ndCBpbml0aWFsaXplIGdwcl9tb2RlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChlaF9yZXR1cm4pOiBVc2Ugd29yZF9tb2RlIGluc3RlYWQgb2YgZ3ByX21vZGUuCgoyMDA3LTEwLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfaGFyZF9yZWdub19ucmVncyk6IFB1dCB0aGUgVU5JVFNfUEVSX1dPUkQKCWNhc2UgbGFzdC4KCShtaXBzX2NsYXNzX21heF9ucmVncyk6IENhbGN1bGF0ZSB0aGUgc21hbGxlc3QgY29uc2l0dWVudCByZWdpc3RlcgoJc2l6ZSBhbmQgdXNlIHRoYXQgdG8gZGV0ZXJtaW5lIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YKCXJlZ2lzdGVycy4KCjIwMDctMTAtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwczE2X2NvcHlfZnByX3JldHVybl92YWx1ZSk6IE5ldyBmdW5jdGlvbiwKCXNwbGl0IG91dCBmcm9tLi4uCgkobWlwc19leHBhbmRfZXBpbG9ndWUpOiAuLi5oZXJlLgoJKG1pcHNfbWRlYnVnX2FiaV9uYW1lKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbS4uLgoJKG1pcHNfZmlsZV9zdGFydCk6IC4uLmhlcmUuCgkobWlwc19oYXJkX3JlZ25vX21vZGVfb2tfcCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShvdmVycmlkZV9vcHRpb25zKTogLi4uaGVyZS4KCShtaXBzX2V4cGFuZF9idWlsdGluXzEpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tLi4uCgkobWlwc19leHBhbmRfYnVpdGluKTogLi4uaGVyZS4gIEFib3J0IGlmIHdlIGRvbid0IHJlY29nbml6ZQoJdGhlIGZ1bmN0aW9uLgoKMjAwNy0xMC0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChidWlsZF9taXBzMTZfZnVuY3Rpb25fc3R1Yik6IExvYWQgdGhlCgl0YXJnZXQgYWRkcmVzcyBpbnRvICQxIGJlZm9yZSB0cmFuc2ZlcmluZyB0aGUgYXJndW1lbnRzLgoJRG9uJ3QgdXNlICIuc2V0IG5vcmVvcmRlciIuCgkoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IExpa2V3aXNlLgoKMjAwNy0xMC0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF8zMmJpdF94ZmVyKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfb3V0cHV0XzY0Yml0X3hmZXIpOiBMaWtld2lzZS4KCShtaXBzMTZfZnBfYXJncyk6IFJlbmFtZSB0by4uLgoJKG1pcHNfb3V0cHV0X2FyZ3NfeGZlcik6IC4uLnRoaXMgYW5kIHJlcGxhY2UgdGhlIEZST01fRlBfUCBhcmd1bWVudAoJd2l0aCBhIERJUkVDVElPTiBhcmd1bWVudC4gIFVzZSBtaXBzX291dHB1dF8zMmJpdF94ZmVyIGFuZAoJbWlwc19vdXRwdXRfNjRiaXRfeGZlci4KCShidWlsZF9taXBzMTZfZnVuY3Rpb25fc3R1Yik6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShtaXBzMTZfZnByZXRfZG91YmxlKTogRGVsZXRlLgoJKGJ1aWxkX21pcHMxNl9jYWxsX3N0dWIpOiBVcGRhdGUgYWZ0ZXIgYWJvdmUgY2hhbmdlcy4KCVVzZSBtaXBzX291dHB1dF8zMmJpdF94ZmVyLiAgVXNlIG1pcHNfb3V0cHV0XzY0Yml0X3hmZXIgaW5zdGVhZAoJb2YgbWlwczE2X2ZwcmV0X2RvdWJsZS4gIFVzZSBHUF9SRUdfUkVUVVJOLgoKMjAwNy0xMC0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzMTZfZnBfYXJncyk6IFJlbW92ZSB0aGUgRklMRSBhcmd1bWVudCBhbmQKCXVzZSBhc21fb3V0X2ZpbGUgaW5zdGVhZC4KCShidWlsZF9taXBzMTZfZnVuY3Rpb25fc3R1Yik6IExpa2V3aXNlLgoJKGJ1aWxkX21pcHMxNl9jYWxsX3N0dWIsIG1pcHNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogVXBkYXRlCglhY2NvcmRpbmdseS4KCjIwMDctMTAtMTggIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+CgoJQWRkIE5pYWdhcmEtMiBzdXBwb3J0LgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1te2NwdSx0dW5lfT1uaWFnYXJhMi4KCSogY29uZmlnLmdjYzogQWRkIG5pYWdhcmEyIHRvIGNwdSBhbmQgdHVuZSBsaXN0cyBmb3Igc3BhcmMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoc3BhcmNfY3B1X2F0dHIpOiBBZGQgbmlhZ2FyYTIuCgkoaW5jbHVkZSk6IEFkZCBpbmNsdXNpb24gb2YgbmlhZ2FyYTIubWQKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKG5pYWdhcmEyX2Nvc3RzKTogTmV3LgoJKHNwYXJjX292ZXJyaWRlX29wdGlvbnMpOiBBZGQgbmlhZ2FyYTIgZW50cnkgdG8gY3B1X2RlZmF1bHRbXQoJYW5kIGNwdV90YWJsZVtdLiAgU2V0IGFsaWduX2Z1bmN0aW9ucyB0byAzMiBvbiBOaWFnYXJhMi4gIFVzZQoJbmlhZ2FyYTJfY29zdHMgd2hlbiBQUk9DRVNTT1JfTklBR0FSQTIuICBIYW5kbGUgTmlhZ2FyYTIgZm9yCglQQVJBTV9TSU1VTFRBTkVPVVNfUFJFRkVUQ0hFUyBhbmQgUEFSQU1fTDFfQ0FDSEVfTElORV9TSVpFLgoJKHNwYXJjX2luaXRpYWxpemVfdHJhbXBvbGluZSk6IEhhbmRsZSBuaWFnYXJhMiBsaWtlIG5pYWdhcmEuCgkoc3BhcmM2NF9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBMaWtld2lzZS4KCShzcGFyY191c2Vfc2NoZWRfbG9va2FoZWFkKTogTGlrZXdpc2UuCgkoc3BhcmNfaXNzdWVfcmF0ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc29sMi1iaS5oOiBIYW5kbGUgVEFSR0VUX0NQVV9uaWFnYXJhMiBhbmQKCW1jcHU9bmlhZ2FyYTIKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFRBUkdFVF9DUFVfbmlhZ2FyYTIpOiBEZWZpbmUuCgkoe0NQUCxBU019X0NQVTY0X0RFRkFVTFRfU1BFQyk6IFNldCBhcHByb3ByaWF0ZWx5IGZvcgoJVEFSR0VUX0NQVV9uaWFnYXJhMi4KCShQUk9DRVNTT1JfTklBR0FSQTIpOiBOZXcuCgkoUkVHSVNURVJfTU9WRV9DT1NUKTogSGFuZGxlIFBST0NFU1NPUl9OSUFHQVJBMi4KCShCUkFOQ0hfQ09TVCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oOiBIYW5kbGUgVEFSR0VUX0NQVV9uaWFnYXJhMi4KCSogY29uZmlnL3NwYXJjL3NvbDIuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9uaWFnYXJhMi5tZDogTmV3IGZpbGUuCgoyMDA3LTEwLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZnJhbWVfaW5mbyk6IFJlbW92ZSBncF9yZWdfc2l6ZSBhbmQKCWFuZCBmcF9yZWdfc2l6ZS4KCShtaXBzX2NvbXB1dGVfZnJhbWVfaW5mbyk6IFJlbW92ZSBhc3NvY2lhdGVkIGNvZGUuCgkobWlwczE2ZV9idWlsZF9zYXZlX3Jlc3RvcmUpOiBDaGVjayBudW1fZnAgaW5zdGVhZCBvZiBmcF9yZWdfc2l6ZS4KCjIwMDctMTAtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5oOiBVcGRhdGUgY29tbWVudHMuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19mcmFtZV9pbmZvKTogUmVtb3ZlIGluaXRpYWxpemVkLgoJKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlbmFtZSB0by4uLgoJKG1pcHNfY29tcHV0ZV9mcmFtZV9pbmZvKTogLi4udGhpcyBhbmQgbWFrZSBzdGF0aWMuICBSZW1vdmUgdGhlCglTSVpFIGFyZ3VtZW50IGFuZCByZXR1cm4gbm8gdmFsdWUuICBSZW1vdmUgdGhlIHNldHRpbmcgb2YgaW5pdGlhbGl6ZWQuCglVcGRhdGUgcmVzdCBvZiBmaWxlIGFjY29yZGluZ2x5LgoJKG1pcHNfc2V0X3JldHVybl9hZGRyZXNzKTogRG9uJ3QgY2FsbCBjb21wdXRlX2ZyYW1lX3NpemUuCgkobWlwc19jYW5fdXNlX3JldHVybl9pbnNuKTogRG9uJ3QgY2hlY2sgZGZfcmVnc19ldmVyX2xpdmVfcCAoMzEpLgoJRG9uJ3QgY2FsbCBjb21wdXRlX2ZyYW1lX3NpemUuCgoyMDA3LTEwLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2ZyYW1lX3BvaW50ZXJfcmVxdWlyZWQpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZSQU1FX1BPSU5URVJfUkVRVUlSRUQpOiBVc2UKCW1pcHNfaGFyZF9mcmFtZV9wb2ludGVyX3JlcXVpcmVkLgoJKENBTl9FTElNSU5BVEUpOiBSZWx5IG9uIEZSQU1FX1BPSU5URVJfUkVRVUlSRUQgdG8gY2hlY2sgZm9yCglsYXJnZSBNSVBTMTYgZnJhbWVzLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZnJhbWVfcG9pbnRlcl9yZXF1aXJlZCk6IE5ldyBmdW5jdGlvbi4KCjIwMDctMTAtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19mcmFtZV9pbmZvKTogQWRkIGFyZ19wb2ludGVyX29mZnNldAoJYW5kIGhhcmRfZnJhbWVfcG9pbnRlcl9vZmZzZXQuCgkobWlwc19kZWJ1Z2dlcl9vZmZzZXQpOiBVc2UgaGFyZF9mcmFtZV9wb2ludGVyX29mZnNldC4KCShtaXBzMTZlX2NvbGxlY3RfYXJndW1lbnRfc2F2ZV9wKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9mcmFtZV9zaXplKTogSW5pdGlhbGl6ZSBhcmdfcG9pbnRlcl9vZmZzZXQgYW5kCgloYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0LgoJKG1pcHNfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBVc2UgdGhlbS4KCShtaXBzX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFVzZSBoYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0LgoJKG1pcHNfZXhwYW5kX3Byb2xvZ3VlLCBtaXBzX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKMjAwNy0xMC0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChTVEFSVElOR19GUkFNRV9PRkZTRVQpOiBSZW1vdmUgcnRsCglwcm9maWxpbmcgY29kZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2ZyYW1lX2luZm8pOiBHaXZlIG51bV9ncCBhbmQgbnVtX2ZwIHR5cGUKCSJ1bnNpZ25lZCBpbnQiIHJhdGhlciB0aGFuICJpbnQiIGFuZCBwdXQgdGhlbSB3aXRoIHRoZSBvdGhlcgoJcmVnaXN0ZXItcmVsYXRlZCBmaWVsZHMuICBQdXQgZXhwYW5kZWQgY29tbWVudHMgYWJvdmUgZmllbGRzCglyYXRoZXIgdGhhbiB0byB0aGVpciByaWdodC4KCShtaXBzMTZlX21hc2tfcmVnaXN0ZXJzKTogUmVwbGFjZSB0aGUgR1BfUkVHX1NJWkVfUFRSIGFyZ3VtZW50Cgl3aXRoIGEgTlVNX1JFR1NfUFRSIGFyZ3VtZW50LgoJKG1pcHMxNmVfc2F2ZV9yZXN0b3JlX3BhdHRlcm5fcCk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShjb21wdXRlX2ZyYW1lX3NpemUpOiBDbGFyaWZ5IGZyYW1lIGRpYWdyYW0uICBSZXdyaXRlLgoKMjAwNy0xMC0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy1mdHlwZXMuZGVmOiBOZXcgZmlsZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChNSVBTX0ZUWVBFX05BTUUxLCBNSVBTX0ZUWVBFX05BTUUyKQoJKE1JUFNfRlRZUEVfTkFNRTMsIE1JUFNfRlRZUEVfTkFNRTQpOiBOZXcgbWFjcm9zLgoJKG1pcHNfZnVuY3Rpb25fdHlwZSk6IFJlZGVmaW5lIHVzaW5nIG1pcHMtZnR5cGVzLmRlZi4KCShkc3BfYmRlc2MpOiBVc2UgUE9JTlRFUiByYXRoZXIgdGhhbiBQVFIgaW4gdGhlIE1JUFNfKl9GVFlQRV8qIG5hbWVzLgoJKG1pcHNfYnVpbHRpbl92ZWN0b3JfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShNSVBTX0FUWVBFX1ZPSUQsIE1JUFNfQVRZUEVfSU5ULCBNSVBTX0FUWVBFX1BPSU5URVIsIE1JUFNfQVRZUEVfU0kpCgkoTUlQU19BVFlQRV9VU0ksIE1JUFNfQVRZUEVfREksIE1JUFNfQVRZUEVfU0YsIE1JUFNfQVRZUEVfREYpCgkoTUlQU19BVFlQRV9WMlNGLCBNSVBTX0FUWVBFX1YySEksIE1JUFNfQVRZUEVfVjRRSSwgTUlQU19GVFlQRV9BVFlQRVMxKQoJKE1JUFNfRlRZUEVfQVRZUEVTMiwgTUlQU19GVFlQRV9BVFlQRVMzLCBNSVBTX0ZUWVBFX0FUWVBFUzQpOiBOZXcKCW1hY3Jvcy4KCShtaXBzX2J1aWxkX2Z1bmN0aW9uX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19pbml0X2J1aWx0aW5zKTogVXNlIGl0IHRvIGNyZWF0ZSB0eXBlcyBsYXppbHkuCgoyMDA3LTEwLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKHNldF92b2xhdGlsZSk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChzZXRfdm9sYXRpbGUpOiBEZWxldGUuCgkobWlwc19wcmludF9vcGVyYW5kX3B1bmN0dWF0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJcHJpbnRfb3BlcmFuZC4gIFJlbW92ZSAnJXsnLCAnJX0nLCAnJX4nLCAnJSYnIGFuZCAnJSEnLgoJVXNlIHRoZSBzYW1lIGNoYXJhY3RlciBvcmRlcmluZyBpbiB0aGUgY29kZSBhbmQgdGhlIGNvbW1lbnRzLgoJVXNlIGEgcmVjdXJzaXZlIGNhbGwgdG8gaGFuZGxlICcqJy4gIEFib3J0IG9uIHVua25vd24gY2hhcmFjdGVycy4KCShtaXBzX2luaXRfcHJpbnRfb3BlcmFuZF9wdW5jdCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCW92ZXJyaWRlX29wdGlvbnMuCgkobWlwc19wcmludF9pbnRfYnJhbmNoX2NvbmRpdGlvbik6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCXByaW50X29wZXJhbmQuICBVc2UgR0VUX1JUWF9OQU1FLiAgVXNlIG91dHB1dF9vcGVyYW5kX2xvc3NhZ2UKCXRvIHJlcG9ydCB1bmV4cGVjdGVkIGNvZGVzLgoJKG1pcHNfcHJpbnRfZmxvYXRfYnJhbmNoX2NvbmRpdGlvbik6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCXByaW50X29wZXJhbmQuICBVc2Ugb3V0cHV0X29wZXJhbmRfbG9zc2FnZSB0byByZXBvcnQgdW5leHBlY3RlZCBjb2Rlcy4KCShwcmludF9vcGVyYW5kKTogUmV3b3JrIHRvIHVzZSBhIGNhc2Ugc3RhdGVtZW50LiAgVXNlIHRoZQoJc2FtZSBsZXR0ZXIgb3JkZXJpbmcgaW4gdGhlIGNvZGUgYW5kIHRoZSBjb21tZW50cy4gIFVzZQoJb3V0cHV0X29wZXJhbmRfbG9zc2FnZSB0byByZXBvcnQgdW5leHBlY3RlZCBjb2RlcyBhbmQKCXJldmVyc2VfY29uZGl0aW9uIHRvIGhhbmRsZSBpbnZlcnRlZCBicmFuY2ggY29uZGl0aW9ucy4KCShvdmVycmlkZV9vcHRpb25zKTogVXNlIG1pcHNfaW5pdF9wcmludF9vcGVyYW5kX3B1bmN0LgoKMjAwNy0xMC0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5oOiBNb3ZlIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyB0byBlbmQgb2YgZmlsZSBhbmQKCWVuY2xvc2UgdGhlbSBhbGwgaW4gI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogUmVvcmRlciBmdW5jdGlvbnMgaW50byBtb3JlIGxvZ2ljYWwgZ3JvdXBzLAoJYW5kIHNvIHRoYXQgY2FsbGVlcyBhcHBlYXIgYmVmb3JlIGNhbGxlcnMuICBQdXQgdGhlIHRhcmdldG0KCWluaXRpYWxpemVyIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuICBSZW1vdmUgZm9yd2FyZCBzdGF0aWMKCWRlY2xhcmF0aW9ucyB3aGVyZSBwb3NzaWJsZS4KCShtaXBzX2luaXRfYnVpbHRpbnMpOiBBZGQgInN0YXRpYyIgdG8gZGVmaW5pdGlvbi4KCShtaXBzX2V4cGFuZF9idWlsdGluLCBtaXBzX21vZGVfcmVwX2V4dGVuZGVkKTogTGlrZXdpc2UuCgoyMDA3LTEwLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKFRBUkdFVF9NSU5fQU5DSE9SX09GRlNFVCk6IERlbGV0ZS4KCShUQVJHRVRfTUFYX0FOQ0hPUl9PRkZTRVQpOiBEZWxldGUuCgkobWlwc19jYW5ub3RfZm9yY2VfY29uc3RfbWVtKTogRG9uJ3QgY2hlY2sgVEFSR0VUX0hBVkVfVExTLgoJKG1pcHNfc2V0X21pcHMxNl9tb2RlKTogSW5pdGlhbGl6ZSBtaW5fYW5jaG9yX29mZnNldCBhbmQKCW1heF9hbmNob3Jfb2Zmc2V0IGRpcmVjdGx5IHRvIGNvbnN0YW50cy4KCjIwMDctMTAtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYzogRGVsZXRlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgoyMDA3LTEwLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZXhwYW5kX2NhbGwpOiBVc2UgRkFLRV9DQUxMX1JFR05PLgoJKG1pcHNfYXZvaWRfaGF6YXJkKTogQWxsb3cgbXVsdGlwbGUgc2V0cyBmb3IgSEFaQVJEX0RFTEFZLAoJYW5kIHBpY2sgdGhlIGZpcnN0LgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChsb2FkX2NhbGw8bW9kZT4pOiBEb24ndCBtYWtlIHRoZSB1bnNwZWMKCWRlcGVuZCBvbiBGQUtFX0NBTExfUkVHTk8uICBTZXQgRkFLRV9DQUxMX1JFR05PLgoKMjAwNy0xMC0xOCAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LXVud2luZC5oIChtaXBzX2ZhbGxiYWNrX2ZyYW1lX3N0YXRlKTogVXNlIG5ldwoJcmVnX29mZnNldCB2YXJpYWJsZSB0byBjYWxjdWxhdGUgcmVnaXN0ZXIgbG9jYXRpb25zLgoKMjAwNy0xMC0xOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1zc2EuYyAodWlkX3NzYW5hbWVfbWFwX2VxKTogTmV3IGZ1bmN0aW9uLgoJKHVpZF9zc2FuYW1lX21hcF9oYXMpOiBMaWtld2lzZS4KCShpbml0X3RyZWVfc3NhKTogQWxsb2NhdGUgZGVmYXVsdF9kZWZzIGFzIHVpZF9zc2FuYW1lIG1hcC4KCSogdHJlZS1mbG93LmggKHN0cnVjdCBnaW1wbGVfZGYpOiBNYWtlIGRlZmF1bHRfZGVmcyBhCgl1aWRfc3NhbmFtZSBtYXAuCgkqIHRyZWUtZGZhLmMgKGdpbXBsZV9kZWZhdWx0X2RlZik6IERlYWwgd2l0aCBpdC4KCShzZXRfZGVmYXVsdF9kZWYpOiBMaWtld2lzZS4KCjIwMDctMTAtMTggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgZ2ltcGxlX2RmKTogTWFrZSByZWZlcmVuY2VkX3ZhcnMKCWEgdWlkX2RlY2xfbWFwLgoJKHVpZF9kZWNsX21hcF9lcSk6IERlY2xhcmUuCgkodWlkX2RlY2xfbWFwX2hhc2gpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EuYyAodWlkX2RlY2xfbWFwX2VxKTogTmV3IGZ1bmN0aW9uLgoJKHVpZF9kZWNsX21hcF9oYXNoKTogTGlrZXdpc2UuCgkoaW5pdF90cmVlX3NzYSk6IE1ha2UgcmVmZXJlbmNlZF92YXJzIGEgdWlkX2RlY2xfbWFwLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGZpcnN0X3JlZmVyZW5jZWRfdmFyKTogRGVhbCB3aXRoCgl0aGUgcmVmZXJlbmNlZF92YXJzIHJlcHJlc2VudGF0aW9uIGNoYW5nZS4KCShuZXh0X3JlZmVyZW5jZWRfdmFyKTogTGlrZXdpc2UuCgkqIHRyZWUtZGZhLmMgKHJlZmVyZW5jZWRfdmFyX2xvb2t1cCk6IExpa2V3aXNlLgoJKHJlZmVyZW5jZWRfdmFyX2NoZWNrX2FuZF9pbnNlcnQpOiBMaWtld2lzZS4KCShyZW1vdmVfcmVmZXJlbmNlZF92YXIpOiBMaWtld2lzZS4KCjIwMDctMTAtMTggIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZHdhcmZfcmVnaXN0ZXJfc3Bhbik6IE5ldy4KCShUQVJHRVRfRFdBUkZfUkVHSVNURVJfU1BBTik6IERlZmluZS4KCjIwMDctMTAtMTggIENoZW4gTGlxaW4gIDxsaXFpbkBzdW5ub3J0aC5jb20uY24+CgoJKiBjb25maWcuZ2NjIDogdXBkYXRlIHNjb3JlLSotZWxmKGV4dHJhX29ianMpLgoJKiBjb25maWcvc2NvcmUvbWFjLm1kIDogUmVtb3ZlLgoJKiBjb25maWcvc2NvcmUvbWlzYy5tZCA6IFJlbW92ZS4KCSogY29uZmlnL3Njb3JlL3Njb3JlNy5tZCA6IFJlbW92ZS4KCSogY29uZmlnL3Njb3JlL3Njb3JlLW1kYXV4LmggOiBSZW1vdmUuCgkqIGNvbmZpZy9zY29yZS9zY29yZS1tZGF1eC5jIDogUmVtb3ZlLgoJKiBjb25maWcvc2NvcmUvc2NvcmUtdmVyc2lvbi5oIDogUmVtb3ZlLgoJKiBjb25maWcvc2NvcmUvc2NvcmUtZ2VuZXJpYy5tZCA6IE5ldy4KCSogY29uZmlnL3Njb3JlL3Njb3JlMy5oIDogTmV3LgoJKiBjb25maWcvc2NvcmUvc2NvcmUzLmMgOiBOZXcuCgkqIGNvbmZpZy9zY29yZS9zY29yZTcuaCA6IE5ldy4KCSogY29uZmlnL3Njb3JlL3Njb3JlNy5jIDogTmV3LgoJKiBjb25maWcvc2NvcmUvbXVsLWRpdi5TIDogYWRkIGZsdXNoX2NhY2hlIHNjb3JlMyBzdXBwb3J0LgoJKiBjb25maWcvc2NvcmUvZWxmLmggOiBGaXggc29tZSB0eXBvcy4KCSogY29uZmlnL3Njb3JlL3Njb3JlLm1kIDogbWVyZ2Ugc2NvcmUzIGFuZCBzY29yZTcgcGF0dGVybi4KCSogY29uZmlnL3Njb3JlL3Njb3JlLmMgOiB1c2UgdG8gc2VwZXJhdGUgd2hpY2ggdGFyZ2V0IGl0IHVzZWQuCgkqIGNvbmZpZy9zY29yZS9zY29yZS5oIDogdXNlIHRvIHNlcGVyYXRlIHRoZSB0YXJnZXQgbWFjcm8uCgkqIGNvbmZpZy9zY29yZS9zY29yZS5vcHQgOiByZW1vdmUgLW1tYWMgb3B0aW9uICwgYWRkIC1tc2NvcmUzLAoJLW1zY29yZTNkIGFuZCAtbWFyY2ggT1BUSU9OIHN1cHBvcnQuCiAKMjAwNy0xMC0xNyAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJKiBjZmdleHBhbmQuYyAoZXhwYW5kX3N0YWNrX3ZhcnMpOiBBZGQgY2hlY2tpbmcgdG8gbWFrZSBzdXJlCgl0aGF0IHRoZSBvZmZzZXQgb2YgYSB2YXJpYWJsZSBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBzaXplCglvZiB0aGUgcGFyaXRpdGlvbi4KCjIwMDctMTAtMTcgIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9tY3VfdHlwZXMpOiBBZGQgc3VwcG9ydCBmb3IgYXRtZWdhNDhwLCAKCWF0bWVnYTg4cCwgYXRtZWdhMTY4cCBhbmQgYXRtZWdhMzI4cCBkZXZpY2VzLgoJKiBjb25maWcvYXZyL2F2ci5oIChMSU5LX1NQRUMpOiAoRGl0dG8uKS4KCShDUlRfQklOVVRJTFNfU1BFQ1MpOiAoRGl0dG8uKS4KCSogY29uZmlnL2F2ci90LWF2ciAoTVVMVElMSUJfTUFUQ0hFUyk6IChEaXR0by4pLgoKMjAwNy0xMC0xNyAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgoKCSogc2NoZWQtZWJiLmM6IFN1cnJvdW5kIGNvZGUgd2l0aCAnI2lmZGVmIElOU05fU0NIRURVTElORycuCgkqIGRkZy5jOiBEaXR0by4KCSogc2NoZWQtZGVwcy5jOiBEaXR0by4gIFJlbW92ZSBuZXN0ZWQgI2lmZGVmJ3MgSU5TTl9TQ0hFRFVMSU5HLgoJKiBzY2hlZC1pbnQuaDogU3Vycm91bmQgZGVjbGFyYXRpb25zIHdpdGggJyNpZmRlZiBJTlNOX1NDSEVEVUxJTkcnLgoJKHByaW50X2luc24pOiBNb3ZlIGRlY2xhcmF0aW9uIHRvIC4uLgoJKiBydGwuaCAocHJpbnRfaW5zbik6IC4uLiBoZXJlLgoKMjAwNy0xMC0xNyAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChtNjhrX3NjaGVkX2NwdSwgbTY4a19zY2hlZF9hdHRyX29weF90eXBlLAoJbTY4a19zY2hlZF9hdHRyX29weV90eXBlLCBtNjhrX3NjaGVkX2F0dHJfc2l6ZSwgbTY4a19zY2hlZF9hdHRyX29wX21lbSwKCW02OGtfc2NoZWRfYnJhbmNoX3R5cGUpOiBNb3ZlIGRlY2xhcmF0aW9ucyB0byAuLi4KCSogY29uZmlnL202OC9tNjhrLXByb3Rvcy5oOiAuLi4gaGVyZS4KCjIwMDctMTAtMTcgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbmF0dHJ0YWIuYyAobWFpbik6IFJlYXJyYW5nZSBvdXRwdXQgb2YgaW5zbi1hdHRydGFiLmMgaGVhZGVycy4KCjIwMDctMTAtMTcgIEVyaWMgQi4gV2VkZGluZ3RvbiAgPGV3ZWRkaW5ndG9uQGNzby5hdG1lbC5jb20+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbWN1X3R5cGVzKTogQWRkIGF0dGlueTQ4LgoJKiBjb25maWcvYXZyL2F2ci5oIChMSU5LX1NQRUMpOiBMaWtld2lzZS4KCShDUlRfQklOVVRJTFNfU1BFQ1MpOiBMaWtld3NpZS4KCSogY29uZmlnL2F2ci90LWF2ciAoTVVMVElMSUJfTUFUQ0hFUyk6IExpa2V3aXNlLgoKMjAwNy0xMC0xNyAgRXJpYyBCLiBXZWRkaW5ndG9uICA8ZXdlZGRpbmd0b25AY3NvLmF0bWVsLmNvbT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9tY3VfdHlwZXMpOiBBZGQgYXR0aW55NDN1LgoJKiBjb25maWcvYXZyL2F2ci5oIChDUlRfQklOVVRJTFNfU1BFQ1MpOiBMaWtld3NpZS4KCSogY29uZmlnL2F2ci90LWF2ciAoTVVMVElMSUJfTUFUQ0hFUyk6IExpa2V3aXNlLgoKMjAwNy0xMC0xNyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMzNzk0CgkqIHJlZy1zdGFjay5jIChtb3ZlX2Zvcl9zdGFja19yZWcpOiBTd2FwIGlucHV0IGFyZ3VtZW50IG9mCglVTlNQRUNfVEFOIGluc24gdG8gdGhlIHRvcCBvZiB0aGUgc3RhY2suCgoyMDA3LTEwLTE3ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMjk2MQoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pIFtJWDg2X0JVSUxUSU5fUFNMTFdJMTI4LAoJSVg4Nl9CVUlMVElOX1BTTExESTEyOCwgQlVJTFRJTl9QU0xMUUkxMjgsIElYODZfQlVJTFRJTl9QU1JBV0kxMjgsCglJWDg2X0JVSUxUSU5fUFNSQURJMTI4LCBJWDg2X0JVSUxUSU5fUFNSTFdJMTI4LAoJSVg4Nl9CVUlMVElOX1BTUkxESTEyOCwgSVg4Nl9CVUlMVElOX1BTUkxRSTEyOF06IERvIG5vdCByZXF1aXJlCglpbW1lZGlhdGUgc2hpZnQgdmFsdWUuCgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oIChfbW1fc2xsaV9lcGkxNiwgX21tX3NsbGlfZXBpMzIsCglfbW1fc2xsaV9lcGk2NCwgX21tX3NyYWlfZXBpMTYsIF9tbV9zcmFpX2VwaTMyLCBfbW1fc3JsaV9lcGkxNiwKCV9tbV9zcmxpX2VwaTMyLCBfbW1fc3JsaV9lcGk2NCk6IFJlbW92ZSAnY29uc3QnIGZyb20gY291bnQgYXJndW1lbnQuCglSZW1vdmUgbWFjcm9zIGZvciAhX19PUFRJTUlaRV9fIGNhc2UuCgoyMDA3LTEwLTE3ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHJld3JpdGVfY29uc3RyYWludHMpOiBEb24ndCB0ZXN0IGZvcgoJZGlyZWN0bmVzcyBhbnltb3JlLgoJKHBlcmZvcm1fdmFyX3N1YnN0aXR1dGlvbik6IE9ubHkgREZTIGZyb20gcmVhbCBub2Rlcy4gRG9uJ3QgdGVzdAoJZm9yIGRpcmVjdG5lc3MuCgkodW5pdGVfcG9pbnRlcl9lcXVpdmFsZW5jZXMpOiBGaXggYnJva2VuIHRlc3QuCgoyMDA3LTEwLTE3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfZXBpbG9ndWUpOiBDb3JyZWN0CglhbHRpdmVjIHNwX29mZnNldC4gIFJlYXJyYW5nZSBzcF9vZmZzZXQgYXNzaWdubWVudHMgdG8KCWNvcnJlc3BvbmQgdG8gc3RhY2sgYWRqdXN0bWVudHMuICBVc2UgZnJhbWVfcmVnX3J0eCBmb3IKCVNQRSByZWdpc3RlciByZXN0b3Jlcy4gIENvcnJlY3QgU1BFIHN0YWNrIGFkanVzdG1lbnQuCgoyMDA3LTEwLTE3ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIGJ1aWx0aW5zLmMgKGdpbXBsaWZ5X3ZhX2FyZ19leHByKTogVXNlIGluZm9ybSBmb3IgaGVscCBtZXNzYWdlLgoJKiB0b3BsZXYuYyAoY2hlY2tfZ2xvYmFsX2RlY2xhcmF0aW9uXzEpOiBVc2UgYXBwcm9wcmlhdGUgd2FybmluZwoJb3B0aW9uIGluc3RlYWQgb2YgdW5uYW1lZCB3YXJuaW5nLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG91bmRfZXhwcik6IEZpeCB3cm9uZyBjb21tZW50LgoJKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBhcHByb3ByaWF0ZSB3YXJuaW5nIG9wdGlvbiBpbnN0ZWFkIG9mCgl1bm5hbWVkIHdhcm5pbmcuCgkqIGNmZ2V4cGFuZC5jICh0cmVlX2V4cGFuZF9jZmcpOiBMaWtld2lzZS4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAocmVtb3ZlX3VzZWxlc3Nfc3RtdHNfd2Fybl9ub3RyZWFjaGVkKTogTGlrZXdpc2UuCgkoZXhlY3V0ZV93YXJuX2Z1bmN0aW9uX3JldHVybik6IExpa2V3aXNlLgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDA3LTEwLTE2ICBFcmljIEIuIFdlZGRpbmd0b24gIDxld2VkZGluZ3RvbkBjc28uYXRtZWwuY29tPgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX21jdV90eXBlcyk6IEFkZCBhdDkwcHdtMjE2LCBhdDkwcHdtMzE2LgoJKiBjb25maWcvYXZyL2F2ci5oIChMSU5LX1NQRUMpOiBMaWtld2lzZSBhbmQgcmVtb3ZlIHJlZ2V4IGZvcgoJc2ltaWxhciBkZXZpY2VzLgoJKENSVF9CSU5VVElMU19TUEVDUyk6IExpa2V3c2llLgoJKiBjb25maWcvYXZyL3QtYXZyIChNVUxUSUxJQl9NQVRDSEVTKTogTGlrZXdpc2UuCgoyMDA3LTEwLTE2ICBBbXJ1dGggTGF4bWFuICA8YW1ydXRoLmxheG1hbkBuc24uY29tPgoKCVBSIHRhcmdldC8zMzU5NAoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoTE9DQUxfQUxJR05NRU5UKTogRGVmaW5lLgoKMjAwNy0xMC0xNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRjZS5jIChpbml0X2RjZSk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgb2JzdGFja3MgZm9yIHRoZSBmYXN0IHBhc3MuCgkoZmluaV9kY2UpOiBPbmx5IHJlbGVhc2UgdGhlbSBmb3IgdGhlIGZhc3QgcGFzcy4KCShlbmRfdWRfZGNlKTogRGVsZXRlLgoJKHJlc3Rfb2ZfaGFuZGxlX3VkX2RjZSk6IERvIG5vdCBtb2RpZnkgZGZfaW5fcHJvZ3Jlc3MuCglDYWxsIGZpbmlfZGNlIGluc3RlYWQgb2YgZW5kX3VkX2RjZS4KCShyZXN0X29mX2hhbmRsZV9mYXN0X2RjZSk6IERvIG5vdCBtb2RpZnkgZGZfaW5fcHJvZ3Jlc3MuCgkocnVuX2Zhc3RfZGZfZGNlKTogUmVzZXQgZGZfaW5fcHJvZ3Jlc3MgdG8gZmFsc2Ugb24gZXhpdC4KCjIwMDctMTAtMTYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgkgICAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgoKCSogdGFyZ2V0LmggKHVuc3BlY19tYXlfdHJhcF9wKTogTmV3IHRhcmdldCBob29rLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9VTlNQRUNfTUFZX1RSQVBfUCk6IE5ldyBtYWNyby4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfdW5zcGVjX21heV90cmFwX3ApOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mCgl0aGUgaG9vay4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfdW5zcGVjX21heV90cmFwX3ApOiBEZWNsYXJlIGl0LgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1VOU1BFQ19NQVlfVFJBUF9QKTogRG9jdW1lbnQgbmV3IGhvb2suCgkqIHJ0bGFuYWwuYyAobWF5X3RyYXBfcF8xKTogVXNlIG5ldyBob29rLiAgTWFrZSBnbG9iYWwuCgkqIHJ0bC5oIChtYXlfdHJhcF9wXzEpOiBEZWNsYXJlLgoJCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF91bnNwZWNfbWF5X3RyYXBfcCk6IE5ldyBmdW5jdGlvbiB0bwoJb3ZlcnJpZGUgZGVmYXVsdCBob29rIGltcGxlbWVudGF0aW9uLgoJKFRBUkdFVF9VTlNQRUNfTUFZX1RSQVBfUCk6IE92ZXJyaWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlCglob29rLgoKMjAwNy0xMC0xNiAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJKiBkb2MvaW52b2tlLnRleGkgKFdleHRyYSk6IE1vdmUgaXQganVzdCBhZnRlciBXYWxsLCBsaXN0IHRoZQoJb3B0aW9ucyBlbmFibGVkIGJ5IFdleHRyYSBhbmQgbWVudGlvbiBXdW5pbml0aWFsaXplZC4KCQoyMDA3LTEwLTE1ICBOaWdlbCBTdGVwaGVucyAgPG5pZ2VsQG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChMT0NBTF9BTElHTk1FTlQpOiBEZWZpbmUuCgoyMDA3LTEwLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzEzNgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogRG9uJ3QgZW5hYmxlIGZsYWdfaXBhX3R5cGVfZXNjYXBlLgoKMjAwNy0xMC0xNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM3MzUKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNTcyCgkqIHRyZWUtaW5saW5lLmMgKHVwZGF0ZV9zc2FfYWNyb3NzX2Fibm9ybWFsX2VkZ2VzKTogUmV2ZXJ0CgkyMDA3LTEwLTA5J3MgY2hhbmdlLgoJKiBleGNlcHQuYyAoZHVwbGljYXRlX2VoX3JlZ2lvbnMpOiBEb24ndCBsb29rIGZvciBwcmV2X3RyeQoJYmV5b25kIEVSVF9BTExPV0VEX0VYQ0VQVElPTlMgd2l0aCBhbiBlbXB0eSBsaXN0LgoKMjAwNy0xMC0xNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMzcwNgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JiKTogVXNlIGJzaV9yZXBsYWNlIHRvIHJlcGxhY2UgYQoJX19idWlsdGluX3ZhX2FyZ19wYWNrLWNvbnRhaW5pbmcgY2FsbCBzdG10LgoKMjAwNy0xMC0xNSAgUmF6eWEgTGFkZWxza3kgIDxyYXp5YUBpbC5pYm0uY29tPgoKCSogbWF0cml4LXJlb3JnLmMgKGdhdGVfbWF0cml4X3Jlb3JnKTogRG9uJ3QgY29tbWVudCBvdXQgd2hvbGUKCXByb2dyYW0gZmxhZy4KCjIwMDctMTAtMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNjE5CgkqIHRyZWUtc3NhLXRlci5jIChpc19yZXBsYWNlYWJsZV9wKTogUmV0dXJuIGZhbHNlIGZvciBhbGwKCWNhbGxzLgoKMjAwNy0xMC0xNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnLmdjYyAocG93ZXJwYy1pYm0tYWl4NSopOiBJbnN0YWxsIGFsdGl2ZWMuaC4KCjIwMDctMTAtMTUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9hcnJheV9yZWYpOiBSZW1vdmUuCgkoZm9sZF9jb21wYXJpc29uKTogSGFuZGxlIFBPSU5URVJfUExVU19FWFBSIHdpdGggdGhlCglnZW5lcmljIGFkZHJlc3MgZXhwcmVzc2lvbiBjb21wYXJpc29uIGZvbGRpbmcuICBSZW1vdmUKCXRoZSBmb2xkaW5nIHRoYXQgdXNlZCBleHRyYWN0X2FycmF5X3JlZi4KCjIwMDctMTAtMTUgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMzMxMzMKCSogaGFpZmEtc2NoZWQuYyAocHJvY2Vzc19pbnNuX2ZvcndfZGVwc19iZV9pbl9zcGVjKTogQ2hlY2sgaWYKCXNwZWN1bGF0aW9uIHR5cGUgb2YgaW5zbiBjYW4gYmUgY2hhbmdlZCBiZWZvcmUgdHJ5aW5nIHRvIGRvIHRoYXQuCgoyMDA3LTEwLTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZHNlLmMgKHN0cnVjdCBpbnNuX2luZm8pOiBBZGQgJ2ZyYW1lX3JlYWQnIGZpZWxkLgoJKHNjYW5faW5zbik6IEZvciB0aGUgY2FsbCB0byBhIGNvbnN0IGZ1bmN0aW9uLCBzZXQgZnJhbWVfcmVhZCBpZgoJcmVsb2FkIGhhcyBiZWVuIHJ1bi4KCUlmIHRoZSBpbnNuIHJlYWRzIHRoZSBmcmFtZSwga2lsbCB0aGUgZnJhbWUgcmVsYXRlZCBzdG9yZXMuCgkoc2Nhbl9yZWFkc19ub3NwaWxsKTogTGlrZXdpc2UuCgoyMDA3LTEwLTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUtZWguYyAob3B0aW1pemVfZG91YmxlX2ZpbmFsbHkpOiBEb24ndCBhc3N1bWUgdGhhdCB0aGUKCWNsZWFudXAgd2UncmUgZHVwbGljYXRpbmcgaXMgb25seSBvbmUgc3RhdGVtZW50LgoKMjAwNy0xMC0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvZml4ZWQtYml0LmMsIGNvbmZpZy9pMzg2L2NwdWlkLmgsIGNvbmZpZy9pMzg2L2kzODYuYywKCWNvbmZpZy9pMzg2L2kzODYubWQsIGNvbmZpZy9pMzg2L3NzZS5tZCwgZnVuY3Rpb24uYywganVtcC5jLAoJbW9kdWxvLXNjaGVkLmMsIHJhLWNvbmZsaWN0LmMsIHRvcGxldi5jLCB0cmVlLWVoLmMsIHRyZWUtc3JhLmMsCgl0cmVlLXNzYS1kc2UuYywgdHJlZS12ZWN0LWFuYWx5emUuYywgdHJlZS12ZWN0LXBhdHRlcm5zLmMsCgl0cmVlLXZlY3QtdHJhbnNmb3JtLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBkb2MvZXh0ZW5kLnRleGk6IEZpeCBhIHR5cG8uCgoJKiBjLWNvbW1vbi5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgY19leHBhbmRfYm9keS4KCSogYy10cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBjX2Rpc3JlZ2FyZF9pbmxpbmVfbGltaXRzLgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBmb2xkX2J1aWxkX2NhbGxfZXhwci4KCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0NBTk5PVF9JTkxJTkVfVFJFRV9GTik6CglSZW1vdmUuCgkqIGMtdHJlZS5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgY19jYW5ub3RfaW5saW5lX3RyZWVfZm4uCgoyMDA3LTEwLTEzICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL2FpeDUzLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL2FpeHs0MSw0Myw1MSw1Mn0uaCAoVEFSR0VUX0FMVElWRUMpOiBEZWZpbmUgdG8gMC4KCShUQVJHRVRfQUxUSVZFQ19BQkkpOiBTYW1lLgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChUQVJHRVRfQUxUSVZFQyk6IERlbGV0ZS4KCShUQVJHRVRfQUxUSVZFQ19BQkkpOiBEZWxldGUuCgkqIGNvbmZpZy5nY2MgKHBvd2VycGMtaWJtLWFpeDUqKTogUmVuYW1lIHRvIGFpeDUuMi4gIEFkZCBuZXcKCXN0YW56YSBkZWZhdWx0aW5nIHRvIGFpeDUuMy4KCjIwMDctMTAtMTIgIE5hdGhhbiBGcm95ZCAgPGZyb3lkbmpAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKFNJX1JFRywgRElfUkVHKTogTmV3IGNvbnN0YW50cy4KCShzdHJtb3YpOiBVc2UgZGVmaW5lZCBjb25zdGFudHMuCgkoY21wc3RybnNpKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoZGVjaWRlX2FsZyk6IFVzZSBkZWZpbmVkIGNvbnN0YW50cy4KCShpeDg2X2V4cGFuZF9zdHJsZW4pOiBMaWtld2lzZS4KCjIwMDctMTAtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGRzZS5jIChmaW5kX3NoaWZ0X3NlcXVlbmNlKTogUmVpbnN0YXRlICI8PSBVTklUU19QRVJfV09SRCIgY29uZGl0aW9uLgoJKiB2YXItdHJhY2tpbmcuYyAobWljcm9fb3BlcmF0aW9uX2RlZik6IFVwZGF0ZSBjb21tZW50IG9uIHUubG9jLgoJKG1vZGVfZm9yX3JlZ19hdHRycywgdmFyX2xvd3BhcnQpOiBOZXcgZnVuY3Rpb25zLgoJKGFkZF91c2VzKTogQ29uc2lkZXIgcmVjb3JkaW5nIGEgbG93cGFydCBvZiBMT0MgZm9yIE1PX1VTRS4KCShhZGRfc3RvcmVzKTogTGlrZXdpc2UgTU9fU0VUIGFuZCBNT19DT1BZLiAgSWYgdGhlIHNvdXJjZSBvZiBhIHNldAoJb3IgY29weSBpcyBrbm93biwgc2V0IExPQyB0byB0aGUgU0VUIHRoYXQgcGVyZm9ybXMgdGhlIHNldCwgaW5zdGVhZAoJb2YgdGhlIGRlc3RpbmF0aW9uLgoJKGZpbmRfc3JjX3N0YXR1cywgZmluZF9zcmNfc2V0X3NyYyk6IFJlbW92ZSBMT0MgcGFyYW1ldGVyLgoJUmVwbGFjZSBJTlNOIHdpdGggdGhlIHNvdXJjZSB2YWx1ZS4KCShjb21wdXRlX2JiX2RhdGFmbG93LCBlbWl0X25vdGVzX2luX2JiKTogQ2hlY2sgZm9yIGEgU0VUIHUubG9jIHdoZW4KCWhhbmRsaW5nIE1PX1NFVCBhbmQgTU9fQ09QWS4gIFVwZGF0ZSB0aGUgY2FsbHMgdG8gZmluZF9zcmNfc3RhdHVzCglhbmQgZmluZF9zcmNfc2V0X3NyYy4KCjIwMDctMTAtMTIgIE5hdGhhbiBGcm95ZCAgPGZyb3lkbmpAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiAxMTAwMQoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzdHJtb3YpOiBDaGVjayBmb3IgZXNpIGFuZCBlZGkgdXNhZ2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoZGVjaWRlX2FsZyk6IENoZWNrIHdoZXRoZXIgd2UgY2FuIHVzZSBhCglyZXAgcHJlZml4IGFuZCBhZGp1c3QgYWxnb3JpdGhtIGNob2ljZSBhY2NvcmRpbmdseS4KCShpeDg2X2V4cGFuZF9zdHJsZW4pOiBDaGVjayBmb3IgZWF4LCBlY3gsIGFuZCBlZGkgdXNhZ2UuCgoyMDA3LTEwLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAobXVscWkzLCBtdWxoaTMpOiBVc2Ugb3B0YWJfbGliZnVuYy4KCjIwMDctMTAtMTIgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBnbG9iYWwuYyAoYnVpbGRfaW5zbl9jaGFpbik6IEZvcm1hdHRpbmcgZml4ZXMuCgoyMDA3LTEwLTEyICBSaWNoYXJkIEd1ZW50aGVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2ludG9fY29uZCk6IEZvcgoJY29tYmluaW5nIGJvdGggb3BlcmFuZHMgcmVxdWlyZSBlaXRoZXIgYm90aCBoYXZlIHNpbmdsZSB1c2VzCglvciBjb21iaW5pbmcgdG8gYSBjb25zdGFudC4KCjIwMDctMTAtMTIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzI2MTk4CgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGNhbl9wcm9wYWdhdGVfZnJvbSk6IERvIG5vdCBwcm9wYWdhdGUgZnJvbQoJYSByaHMgd2l0aCBzaWRlLWVmZmVjdHMgb3Igd2hpY2ggaXMgYSBsb2FkLgoJKGZvcndhcmRfcHJvcGFnYXRlX2ludG9fY29uZCk6IEFsc28gdHJ5IGNvbWJpbmluZyBib3RoIG9wZXJhbmRzLgoKMjAwNy0xMC0xMiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzc0MgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24pOiBSZXR1cm4gZmFsc2UKCWlmIGdldF92ZWN0eXBlX2Zvcl9zY2FsYXJfdHlwZSBmb3Igc2NhbGFyX2Rlc3QgY2FuJ3QgYmUgZGV0ZXJtaW5lZC4KCSh2ZWN0b3JpemFibGVfY2FsbCk6IFNhbWUgZm9yIHJoc190eXBlIGFuZCBsaHNfdHlwZS4KCjIwMDctMTAtMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNjQ1CgkqIHRyZWUtc3NhLWxpdmUuYyAobWFya19hbGxfdmFyc191c2VkKTogQWRkIGRhdGEgYXJndW1lbnQsCglwYXNzIGl0IHRvIHdhbGtfdHJlZS4KCShtYXJrX2FsbF92YXJzX3VzZWRfMSk6IFBhc3MgZGF0YSB0aHJvdWdoIHRvIG1hcmtfYWxsX3ZhcnNfdXNlZC4KCVdoZW4gY2FsbGluZyBzZXRfaXNfdXNlZCBvbiBhIFZBUl9ERUNMLCBpZiBkYXRhIGlzIG5vdCBOVUxMIGFuZAoJaXRzIERFQ0xfVUlEIGlzIGluIHRoZSBiaXRtYXAsIGNhbGwgbWFya19hbGxfdmFyc191c2VkIG9uIGl0cwoJREVDTF9JTklUSUFMIGFmdGVyIGNsZWFyaW5nIHRoZSBiaXQgaW4gYml0bWFwLgoJKHJlbW92ZV91bnVzZWRfbG9jYWxzKTogQWRqdXN0IG1hcmtfYWxsX3ZhcnNfdXNlZCBjYWxsZXJzLgoJSW5zdGVhZCBvZiByZW1vdmluZyB1bnVzZWQgZ2xvYmFsIHZhcnMgZnJvbSB1bmV4cGFuZGVkX3Zhcl9saXN0CglpbW1lZGlhdGVseSByZWNvcmQgdGhlbSBpbiBiaXRtYXAsIGNhbGwgbWFya19hbGxfdmFyc191c2VkIG9uCglhbGwgdXNlZCBnbG9iYWwgdmFycyBmcm9tIHVuZXhwYW5kZWRfdmFyX2xpc3QgYW5kIG9ubHkgcHVyZ2UKCWdsb2JhbCB2YXJzIHRoYXQgd2VyZW4ndCBmb3VuZCB1c2VkIGV2ZW4gZHVyaW5nIHRoYXQgc3RlcC4KIAoyMDA3LTEwLTExICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogZ3Roci1wb3NpeC5oIChfX2d0aHJlYWRfYWN0aXZlX2luaXQpOiBDcmVhdGUgZGV0YWNoZWQgaW5zdGVhZCBvZgoJam9pbmFibGUgdGhyZWFkIHdoZW4gdGVzdGluZyB3aGV0aGVyIHRocmVhZHMgYXJlIGFjdGl2ZSBvbiBocHBhLWhwdXguCgkqIGd0aHItcG9zaXg5NS5oIChfX2d0aHJlYWRfYWN0aXZlX2luaXQpOiBMaWtld2lzZS4KCjIwMDctMTAtMTEgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMzY3NgoJKiBnbG9iYWwuYyAoYnVpbGRfaW5zbl9jaGFpbik6IEluY2x1ZGUgaW5zbiB0aGF0IG9jY3VyIGJldHdlZW4KCWJhc2ljIGJsb2Nrcy4KCQoyMDA3LTEwLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnZW5ndHlwZS15YWNjLnk6IERlbGV0ZS4KCjIwMDctMTAtMTEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChBWF9SRUcsIERYX1JFRywgQ1hfUkVHKTogTmV3IGNvbnN0YW50cy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX2FyZ19yZWdub19wLCBmdW5jdGlvbl9hcmdfMzIsCglmdW5jdGlvbl92YWx1ZV8zMiwgZnVuY3Rpb25fdmFsdWVfNjQsIGZ1bmN0aW9uX3ZhbHVlX21zXzY0LAoJc2V0dXBfaW5jb21pbmdfdmFyYXJnc182NCwgaXg4Nl9leHBhbmRfcHJvbG9ndWUsIGl4ODZfZXhwYW5kX2NhbGwsCglsZWdpdGltaXplX3Rsc19hZGRyZXNzLCB4ODZfdGhpc19wYXJhbWV0ZXIsIHg4Nl9vdXRwdXRfbWlfdGh1bmspOgoJVXNlIG5ldyBjb25zdGFudHMuCgoyMDA3LTEwLTExICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBnY3NlLmMgKGhhc2hfc2Nhbl9zZXQpOiBJZiB0aGUgbmV4dCBub25ub3RlIGluc24gaXMgaW4KCWEgZGlmZmVyZW50IGJhc2ljIGJsb2NrIGluc2VydCB0aGUgc2V0LgoKMjAwNy0xMC0xMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzM3MjQKCSogdHJlZS1jZmcuYyAob25lX3BvaW50ZXJfdG9fdXNlbGVzc190eXBlX2NvbnZlcnNpb25fcCk6IE5ldyBmdW5jdGlvbi4KCSh2ZXJpZnlfZ2ltcGxlX2V4cHIpOiBVc2UgaXQgdG8gdmVyaWZ5IHBvaW50ZXItdG8gdHlwZXMgZm9yCglBRERSX0VYUFJzLgoKMjAwNy0xMC0xMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIGMvMzM3MjYKCSogYy10eXBlY2suYyAoYnVpbGRfYXJyYXlfcmVmKTogRG8gbm90IHN0cmlwIHF1YWxpZmllcnMgZnJvbQoJdGhlIGFycmF5IGVsZW1lbnQgdHlwZS4KCjIwMDctMTAtMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMzYzOAoJKiBkc2UuYyAoc3RydWN0IGluc25faW5mbyk6IFJlbW92ZSAnc3RhY2tfcmVhZCcgZmllbGQsCglhZGQgJ3N0YWNrX3BvaW50ZXJfYmFzZWQnIGZpZWxkLgoJKHJlY29yZF9zdG9yZSk6IEZvciBhIHN0b3JlIHdpdGggbm9uLWNvbnN0YW50IGJhc2UsIHJlY29yZAoJd2hldGhlciBpdCBpcyBzdGFjayBwb2ludGVyIGJhc2VkLgoJKHNjYW5faW5zbik6IEZvciB0aGUgY2FsbCB0byBhIGNvbnN0IGZ1bmN0aW9uLCByZW1vdmUgc3RhY2sKCXBvaW50ZXIgYmFzZWQgc3RvcmVzIGZyb20gdGhlIGxpc3Qgb2YgbG9jYWwgYWN0aXZlIHN0b3Jlcy4KCShzY2FuX3JlYWRzX25vc3BpbGwpOiBEZWxldGUgY29kZSBkZWFsaW5nIHdpdGggY29uc3QgZnVuY3Rpb25zLgoKMjAwNy0xMC0xMCAgUGV0ZXIgQmVyZ25lciAgPGJlcmduZXJAdm5ldC5pYm0uY29tPgoKCSogcmEtY29uZmxpY3QuYyAocGFydGlhbF9iaXRudW0sIG1heF9iaXRudW0pOiBDaGFuZ2UgdHlwZSBvZiB2YXJpYWJsZXMKCXRvIEhPU1RfV0lERV9JTlQuCgkoY29uZmxpY3RfcCwgc2V0X2NvbmZsaWN0LCBzZXRfY29uZmxpY3RzKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxsb2MpOiBMaWtld2lzZS4KCSogcmEuaDogVXBkYXRlIHByb3RvdHlwZXMuCgoyMDA3LTEwLTEwICBXb2xmZ2FuZyBHZWxsZXJpY2ggIDxnZWxsZXJpY2hAZGUuaWJtLmNvbT4KCgkqIG9wdGgtZ2VuLmF3azogRml4ZWQgZ2VuZXJhdGlvbiBvZiBjb21tZW50IHN0YXRpbmcgdGhlIG9yaWdpbgoJICBvZiBvcHRpb25zLmgKCjIwMDctMTAtMTAgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCVJldmVydDoKCTIwMDctMTAtMDkgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoJKiBsb25nbG9uZy5oIChjb3VudF9sZWFkaW5nX3plcm9zKTogUmVwbGFjZSAneycgYW5kICd9JyB3aXRoICcleycKCWFuZCAnJX0nLCByZXNwZWN0aXZlbHkuCgoJUmV2ZXJ0OgoJMjAwNy0xMC0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgkqIGNvbmZpZy9tNjhrL202OGsuYyAocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAneycgYW5kICd9Jy4KCSogY29uZmlnL202OGsvbTY4ay5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBBY2NlcHQgJ3snCglhbmQgJ30nLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBSZXBsYWNlICd7JyB3aXRoICcleycgd2hlcmUgJ3snIGlzCgltZWFudCB0byBiZSBvdXRwdXQuCgoJUmV2ZXJ0OgoJMjAwNy0xMC0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgkqIGNvbmZpZy9tNjhrL202OGsuYywgY29uZmlnL202OGsvbTY4ay5tZDogVXNlIHRoZSBhc3NlbWJseQoJc3ludGF4IGZvciBBU1NFTUJMRVJfRElBTEVDVC4KCSogY29uZmlnL202OGsvbTY4ay5oIChBU1NFTUJMRVJfRElBTEVDVCk6IE5ldy4KCjIwMDctMTAtMTAgIFJldml0YWwgRXJlcyAgPGVyZXNAaWwuaWJtLmNvbT4KCgkqIG1vZHVsby1zY2hlZC5jIChjaGVja19ub2Rlc19vcmRlcik6IER1bXAgdGhlIGZpbmFsIG9yZGVyIG9mCgl0aGUgbm9kZXMuCgkoZ2V0X3NjaGVkX3dpbmRvdyk6IEFkZCBkdW1wIGluZm8uCgkoY2FsY3VsYXRlX29yZGVyX3BhcmFtcyk6IER1bXAgb3JkZXIgcGFyYW1zIG9mIHRoZSBub2Rlcy4KCjIwMDctMTAtMDkgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMzY2OQoJKiByYS1jb25mbGljdC5jIChyZWNvcmRfb25lX2NvbmZsaWN0X2JldHdlZW5fcmVnbm9zLCAKCXNldF9jb25mbGljdHNfZm9yX2Vhcmx5Y2xvYmJlciwgZ2xvYmFsX2NvbmZsaWN0cyk6IEltcHJvdmVkIGxvZ2dpbmcuCgkoZ2xvYmFsX2NvbmZsaWN0cyk6IEVuaGFuY2VkIGluY29ycmVjdCBjaGVjay4KCQoyMDA3LTEwLTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfY2FsbF9mcmFtZV9pbmZvKTogRkRFcyBhcmUgYWx3YXlzIGVtaXR0ZWQKCWlmIGZsYWdfZXhjZXB0aW9ucyBpcyBub3Qgc2V0LgoJKiBjb25maWcvZGFyd2luLmMgKGRhcndpbl9lbWl0X3Vud2luZF9sYWJlbCk6IFJld3JpdGUgdG8gdXNlCglhc3NlbWJsZV9uYW1lIHJhdGhlciB0aGFuIGluY29ycmVjdGx5IGVtdWxhdGluZyBpdC4KCgkqIGRvYy9leHRlbmQudGV4aSAoRGVwcmVjYXRlZCBGZWF0dXJlcyk6IE1lbnRpb24gdGhhdCA8PyBhbmQgPj8gYW5kCglmcmllbmRzIGFyZSByZW1vdmVkIGZyb20gRysrLgoKMjAwNy0xMC0wOSAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IC1Xbm9udGVtcGxhdGUtZnJpZW5kLAoJLVd3cml0ZS1zdHJpbmdzIGFuZCAtV211bHRpY2hhciBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyBXYWxsCgllbmFibGluZyB0aGVtIGlzIHJlZHVuZGFudC4gRG9uJ3QgY2hlY2sgdHdvIHRpbWVzIGZvcgoJY19kaWFsZWN0X2N4eC4KCQoyMDA3LTEwLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiByYS1jb25mbGljdC5jIChyZWNvcmRfb25lX2NvbmZsaWN0X2JldHdlZW5fcmVnbm9zKTogUmV2ZXJ0Cgl0aGUgbGFzdCBjaGFuZ2UuCgkoc2V0X2NvbmZsaWN0c19mb3JfZWFybHljbG9iYmVyKTogTGlrZXdpc2UuCgkoZ2xvYmFsX2NvbmZsaWN0cyk6IExpa2V3aXNlLgoKMjAwNy0xMC0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsb25nbG9uZy5oIChjb3VudF9sZWFkaW5nX3plcm9zKTogUmVwbGFjZSAneycgYW5kICd9JyB3aXRoICcleycKCWFuZCAnJX0nLCByZXNwZWN0aXZlbHkuCgoyMDA3LTEwLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAneycgYW5kICd9Jy4KCSogY29uZmlnL202OGsvbTY4ay5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBBY2NlcHQgJ3snCglhbmQgJ30nLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBSZXBsYWNlICd7JyB3aXRoICcleycgd2hlcmUgJ3snIGlzCgltZWFudCB0byBiZSBvdXRwdXQuCgoyMDA3LTEwLTA5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMzY5MgoJKiBnaW1wbGlmeS5jIChjYW5vbmljYWxpemVfY29tcG9uZW50X3JlZik6IEhvbm9yIHF1YWxpZmllcnMKCW9mIHJlZmVyZW5jZWQgc3RydWN0dXJlIGFuZCBjb21wb25lbnQuCgoyMDA3LTEwLTA5ICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzM2NjkKCSogcmEtY29uZmxpY3QuYyAocmVjb3JkX29uZV9jb25mbGljdF9iZXR3ZWVuX3JlZ25vcywKCXNldF9jb25mbGljdHNfZm9yX2Vhcmx5Y2xvYmJlciwgZ2xvYmFsX2NvbmZsaWN0cyk6IEltcHJvdmVkIGxvZ2dpbmcuCgkoZ2xvYmFsX2NvbmZsaWN0cyk6IFJlbW92ZWQgaW5jb3JyZWN0IGNoZWNrLgoKMjAwNy0xMC0wOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNjE1CgkqIHRyZWUtc3NhLXByZS5jIChjb21wdXRlX2F2YWlsKTogRG9uJ3QgY2FsbCBtYWtlX3ZhbHVlc19mb3Jfc3RtdAoJaWYgdGhlIHN0YXRlbWVudCBtaWdodCB0aHJvdy4gIEZpeCBmb3JtYXR0aW5nLgoKMjAwNy0xMC0wOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNjE1CgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAobW92ZW1lbnRfcG9zc2liaWxpdHkpOiBSZXR1cm4gTU9WRV9JTVBPU1NJQkxFCglpZiB0aGUgcmhzIG1pZ2h0IHRocm93LgoKMjAwNy0xMC0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaW52b2tlLnRleGkgKGFsaWduLXRocmVzaG9sZCwgYWxpZ24tbG9vcC1pdGVyYXRpb25zKTogRG9jdW1lbnQuCgkqIGZpbmFsLmM6IEluY2x1ZGUgY2ZnbG9vcC5oLCBwYXJhbXMuaAoJKGNvbXB1dGVfYWxpZ25tZW50cyk6IER1bXAgZGVjaXNpb25zIGFuZCBjb21wYXJlIHRoZW0gd2l0aCBsb29wCglzdHJ1Y3R1cmU7IGhvbm9yIGdpdmVuIHBhcmFtZXRlcnMuCgkocGFzc19jb21wdXRlX2FsaWdubWVudHMpOiBOZXcgZHVtcCBmaWxlLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9BTElHTl9USFJFU0hPTEQsIFBBUkFNX0FMSUdOX0xPT1BfSVRFUkFUSU9OUyk6IE5ldy4KCSogTWFrZWZpbGUuaW4gKGZpbmFsLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBjZmdsb29wLmggYW5kIHBhcmFtcy5oCgoyMDA3LTEwLTA5ICBKYW1lcyBFLiBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXguY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNjU1CglQUiBtaWRkbGUtZW5kLzIyMTU2CgkqIHRyZWUtc3JhLmMgKGJpdGZpZWxkX292ZXJsYXBzX3ApOiBXaGVuIGZsZC0+ZWxlbWVudCBpcyBJTlRFR0VSX0NTVCwKCWNvbnZlcnQgaXQgdG8gYml0c2l6ZXR5cGUgYmVmb3JlIHNpemVfYmlub3AgY2FsbC4KCjIwMDctMTAtMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNTcyCgkqIHRyZWUtaW5saW5lLmMgKHVwZGF0ZV9zc2FfYWNyb3NzX2Fibm9ybWFsX2VkZ2VzKTogVG9sZXJhdGUKCXRoZSBhYnNlbmNlIG9mIGEgY29ycmVzcG9uZGluZyBlZGdlIGZyb20gdGhlIGV4aXQgYmxvY2suCgoyMDA3LTEwLTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzIyMTU2CgkqIHRyZWUtc3JhLmMgKGluc3RhbnRpYXRlX2VsZW1lbnQpOiBVc2UgQllURVNfQklHX0VORElBTiBmb3IKCWJpdC1maWVsZCBsYXlvdXQuCgkoc3JhX2J1aWxkX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4gIFNldCB1cCBtYXNrIGRlcGVuZGluZyBvbgoJcHJlY2lzaW9uLCBub3QgdHlwZS4KCShzcmFfYnVpbGRfYmZfYXNzaWdubWVudCk6IFVzZSBCWVRFU19CSUdfRU5ESUFOLiAgRG9uJ3Qgb3ZlcmZsb3cKCWNvbXB1dGluZyBiaXQgbWFza3MuCgkoc3JhX2J1aWxkX2VsdF9hc3NpZ25tZW50KTogRG9uJ3Qgdmlldy1jb252ZXJ0IGZyb20gc2lnbmVkIHRvCgl1bnNpZ25lZC4KCShzcmFfZXhwbG9kZV9iaXRmaWVsZF9hc3NpZ25tZW50KTogVXNlIGJpdC1maWVsZCB0eXBlIGlmCglwb3NzaWJsZS4gIFVzZSBCWVRFU19CSUdfRU5ESUFOLgoKMjAwNy0xMC0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yMjE1NgoJKiB0cmVlLXNyYS5jIChzY2FsYXJpemVfbHNkdCk6IEZpeCB0aGlua28gaW4gdGVzdGluZyB3aGV0aGVyCgl0aGUgb3JpZ2luYWwgc3RtdCBjYW4gdGhyb3cuCgkoc3JhX2J1aWxkX2JmX2Fzc2lnbm1lbnQpOiBGaXggdHlwZSBtaXNtYXRjaCB3aGVuIGFwcGx5aW5nIG5lZ2F0ZWQKCW1hc2suCgoyMDA3LTEwLTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoREFSV0lOX1JFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKTogUmVnaXN0ZXIKCScjcHJhZ21hIG1hcmsnIHRvIGJlIGV4ZWN1dGVkIGF0IHByZXByb2Nlc3NpbmcgdGltZS4KCjIwMDctMTAtMDggIE9sbGllIFdpbGQgIDxhYXdAZ29vZ2xlLmNvbT4KCgkqIHZhcmFzbS5jIChjb21wYXJlX2NvbnN0YW50KTogUmVtb3ZlZCBjYWxsIHRvCglsYW5nX2hvb2tzLmV4cGFuZF9jb25zdGFudC4KCShjb3B5X2NvbnN0YW50cyk6IFJlbW92ZWQgY2FsbCB0byBsYW5nX2hvb2tzLmV4cGFuZF9jb25zdGFudC4KCShjb21wdXRlX3JlbG9jX2Zvcl9jb25zdGFudCk6IFJlbW92ZWQgY2FsbCB0bwoJbGFuZ19ob29rcy5leHBhbmRfY29uc3RhbnQuCgkob3V0cHV0X2FkZHJlc3NlZF9jb25zdGFudHMpOiBSZW1vdmVkIGNhbGwgdG8KCWxhbmdfaG9va3MuZXhwYW5kX2NvbnN0YW50LgoJKGNvbnN0cnVjdG9yX3N0YXRpY19mcm9tX2VsdHNfcCk6IFJlbW92ZWQgY2FsbCB0bwoJbGFuZ19ob29rcy5leHBhbmRfY29uc3RhbnQuCgkob3V0cHV0X2NvbnN0YW50KTogUmVtb3ZlZCBjYWxscyB0byBsYW5nX2hvb2tzLmV4cGFuZF9jb25zdGFudC4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogUmVtb3ZlZCBmaWVsZCBleHBhbmRfY29uc3RhbnQuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3JldHVybl90cmVlKTogUmVtb3ZlZC4KCShMQU5HX0hPT0tTX0VYUEFORF9DT05TVEFOVCk6IFJlbW92ZWQuCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6IFJlbW92ZWQgTEFOR19IT09LU19FWFBBTkRfQ09OU1RBTlQuCgkqIGxhbmdob29rcy5jIChsaGRfcmV0dXJuX3RyZWUpOiBSZW1vdmVkLgoKMjAwNy0xMC0wOCAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb21iaW5lLmMgKHNldHVwX2luY29taW5nX3Byb21vdGlvbnMpOiBFbnN1cmUgdGhhdAoJYXJndW1lbnRzIHRoYXQgaGF2ZSBub3QgdW5kZXJnb25lIG1vZGUgcHJvbW90aW9ucyBkbyBub3QKCWluY29ycmVjdGx5IGdldCBtYXJrZWQgYXMgYmVpbmcgc2lnbi0gb3IgemVyby1leHRlbmRlZC4KCjIwMDctMTAtMDggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMzNjkzCglQUiBtaWRkbGUtZW5kLzMzNjk1CglQUiBtaWRkbGUtZW5kLzMzNjk3CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpOiBVc2UgY29ycmVjdCB0eXBlcyBpbiBmb2xkaW5nCglvZiBhICogKDEgPDwgYikgdG8gKGEgPDwgYikuICBMaWtld2lzZSBmb3IgfkEgJiB+QiB0byB+KEEgfCBCKQoJYW5kIGJ1aWxkaW5nIG9mIFJST1RBVEVfRVhQUi4KCjIwMDctMTAtMDggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMzNjkxCglQUiBtaWRkbGUtZW5kLzMzNjk0CglQUiBtaWRkbGUtZW5kLzMzNjk2CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpOiBVc2UgdGhlIGNvcnJlY3QgdHlwZXMgd2hlbgoJZm9sZGluZyAoQSB8IENTVDEpICYgQ1NUMiB0byAoQSAmIENTVDIpIHwgKENTVDEgJiBDU1QyKS4KCShmb2xkX2JpbmFyeSk6IFVzZSB0aGUgY29ycmVjdCB0eXBlcyB3aGVuIGZvbGRpbmcKCSgtQSkgLSBCIHRvICgtQikgLSBBLgoJKGZvbGRfdW5hcnkpOiBVc2UgdGhlIGNvcnJlY3QgdHlwZXMgd2hlbiBmb2xkaW5nIH4oWCkuCgoyMDA3LTEwLTA4ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FsbCk6IGZpeCBmb3JtYXR0aW5nIGlzc3Vlcy4KCQoyMDA3LTEwLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbl8xKTogQ2Fub25pY2FsaXplCgl0cnVuY2F0ZWQgc2hpZnQgY291bnRzLgoKMjAwNy0xMC0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMsIGNvbmZpZy9tNjhrL202OGsubWQ6IFVzZSB0aGUgYXNzZW1ibHkKCXN5bnRheCBmb3IgQVNTRU1CTEVSX0RJQUxFQ1QuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoQVNTRU1CTEVSX0RJQUxFQ1QpOiBOZXcuCgoyMDA3LTEwLTA2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoJICAgIE5hdGhhbiBGcm95ZCAgPGZyb3lkbmpAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZnJhbWVfaW5pdCk6IENoZWNrIGZvciBEV0FSRjJfRlJBTUVfSU5GTwoJd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHJlY29yZCBJTkNPTUlOR19SRVRVUk5fQUREUl9SVFguCgoyMDA3LTEwLTA2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVJldmVydDoKCTIwMDctMDItMTIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLmggKERFQ0xfSUdOT1JFRF9QKTogRG9jdW1lbnQgZnVydGhlciBlZmZlY3QgZm9yIEZVTkNUSU9OX0RFQ0wuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2V4cGFuZF9mdW5jdGlvbik6IElmIERFQ0xfSUdOT1JFRF9QIGlzIHNldCBvbgoJdGhlIGZ1bmN0aW9uLCB0ZW1wb3JhcmlseSBwb2ludCB0aGUgZGVidWcgaW50ZXJmYWNlIHRvIHRoZSBudWxsIG9uZS4KCjIwMDctMTAtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNjU1CglQUiBtaWRkbGUtZW5kLzIyMTU2CgkqIHRyZWUtc3JhLmMgKGJpdGZpZWxkX292ZXJsYXBzX3ApOiBIYW5kbGUgYXJyYXkgYW5kIGNvbXBsZXggZWxlbWVudHMuCgoyMDA3LTEwLTA2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzU3MgoJKiB0cmVlLWNmZy5jICh2ZXJpZnlfc3RtdHMpOiBDaGVjayBmb3IgbWlzc2luZyBQSEkgZGVmcy4KCSogdHJlZS1pbmxpbmUuYyAodXBkYXRlX3NzYV9hY3Jvc3NfZWhfZWRnZXMpOiBSZW5hbWVkIHRvLi4uCgkodXBkYXRlX3NzYV9hY3Jvc3NfYWJub3JtYWxfZWRnZXMpOiAuLi4gdGhpcy4gIFNldCBzbG90cyBpbiB0aGUKCXJldHVybiBQSEkgbm9kZS4KCShjb3B5X2VkZ2VzX2Zvcl9iYik6IEhhbmRsZSBub25sb2NhbCBsYWJlbCBlZGdlcy4KCShtYWtlX25vbmxvY2FsX2xhYmVsX2VkZ2VzKTogRGVsZXRlZC4KCShvcHRpbWl6ZV9pbmxpbmVfY2FsbHMpOiBEb24ndCBjYWxsIGl0LgoKMjAwNy0xMC0wNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBndGhyLXNpbmdsZS5oOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgoyMDA3LTEwLTA1ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMzY2NwoJKiBsb3dlci1zdWJyZWcuYyAoZGVjb21wb3NlX211bHRpd29yZF9zdWJyZWdzKTogVXNlCgl2YWxpZGF0ZV91bnNoYXJlX2NoYW5nZSgpLgoKMjAwNy0xMC0wNSAgUGV0ZXIgQmVyZ25lciAgPGJlcmduZXJAdm5ldC5pYm0uY29tPgoKCSogcmEtY29uZmxpY3QuYzogSW5jbHVkZSAic3BhcnNlc2V0LmgiLgoJKGNvbmZsaWN0cyk6IENoYW5nZSB0byBIT1NUX1dJREVTVF9GQVNUX0lOVC4KCShhbGxvY25vc19saXZlKTogUmVkZWZpbmUgdmFyaWFibGUgYXMgYSBzcGFyc2VzZXQuCgkoU0VUX0FMTE9DTk9fTElWRSwgQ0xFQVJfQUxMT0NOT19MSVZFLCBHRVRfQUxMT0NOT19MSVZFKToKCURlbGV0ZSBtYWNyb3MuCgkoYWxsb2Nub19yb3dfd29yZHMpOiBSZW1vdmVkIGdsb2JhbCB2YXJpYWJsZS4KCShwYXJ0aWFsX2JpdG51bSwgbWF4X2JpdG51bSwgYWRqYWNlbmN5X3Bvb2wsIGFkamFjZW5jeSk6IE5ldyB2YXJpYWJsZXMuCgkoQ09ORkxJQ1RfQklUTlVNLCBDT05GTElDVF9CSVROVU1fRkFTVCk6IE5ldyBkZWZpbmVzLgoJKGNvbmZsaWN0X3AsIHNldF9jb25mbGljdF9wLCBzZXRfY29uZmxpY3RzX3ApOiBOZXcgZnVuY3Rpb25zLgoJKHJlY29yZF9vbmVfY29uZmxpY3RfYmV0d2Vlbl9yZWdub3MpOiBDYWNoZSBhbGxvY25vIHZhbHVlcyBhbmQgcmV1c2UuCglVc2Ugc2V0X2NvbmZsaWN0X3AuCgkocmVjb3JkX29uZV9jb25mbGljdCk6IFVwZGF0ZSB1c2VzIG9mIGFsbG9jbm9zX2xpdmUgdG8gdXNlCgl0aGUgc3BhcnNlc2V0IHJvdXRpbmVzLiAgVXNlIHNldF9jb25mbGljdHNfcC4KCShtYXJrX3JlZ19zdG9yZSk6IExpa2V3aXNlLgoJKHNldF9yZWdfaW5fbGl2ZSk6IExpa2V3aXNlLgoJKGdsb2JhbF9jb25mbGljdHMpOiBVcGRhdGUgdXNlcyBvZiBhbGxvY25vc19saXZlLgoJVXNlIHRoZSBuZXcgYWRqYWNlbmN5IGxpc3QgdG8gdmlzaXQgYW4gYWxsb2NubydzIG5laWdoYm9ycwoJcmF0aGVyIHRoYW4gaXRlcmF0aW5nIG92ZXIgYWxsIHBvc3NpYmxlIGFsbG9jbm9zLgoJQ2FsbCBzZXRfY29uZmxpY3RzX3AgdG8gc2V0dXAgY29uZmxpY3RzIHJhdGhlciB0aGFuIGFkZGluZwoJdGhlbSBtYW51YWxseS4KCSogZ2xvYmFsLmM6IENvbW1lbnRzIHVwZGF0ZWQuICAKCShDT05GTElDVFApOiBEZWxldGUgZGVmaW5lLgoJKHJlZ25vX2NvbXBhcmUpOiBOZXcgZnVuY3Rpb24uICBBZGQgcHJvdG90eXBlLgoJKGdsb2JhbF9hbGxvYyk6IFNvcnQgdGhlIGFsbG9jbm8gdG8gcmVnbm8gbWFwcGluZyBhY2NvcmRpbmcgdG8KCXdoaWNoIGJhc2ljIGJsb2NrcyB0aGUgcmVnbm9zIGFyZSByZWZlcmVuY2VkIGluLiAgTW9kaWZ5IHRoZQoJY29uZmxpY3QgYml0IG1hdHJpeCB0byBhIGNvbXByZXNzZWQgdHJpYW5ndWxhciBiaXRtYXRyaXguCglPbmx5IGFsbG9jYXRlIHRoZSBjb25mbGljdCBiaXQgbWF0cml4IGFuZCBhZGphY2VuY3kgbGlzdHMgaWYKCXdlIGFyZSBhY3R1YWxseSBnb2luZyB0byBhbGxvY2F0ZSBzb21ldGhpbmcuCgkoZXhwYW5kX3ByZWZlcmVuY2VzKTogVXNlIGNvbmZsaWN0X3AuICBVcGRhdGUgdXNlcyBvZiBhbGxvY25vc19saXZlLgoJKHBydW5lX3ByZWZlcmVuY2VzKTogVXNlIHRoZSBGT1JfRUFDSF9DT05GTElDVCBtYWNybyB0byB2aXNpdCBhbgoJYWxsb2NubydzIG5laWdoYm9ycyByYXRoZXIgdGhhbiBpdGVyYXRpbmcgb3ZlciBhbGwgcG9zc2libGUgYWxsb2Nub3MuCgkobWlycm9yX2NvbmZsaWN0cyk6IFJlbW92ZWQgZnVuY3Rpb24uCgkoZHVtcF9jb25mbGljdHMpOiBJdGVyYXRlIG92ZXIgcmVnbm9zIHJhdGhlciB0aGFuIGFsbG9jbm9zIHNvCgl0aGF0IGFsbCBkdW1wIG91dHB1dCB3aWxsIGJlIHNvcnRlZCBieSByZWdubyBudW1iZXIuCglVc2UgdGhlIEZPUl9FQUNIX0NPTkZMSUNUIG1hY3JvLgoJKiByYS5oOiBDb21tZW50cyB1cGRhdGVkLgoJKGNvbmZsaWN0cyk6IFVwZGF0ZSBwcm90b3R5cGUgdG8gSE9TVF9XSURFU1RfRkFTVF9JTlQuCgkocGFydGlhbF9iaXRudW0sIG1heF9iaXRudW0sIGFkamFjZW5jeSwgYWRqYWNlbmN5X3Bvb2wpOgoJQWRkIHByb3RvdHlwZXMuCgkoQURKQUNFTkNZX1ZFQ19MRU5HVEgsIEZPUl9FQUNIX0NPTkZMSUNUKTogTmV3IGRlZmluZXMuCgkoYWRqYWNlbmN5X2xpc3RfZCwgYWRqYWNlbmN5X2l0ZXJhdG9yX2QpOiBOZXcgdHlwZXMuCgkoYWRkX25laWdoYm9yLCBhZGphY2VuY3lfaXRlcl9pbml0LCBhZGphY2VuY3lfaXRlcl9kb25lLAoJYWRqYWNlbmN5X2l0ZXJfbmV4dCwgcmVnbm9fYmFzaWNfYmxvY2spOiBOZXcgc3RhdGljIGlubGluZSBmdW5jdGlvbnMuCgkoRVhFQ1VURV9JRl9TRVRfSU5fQUxMT0NOT19TRVQpOiBSZW1vdmVkIGRlZmluZS4KCShjb25mbGljdF9wKTogQWRkIGZ1bmN0aW9uIHByb3RvdHlwZS4KCSogc3BhcnNlc2V0LmgsIHNwYXJzZXNldC5jOiBOZXcgZmlsZXMuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IEFkZCBzcGFyc2VzZXQuby4KCShzcGFyc2VzZXQubyk6IE5ldyBydWxlLgoKMjAwNy0xMC0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzM2NjYKCSogZm9sZC1jb25zdC5jIChmb2xkX3VuYXJ5KTogRG8gbm90IGZvbGQgKGxvbmcgbG9uZykoaW50KXB0cgoJdG8gKGxvbmcgbG9uZylwdHIuCgoyMDA3LTEwLTA1ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJUFIgaW5saW5lLWFzbS8zMzYwMAoJKiBmdW5jdGlvbi5jIChtYXRjaF9hc21fY29uc3RyYWludHNfMSk6IENoZWNrIGZvciBpbnB1dAoJYmVpbmcgdXNlZCBpbiB0aGUgb3V0cHV0cy4KCjIwMDctMTAtMDUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9naW1wbGVfZXhwcik6IEFjY2VwdCBPQkpfVFlQRV9SRUYuCgoyMDA3LTEwLTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJUFIgdGFyZ2V0LzMzNjM1CgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19yZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBSZXdyaXRlIHRvIHVzZQoJc3Vic2V0IGNoZWNrcy4gIE1ha2UgdGhlIGNvc3Qgb2YgRlBSIC0+IEZQUiBtb3ZlcyBkZXBlbmQgb24KCW1pcHNfbW9kZV9va19mb3JfbW92X2ZtdF9wLgoKMjAwNy0xMC0wNCAgRG91ZyBLd2FuICA8ZG91Z2t3YW5AZ29vZ2xlLmNvbT4KCgkqIGd0aHItcG9zaXguaCAoX19ndGhyZWFkX2NvbmRfYnJvYWRjYXN0LCBfX2d0aHJlYWRfY29uZF93YWl0LAoJX19ndGhyZWFkX2NvbmRfd2FpdF9yZWN1cnNpdmUpOiBBZGQgdG8gZXh0ZW5kIGludGVyZmFjZSBmb3IgUE9TSVgKCWNvbmRpdGlvbmFsIHZhcmlhYmxlcy4gKF9fR1RIUkVBRF9IQVNfQ09ORCk6IE1hY3JvIGRlZmluZWQgdG8gc2lnbmlmeQoJc3VwcG9ydCBvZiBjb25kaXRpb25hbCB2YXJpYWJsZXMuCgkqIGd0aHItcG9zaXg5NS5oIChfX2d0aHJlYWRfY29uZF9icm9hZGNhc3QsIF9fZ3RocmVhZF9jb25kX3dhaXQsCglfX2d0aHJlYWRfY29uZF93YWl0X3JlY3Vyc2l2ZSk6IEFkZCB0byBleHRlbmQgaW50ZXJmYWNlIGZvciBQT1NJWAoJY29uZGl0aW9uYWwgdmFyaWFibGVzLiAoX19HVEhSRUFEX0hBU19DT05EKTogTWFjcm8gZGVmaW5lZCB0byBzaWduaWZ5CglzdXBwb3J0IG9mIGNvbmRpdGlvbmFsIHZhcmlhYmxlcy4KCSogZ3Roci1zaW5nbGUuaCAoX19ndGhyZWFkX2NvbmRfYnJvYWRjYXN0LCBfX2d0aHJlYWRfY29uZF93YWl0LAoJX19ndGhyZWFkX2NvbmRfd2FpdF9yZWN1cnNpdmUpOiBBZGQgdG8gZXh0ZW5kIGludGVyZmFjZSBmb3IgUE9TSVgKCWNvbmRpdGlvbmFsIHZhcmlhYmxlcy4KCSogZ3Roci5oOiBVcGRhdGUgY29tbWVudHMgdG8gZG9jdW1lbnQgbmV3IGludGVyZmFjZS4KCjIwMDctMTAtMDQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYnVpbGRfc3RhdGljX2NkdG9yKTogRG9uJ3Qgc2V0IERFQ0xfSUdOT1JFRF9QLgoKMjAwNy0xMC0wNCAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoZXhwYW5kX2VwaWxvZ3VlKTogRG9uJ3Qgc2V0IFJUWF9GUkFNRV9SRUxBVEVEX1AuCgoyMDA3LTEwLTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMzY0MQoJKiB0cmVlLWNmZy5jICh2ZXJpZnlfZ2ltcGxlX2V4cHIpOiBPcGVyYW5kIG9uZSBvZiBQT0lOVEVSX1BMVVNfRVhQUgoJZG9lcyBub3QgbmVlZCB0byBiZSBvZiBJTlRFR0VSX1RZUEUuCgkodmVyaWZ5X2dpbXBsZV8yKTogTmV3IGZ1bmN0aW9uIHNwbGl0IG91dCBmcm9tIC4uLgoJKHZlcmlmeV9naW1wbGVfMSk6IC4uLiBoZXJlLiAgSUNFIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBkdXJpbmcKCXZlcmlmaWNhdGlvbi4KCjIwMDctMTAtMDQgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMzNjUzCgkqIGRjZS5jIChkZWxldGFibGVfaW5zbl9wXzEpOiBVc2Ugdm9sYXRpbGVfcmVmc19wKCkuCgkqIGRzZS5jIChzY2FuX2luc24pOiBTYW1lLgoKMjAwNy0xMC0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgVVNFX0dBUyBmb3IgbTY4ayB0YXJnZXRzLgoKMjAwNy0xMC0wNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNjI3CgkqIHRyZWUtZ2ltcGxlLmggKGNhbm9uaWNhbGl6ZV9jb25kX2V4cHJfY29uZCk6IERlY2xhcmUuCgkqIHRyZWUtZ2ltcGxlLmMgKGNhbm9uaWNhbGl6ZV9jb25kX2V4cHJfY29uZCk6IE5ldyBmdW5jdGlvbiwKCXNwbGl0IG91dCBmcm9tIC4uLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChjb21iaW5lX2NvbmRfZXhwcl9jb25kKTogLi4uIGhlcmUuCgkqIHRyZWUtc3NhLWlmY29tYmluZS5jIChpZmNvbWJpbmVfaWZvcmlmKTogVXNlIGl0LgoKMjAwNy0xMC0wNCAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKIAkqIGNvbmZpZy9hdnIvYXZyLmMgKGNvbW1hbmRzX2luX2ZpbGUsIGNvbW1hbmRzX2luX3Byb2xvZ3VlcywgCgljb21tYW5kc19pbl9lcGlsb2d1ZXMpOiBSZW1vdmUgdmFyaWFibGVzLgoJKGF2cl9maWxlX3N0YXJ0KTogUmVtb3ZlIHVubmVkZWQgaW5pdGlhbGl6YXRpb25zIG9mIGNvbW1hbmRzX2luX2ZpbGUsCgljb21tYW5kc19pbl9wcm9sb2d1ZXMgYW5kIGNvbW1hbmRzX2luX2VwaWxvZ3VlcyB2YXJpYWJsZXMuCgkoYXZyX2ZpbGVfZW5kKTogUmVtb3ZlIGRlYWQgY29kZS4KCjIwMDctMTAtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9tb3ZlbSk6IFVzZSB0aGUgTU9UT1JPTEEgaWYKCU1PVE9ST0xBIGlzIHRvIHRydWUuCgoyMDA3LTEwLTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJUFIgdGFyZ2V0LzMzNjM1CgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfc3BsaXRfNjRiaXRfbW92ZSk6IFJlbmFtZSB0by4uLgoJKG1pcHNfc3BsaXRfZG91Ymxld29yZF9tb3ZlKTogLi4udGhpcy4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3N1YndvcmQpOiBFeHRlbmQgdG8gaGFuZGxlIDY0LWJpdCB3b3JkczsKCXVzZSBuYXR1cmFsIGVuZGlhbm5lc3MgZm9yIG11bHRpLWZvcm1hdCBGUFIgdmFsdWVzLgoJKG1pcHNfc3BsaXRfNjRiaXRfbW92ZSk6IFJlbmFtZSB0by4uLgoJKG1pcHNfc3BsaXRfZG91Ymxld29yZF9tb3ZlKTogLi4udGhpcyBhbmQgZXh0ZW5kIHRvIDY0LWJpdCB3b3Jkcy4KCVVzZSBtb3ZlX2RvdWJsZXdvcmRfZnByKiBwYXR0ZXJucyBmb3IgbW92ZXMgaW52b2x2aW5nIEZQUnMuCgkobWlwc19zYXZlX3JlZyk6IFVwZGF0ZSB0aGUgY2FsbCB0byBtaXBzX3NwbGl0XzY0Yml0X21vdmUuCgkobWlwc19zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogUmV0dXJuIE5PX1JFR1MgZm9yIGFueSByZWxvYWQgb2YgYQoJbm9uemVybyBjb25zdGFudCBpbnRvIGFuIEZQUiBpZiB0aGUgY29uc3RhbnQgY2FuIGJlIGZvcmNlZCB0byBtZW1vcnkuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFVwZGF0ZSB0aGUgc3BsaXR0ZXIgY2FsbHMgdG8KCW1pcHNfc3BsaXRfNjRiaXRfbW92ZS4KCShVTlNQRUNfTE9BRF9ERl9MT1cpOiBSZW5hbWUgdG8uLi4KCShVTlNQRUNfTE9BRF9MT1cpOiAuLi50aGlzLgoJKFVOU1BFQ19MT0FEX0RGX0hJR0gpOiBSZW5hbWUgdG8uLi4KCShVTlNQRUNfTE9BRF9ISUdIKTogLi4udGhpcy4KCShVTlNQRUNfU1RPUkVfREZfSElHSCk6IFJlbmFtZSB0by4uLgoJKFVOU1BFQ19TVE9SRV9XT1JEKTogLi4udGhpcy4KCShTUExJVEYpOiBOZXcgbW9kZSBpdGVyYXRvci4KCShIQUxGTU9ERSk6IE5ldyBtb2RlIGF0dHJpYnV0ZS4KCShtb3Z0Zik6IE5ldyBleHBhbmRlci4KCSgqbW92dGZfaW50ZXJuYWwpOiBOZXcgZGVmaW5lX2luc25fYW5kX3NwbGl0LgoJKG1vdmVfZG91Ymxld29yZF9mcHI8bW9kZT4pOiBOZXcgZXhwYW5kZXIuCgkobG9hZF9kZl9sb3csIGxvYWRfZGZfaGlnaCwgc3RvcmVfZGZfaGlnaCwgbXRoYzEsIG1maGMxKTogUmVwbGFjZQoJd2l0aC4uLgoJKGxvYWRfbG93PG1vZGU+LCBsb2FkX2hpZ2g8bW9kZT4sIHN0b3JlX3dvcmQ8bW9kZT4sIG10aGMxPG1vZGU+KQoJKG1maGMxPG1vZGU+KTogLi4udGhlc2UgbW9yZSBnZW5lcmFsIHBhdHRlcm5zLgoKMjAwNy0xMC0wMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjZmdydGwuYyAocnRsX2Jsb2NrX2VuZHNfd2l0aF9jYWxsX3ApOiBTa2lwIG5vdGVzIGF0IHRoZSBlbmQuCgoyMDA3LTEwLTAzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGdjc2UuYyAoaGFzaF9zY2FuX3NldCk6IEluc2VydCBzZXQgaW4gaW5zbiBiZWZvcmUgbm90ZSBhdAoJdGhlIGVuZCBvZiBiYXNpYyBibG9jay4KCjIwMDctMTAtMDMgIFNlYmFzdGlhbiBQb3AgIDxzZWJhc3RpYW4ucG9wQGFtZC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM1NzYKCSogdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9wcjMzNTc2LmM6IE5ldy4KCSogdHJlZS1sb29wLWxpbmVhci5jIChsaW5lYXJfdHJhbnNmb3JtX2xvb3BzKTogQ2FsbCByZW1vdmVfaXYuCgkqIGxhbWJkYS5oIChsYW1iZGFfbG9vcG5lc3RfdG9fZ2NjX2xvb3BuZXN0KTogTmV3IHBhcmFtZXRlci4KCShyZW1vdmVfaXYpOiBEZWNsYXJlZC4KCSogbGFtYmRhLWNvZGUuYyAocmVtb3ZlX2l2KTogTm90IHN0YXRpYy4KCShsYW1iZGFfbG9vcG5lc3RfdG9fZ2NjX2xvb3BuZXN0KTogTmV3IHBhcmFtZXRlciByZW1vdmVfaXZzLgoJRG9uJ3QgcmVtb3ZlIGl2cyB0aGVyZSwgc2F2ZSBpdnMgaW4gdGhlIGJ1ZmZlci4KCjIwMDctMTAtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xNTc2NAoJKiB0cmVlLWVoLmMgKHNhbWVfaGFuZGxlcl9wKTogTmV3IGZuLgoJKG9wdGltaXplX2RvdWJsZV9maW5hbGx5KTogTmV3IGZuLgoJKHJlZmFjdG9yX2VoX3IpOiBOZXcgZm4uCgkocmVmYWN0b3JfZWgpOiBOZXcgZm4uCgkocGFzc19yZWZhY3Rvcl9laCk6IE5ldyBwYXNzLgoJKiB0cmVlLXBhc3MuaDogRGVjbGFyZSBpdC4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBpdC4KCjIwMDctMTAtMDMgIERvdWcgS3dhbiAgPGRvdWdrd2FuQGdvb2dsZS5jb20+CglSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgZGVidWcvMzE4OTkKCSogZHdhcmYyb3V0LmMgKHJlZmVyZW5jZV90b191bnVzZWQpOiBEaXNhYmxlIHNhbml0eSBjaGVja2luZywKCWJlIGNvbnNlcnZhdGl2ZSBpbnN0ZWFkLgoKMjAwNy0xMC0wMyAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxmeGNvdWRlcnRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNjY4MgoJKiBkb2MvaW52b2tlLnRleGkgKC1md2hvbGUtcHJvZ3JhbSk6IERvY3VtZW50IHRoYXQgRm9ydHJhbgoJZG9lc24ndCBzdXBwb3J0IHRoaXMgb3B0aW9uLgoKMjAwNy0xMC0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCVBSIG1pZGRsZS1lbmQvMzM2MTcKCSogZXhwci5jIChleHBhbmRfZXhwcl9hZGRyX2V4cHJfMSk6IFBhc3MgQ09OU1RSVUNUT1JzIHRvIGV4cGFuZF9leHByLgoKMjAwNy0xMC0wMiAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHN5bmNfY29tcGFyZV9hbmRfc3dhcDxtb2RlPik6IEhhbmRsZSBjb21wYXJlCglhZ2FpbnN0IGNvbnN0YW50IHplcm8uCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTUlQU19DT01QQVJFX0FORF9TV0FQKTogIEhhbmRsZSBjb25zdGFudCB6ZXJvCglvcGVyYW5kLgoKMjAwNy0wOS0wMiAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIHJhLWNvbmZsaWN0LmM6IE5ldyBmaWxlLgoJKiByYS5oOiBOZXcgZmlsZS4KCSogcmVsb2FkLmMgKHB1c2hfcmVsb2FkLCBmaW5kX2R1bW15X3JlbG9hZCk6IENoYW5nZSBERl9SQV9MSVZFCgl1c2FnZSB0byBERl9MSVZFIHVzYWdlLgoJKHJlbG9hZCk6IFJlbW92ZSByZWZlcmVuY2UgdG8gZGZfZ2V0X2xpdmVfdG9wLgoJKiBydGxhbmFsLmMgKHN1YnJlZ19ucmVnc193aXRoX3JlZ25vKTogTmV3IGZ1bmN0aW9uLiAgCgkqIGRmLXNjYW4uYyAoZGZfZGVmX3JlY29yZF8xLCBkZl91c2VzX3JlY29yZCk6IEFkZCBjb2RlIHRvIHNldAoJREZfUkVGX0VYVFJBQ1QsIERGX1JFRl9TVFJJQ1RfTE9XRVJfUEFSVCwgYW5kIERGX1JFRl9TVUJSRUcgZmxhZ3MuCgkoZGZfaGFzX2VoX3ByZWRzKTogUmVtb3ZlZC4KCShkZl9iYl9yZWZzX2NvbGxlY3QsIGRmX2JiX3JlZnNfY29sbGVjdCwgZGZfYmJfcmVmc19jb2xsZWN0LAoJZGZfZXhpdF9ibG9ja191c2VzX2NvbGxlY3QpOiBDaGFuZ2VkIGNhbGwgZnJvbSBkZl9oYXNfZWhfcHJlZHMgdG8KCWJiX2hhc19laF9wcmVkLgoJKiBnbG9iYWwuYyAoYWxsb2NubywgbWF4X2FsbG9jbm8sIGNvbmZsaWN0cywgYWxsb2Nub19yb3dfd29yZHMsCglyZWdfYWxsb2NubywgRVhFQ1VURV9JRl9TRVRfSU5fQUxMT0NOT19TRVQpOiBNb3ZlZCB0byByYS5oCgkoU0VUX0FMTE9DTk9fTElWRSwgQ0xFQVJfQUxMT0NOT19MSVZFKTogTW92ZWQgdG8gcmEtY29uZmxpY3RzLmMuCgkocmVnc19zZXQsIHJlY29yZF9vbmVfY29uZmxpY3QsIHJlY29yZF9jb25mbGljdHMsIG1hcmtfcmVnX3N0b3JlLAoJbWFya19yZWdfY2xvYmJlciwgbWFya19yZWdfY29uZmxpY3RzLCBtYXJrX3JlZ19kZWF0aCk6IERlbGV0ZWQuCgkoZ2xvYmFsX2FsbG9jKTogVHVybiBvZmYgcmVzY2FubmluZyBpbnNucyBhZnRlciBjYWxsIHRvCglnbG9iYWxfY29uZmxpY3RzIGFuZCBhZGRlZCBjYWxsIHRvIHNldF9wcmVmZXJlbmNlcy4KCShnbG9iYWxfY29uZmxpY3RzKTogTW92ZWQgdG8gcmEtYWxsb2MuYy4KCShzZXRfcHJlZmVyZW5jZXNfMSwgc2V0X3ByZWZlcmVuY2VzKTogTmV3IGZ1bmN0aW9uLgoJKG1pcnJvcl9jb25mbGljdHMpOiBDaGFuZ2VkIHR5cGVzIGZvciB2YXJpb3VzIHZhcmlhYmxlcy4KCShtYXJrX2VsaW1pbmF0aW9uKTogQ2hhbmdlIERGX1JBX0xJVkUKCXVzYWdlIHRvIERGX0xJVkUgdXNhZ2UuCgkoYnVpbGRfaW5zbl9jaGFpbik6IFJld3JpdHRlbiBmcm9tIHNjcmF0Y2ggYW5kIG1hZGUgbG9jYWwuCgkocHJpbnRfaW5zbl9jaGFpbiwgcHJpbnRfaW5zbl9jaGFpbnMpOiBOZXcgZnVuY3Rpb25zLgoJKGR1bXBfY29uZmxpY3RzKTogRG8gbm90IHByaW50IGNvbmZsaWN0cyBmb3IgZml4ZWRfcmVncy4KCShyZXN0X29mX2hhbmRsZV9nbG9iYWxfYWxsb2MpOiBUdXJuIG9mZiBpbnNuIHJlc2Nhbm5pbmcuCgkqIGhhcmQtcmVnLXNldC5oOiBGaXhlZCBjb21tZW50LgoJKiBsb2NhbC1hbGxvYy5jICh1cGRhdGVfZXF1aXZfcmVncyk6IENoYW5nZSBERl9SQV9MSVZFCgl1c2FnZSB0byBERl9MSVZFIHVzYWdlIGFuZCBkZWxldGUgcmVmcyB0byBUT1Agc2V0cy4KCShibG9ja19hbGxvYyk6IE1hcmsgcmVncyBhcyBsaXZlIGlmIHRoZXkgYXJlIGluIHRoZSBhcnRpZmljaWFsCglkZWZzIGF0IHRvcCBvZiBibG9jay4KCShmaW5kX3N0YWNrX3JlZ3MpOiBOZXcgZnVuY3Rpb24uCgkocmVzdF9vZl9oYW5kbGVfbG9jYWxfYWxsb2MpOiBDaGFuZ2VkIHVyZWMgcHJvYmxlbSB0byBsaXZlCglwcm9ibGVtIGFuZCBkbyBub3QgdHVybiBvZmYgZGYgcmVzY2FubmluZy4KCSogZGYuaCAoREZfVVJFQywgREZfVVJFQ19CQl9JTkZPLCBERl9MSVZFX1RPUCwgREZfUkFfTElWRV9JTiwKCURGX1JBX0xJVkVfVE9QLCBERl9SQV9MSVZFX09VVCwgZGZfdXJlY19iYl9pbmZvLCBkZl91cmVjLAoJZGZfdXJlY19hZGRfcHJvYmxlbSwgZGZfdXJlY19nZXRfYmJfaW5mbywgZGZfaGFzX2VoX3ByZWRzKTogUmVtb3ZlZC4KCShERl9DSEFJTiwgREZfTk9URSwgREZfQ0hBSU4pOiBSZW51bWJlcmVkLgoJKERGX1JFRl9FWFRSQUNULCBERl9SRUZfU1RSSUNUX0xPV0VSX1BBUlQsIERGX1JFRl9TVUJSRUcpOiBOZXcKCWZpZWxkcyBpbiBkZl9yZWZfZmxhZ3MuICBUaGUgcmVzdCBoYXZlIGJlZW4gcmVudW1iZXJlZC4gIAoJKiBpbml0LXJlZ3MuYyAoaW5pdGlhbGl6ZV91bmluaXRpYWxpemVkX3JlZ3MpOiBFbmhhbmNlZCBkZWJ1Z2dpbmcKCWF0IC1PMS4KCSogcnRsLmggKHN1YnJlZ19ucmVnc193aXRoX3JlZ25vKTogTmV3IGZ1bmN0aW9uLgoJKiBkZi1wcm9ibGVtcy5jOiAoZGZfZ2V0X2xpdmVfb3V0LCBkZl9nZXRfbGl2ZV9pbiwKCWRmX2dldF9saXZlX3RvcCk6IFJlbW92ZWQgcmVmZXJlbmNlIHRvIERGX1JBX0xJVkUuCgkoZGZfbHJfcmVzZXQsIGRmX2xyX3RyYW5zZmVyX2Z1bmN0aW9uLCBkZl9saXZlX2ZyZWVfYmJfaW5mbywKCWRmX2xpdmVfYWxsb2MsIGRmX2xpdmVfcmVzZXQsIGRmX2xpdmVfbG9jYWxfZmluYWxpemUsCglkZl9saXZlX2ZyZWUpOiBNYWtlIHRvcCBzZXQgb25seSBpZiBkaWZmZXJlbnQgZnJvbSBpbiBzZXQuCgkoZGZfbHJfdG9wX2R1bXAsIGRmX2xpdmVfdG9wX2R1bXApOiBPbmx5IHByaW50IHRvcCBzZXQgaWYKCWRpZmZlcmVudCBmcm9tIGluIHNldC4KCShkZl9scl9iYl9sb2NhbF9jb21wdXRlKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjaGVjay4KCShkZl91cmVjX3Byb2JsZW1fZGF0YSwgZGZfdXJlY19zZXRfYmJfaW5mbywgZGZfdXJlY19mcmVlX2JiX2luZm8sIAoJZGZfdXJlY19hbGxvYywgZGZfdXJlY19tYXJrX3JlZ19jaGFuZ2UsIGVhcmx5Y2xvYmJlcl9yZWdjbGFzcywgCglkZl91cmVjX2NoZWNrX2Vhcmx5Y2xvYmJlciwgZGZfdXJlY19tYXJrX3JlZ191c2VfZm9yX2Vhcmx5Y2xvYmJlciwKCWRmX3VyZWNfbWFya19yZWdfdXNlX2Zvcl9lYXJseWNsb2JiZXJfMSwgZGZfdXJlY19iYl9sb2NhbF9jb21wdXRlLAoJZGZfdXJlY19sb2NhbF9jb21wdXRlLCBkZl91cmVjX2luaXQsIGRmX3VyZWNfbG9jYWxfZmluYWxpemUsIAoJZGZfdXJlY19jb25mbHVlbmNlX24sIGRmX3VyZWNfdHJhbnNmZXJfZnVuY3Rpb24sIGRmX3VyZWNfZnJlZSwgCglkZl91cmVjX3RvcF9kdW1wLCBkZl91cmVjX2JvdHRvbV9kdW1wLCBwcm9ibGVtX1VSRUMsCglkZl91cmVjX2FkZF9wcm9ibGVtKTogUmVtb3ZlZC4KCShkZl9zaW11bGF0ZV9maXh1cF9zZXRzKTogQ2hhbmdlZCBjYWxsIGZyb20gZGZfaGFzX2VoX3ByZWRzIHRvCgliYl9oYXNfZWhfcHJlZC4gCgkqIE1ha2VmaWxlLmluIChyYS1jb25mbGljdC5vLCByYS5oKTogTmV3IGRlcGVuZGVuY2llcy4KCSogYmFzaWNfYmxvY2suaCAoYmJfaGFzX2Fibm9ybWFsX3ByZWQpOiBOZXcgZnVuY3Rpb24uCgkqIHJlbG9hZDEuYyAoY29tcHV0ZV91c2VfYnlfcHNldWRvcyk6IENoYW5nZSBERl9SQV9MSVZFCgl1c2FnZSB0byBERl9MSVZFIHVzYWdlLgoJCjIwMDctMTAtMDIgIFJldml0YWwgRXJlcyAgPGVyZXNAaWwuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCAoZWFzeV92ZWN0b3JfY29uc3RhbnQpOiBSZXR1cm4gZmFsc2UKCWZvciA3NTBDTCBwYWlyZWQgdmVjdG9ycy4KCSogY29uZmlnL3JzNjAwMC9wYWlyZWQubWQgKG1vdnYyc2ZfcGFpcmVkKTogRml4IG1vdmUgb2YgZWFzeQoJdmVjdG9yIGNvbnN0YW50LgoJKHZlY19pbml0djJzZik6IEFkZCBuZXcgZGVzY3JpcHRpb24uCgkodmNvbmNhdHNmKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oOiBEZWNsYXJlIHBhaXJlZF9leHBhbmRfdmVjdG9yX2luaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHBhaXJlZF9leHBhbmRfdmVjdG9yX2luaXQpOiBOZXcgZnVuY3Rpb24uCgoyMDA3LTEwLTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLXNpbmsuYyAoc2lua19jb2RlX2luX2JiKTogRG9uJ3Qgc3RvcCBzaW5raW5nIGFmdGVyCglzaW5raW5nIHRoZSBsYXN0IHN0bXQgaW4gYSBCQi4KCjIwMDctMTAtMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjIxNTYKCSogdHJlZS1zcmEuYyAoc3RydWN0IHNyYV9lbHQpOiBBZGQgaW5fYml0ZmxkX2Jsb2NrLgoJKHNyYV9oYXNoX3RyZWUpOiBIYW5kbGUgQklUX0ZJRUxEX1JFRnMuCgkoc3JhX2VsdF9oYXNoKTogRG9uJ3QgaGFzaCBiaXRmbGQgYmxvY2tzLgoJKHNyYV9lbHRfZXEpOiBTa2lwIHRoZW0gaW4gcGFyZW50IGNvbXBhcmVzIGFzIHdlbGwuICBIYW5kbGUKCUJJVF9GSUVMRF9SRUZzLgoJKGJ1aWxkX2VsZW1lbnRfbmFtZV8xKTogSGFuZGxlIEJJVF9GSUVMRF9SRUZzLgoJKGluc3RhbnRpYXRlX2VsZW1lbnQpOiBQcm9wYWdhdGUgbm93YXJuIGZyb20gcGFyZW50cy4gIENyZWF0ZQoJQklUX0ZJRUxEX1JFRiBmb3IgdmFyaWFibGVzIHRoYXQgYXJlIHdpZGVuZWQgYnkgc2NhbGFyaXphdGlvbi4KCUdpbXBsZS16ZXJvLWluaXRpYWxpemUgYWxsIGJpdC1maWVsZCB2YXJpYWJsZXMgdGhhdCBhcmUgbm90CglwYXJ0IG9mIHBhcmFtZXRlcnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgc2NhbGFyaXplZCBvbiBlbnRyeS4KCShpbnN0YW50aWF0ZV9taXNzaW5nX2VsZW1lbnRzXzEpOiBSZXR1cm4gdGhlIHNyYV9lbHQuCgkoY2Fub25fdHlwZV9mb3JfZmllbGQpOiBOZXcuCgkodHJ5X2luc3RhbnRpYXRlX211bHRpcGxlX2ZpZWxkcyk6IE5ldy4gIEluZmVyIHdpZGVzdCBwb3NzaWJsZQoJYWNjZXNzIG1vZGUgZnJvbSBkZWNsIG9yIG1lbWJlciB0eXBlLCBidXQgY2xpcCBpdCBhdCB3b3JkCglzaXplLCBhbmQgb25seSB3aWRlbiBpdCBpZiBhIGZpZWxkIGNyb3NzZXMgYW4gYWxpZ25tZW50IGJvdW5kYXJ5LgoJKGluc3RhbnRpYXRlX21pc3NpbmdfZWxlbWVudHMpOiBVc2UgdGhlbS4KCShnZW5lcmF0ZV9vbmVfZWxlbWVudF9yZWYpOiBIYW5kbGUgQklUX0ZJRUxEX1JFRnMuCgkoc2NhbGFyX2JpdGZpZWxkX3ApOiBOZXcuCgkoc3JhX2J1aWxkX2Fzc2lnbm1lbnQpOiBPcHRpbWl6ZSBhc3NpZ25tZW50cyBmcm9tIHNjYWxhcml6YWJsZQoJQklUX0ZJRUxEX1JFRnMuICBVc2UgQklUU19CSUdfRU5ESUFOIHRvIGRldGVybWluZSBzaGlmdCBjb3VudHMuCgkoUkVQTERVUCk6IE5ldy4KCShzcmFfYnVpbGRfYmZfYXNzaWdubWVudCk6IE5ldy4gIE9wdGltaXplIGFzc2lnbm1lbnRzIHRvCglzY2FsYXJpemFibGUgQklUX0ZJRUxEX1JFRnMuCgkoc3JhX2J1aWxkX2VsdF9hc3NpZ25tZW50KTogTmV3LiAgT3B0aW1pemUgQklUX0ZJRUxEX1JFRgoJYXNzaWdubWVudHMgdG8gZnVsbCB2YXJpYWJsZXMuCgkoZ2VuZXJhdGVfY29weV9pbm91dCk6IFVzZSB0aGUgbmV3IG1hY3JvcyBhbmQgZnVuY3Rpb25zLgoJKGdlbmVyYXRlX2VsZW1lbnRfY29weSk6IExpa2V3aXNlLiAgSGFuZGxlIGJpdGZsZCBkaWZmZXJlbmNlcy4KCShnZW5lcmF0ZV9lbGVtZW50X3plcm8pOiBEb24ndCByZWN1cnNlIGZvciBibG9ja3MuICBVc2UKCXNyYV9idWlsZF9lbHRfYXNzaWdubWVudC4KCShnZW5lcmF0ZV9vbmVfZWxlbWVudF9pbml0KTogVGFrZSBlbHQgaW5zdGVhZCBvZiB2YXIuICBVc2UKCXNyYV9idWlsZF9lbHRfYXNzaWdubWVudC4KCShnZW5lcmF0ZV9lbGVtZW50X2luaXRfMSk6IEFkanVzdC4KCShiaXRmaWVsZF9vdmVybGFwX2luZm8pOiBOZXcgc3RydWN0LgoJKGJpdGZpZWxkX292ZXJsYXBzX3ApOiBOZXcuCgkoc3JhX2V4cGxvZGVfYml0ZmllbGRfYXNzaWdubWVudCk6IE5ldy4gIEFkanVzdCB3aWRlbmVkCgl2YXJpYWJsZXMgdG8gYWNjb3VudCBmb3IgZW5kaWFubmVzcy4KCShzcmFfc3luY19mb3JfYml0ZmllbGRfYXNzaWdubWVudCk6IE5ldy4KCShzY2FsYXJpemVfdXNlKTogUmUtZXhwYW5kIGFzc2lnbm1lbnQgdG8vZnJvbSBzY2FsYXJpemVkCglCSVRfRklFTERfUkVGcy4gIEV4cGxvZGUgb3Igc3luYyBuZWVkZWQgbWVtYmVycyBmb3IKCUJJVF9GSUVMRF9SRUZzIGFjY2Vzc2VzIG9yIGFzc2lnbm1lbnRzLiAgVXNlIFJFUExEVVAuCgkoc2NhbGFyaXplX2NvcHkpOiBVc2UgUkVQTERVUC4KCShzY2FsYXJpemVfbGRzdCk6IE1vdmUgYXNzZXJ0IGJlZm9yZSBkZXJlZmVyZW5jZS4gIEFkanVzdCBFSCBoYW5kbGluZy4KCShkdW1wX3NyYV9lbHRfbmFtZSk6IEhhbmRsZSBCSVRfRklFTERfUkVGcy4KCjIwMDctMTAtMDEgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBzaW1wbGlmeS1ydHguYyAoY29tcGFyaXNvbl9yZXN1bHQsIHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uXzEpOgoJUmVuYW1lIENSXyogY29uc3RhbnRzIHRvIENNUF8qLiAgRml4IHNwYWNpbmcuCgoyMDA3LTEwLTAxICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBvdGhlci8zMzU4NQoJKiBNYWtlZmlsZS5pbiAoYnVpbGRfaHRtbF9kaXIvZ2NjaW5zdGFsbCk6IGdjY2luc3RhbGwudGV4aSBuZWVkcwoJdG8gYmUgcHJvY2Vzc2VkIHdpdGggdGhlIHNwZWNpYWwgc2NyaXB0IGRvYy9pbnN0YWxsLnRleGkyaHRtbC4KCQoyMDA3LTA5LTMwICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FsbCk6IExpc3QgdGhlIG9wdGlvbnMgZW5hYmxlZCBieSBXYWxsLgoJKFdzdHJpY3QtYWxpYXNpbmcpOiBBZGQgbWlzc2luZyBAb3B0aW9uLgoJCjIwMDctMDktMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zcGxpdF82NGJpdF9tb3ZlKTogVXNlIGdlbl9ydHhfUkVHX29mZnNldAoJcmF0aGVyIHRoYW4gZ2VuX2xvd3BhcnQgdG8gY2hhbmdlIGEgcmVnaXN0ZXIgZnJvbSBESW1vZGUgdG8gREZtb2RlLgoJKG1pcHNfY2Fubm90X2NoYW5nZV9tb2RlX2NsYXNzKTogT25seSBhbGxvdyBGUFJzIHRvIGNoYW5nZSBtb2RlIGlmCglib3RoIEZST00gYW5kIFRPIGFyZSBpbnRlZ2VyIG1vZGVzIHRoYXQgYXJlIG5vIGJpZ2dlciB0aGFuIDQgYnl0ZXMuCgkobWlwc19tb2RlX29rX2Zvcl9tb3ZfZm10X3ApOiBOZXcgZnVuY3Rpb24uCgkobWlwc19wcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogVXNlIGl0IGluc3RlYWQgb2YgRkxPQVRfTU9ERV9QLgoJKG1pcHNfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IFR3ZWFrIGZvcm1hdHRpbmcgYW5kIGNvbW1lbnRzLgoJVXNlIHJlZ19jbGFzc19zdWJzZXRfcCBpbnN0ZWFkIG9mIGRpcmVjdCBjb21wYXJpc29ucyB3aXRoCgljbGFzc2VzLiAgT25seSBhbGxvdyBkaXJlY3QgRlBSPC0+RlBSIG1vdmVzIGZvciBtb2RlcyB0aGF0CglzYXRpc2Z5IG1pcHNfbW9kZV9va19mb3JfbW92X2ZtdF9wLiAgT25seSBhbGxvdyBsb2FkcyBhbmQgc3RvcmVzCglmb3IgNC0gYW5kIDgtYnl0ZSB0eXBlcy4gIEhhbmRsZSByZWxvYWRzIGluIHdoaWNoIFggaXMgYW4gRlBSLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqbW92ZGlfZ3AzMl9mcDY0KTogUmVtb3ZlIGY8LWYgYWx0ZXJuYXRpdmUuCgkoKm1vdmRpXzY0Yml0KTogTGlrZXdpc2UuCgkoKm1vdnNpX2ludGVybmFsKTogTGlrZXdpc2UuCgkoKm1vdmhpX2ludGVybmFsKTogTGlrZXdpc2UuCgkoKm1vdnFpX2ludGVybmFsKTogTGlrZXdpc2UuCgoyMDA3LTA5LTMwICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AZ29vZ2xlLmNvbT4KCglQUiAzMzU5MwoJKiB0cmVlLXNzYS10ZXIuYyAoaXNfcmVwbGFjZWFibGVfcCk6IFJldHVybiBmYWxzZSBpZiBTVE1UIG1heQoJdGhyb3cgYW4gZXhjZXB0aW9uLgoKMjAwNy0wOS0zMCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzU5NwoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2J1aWxkX3NscF90cmVlKTogQ2hlY2sgaWYgb3B0YWIgaGFuZGxlcgoJZm9yIExTSElGVF9FWFBSIGFuZCBSU0hJRlRfRVhQUiBpcyBhdmFpbGFibGUgZm9yIHZlY19tb2RlLgoKMjAwNy0wOS0yOCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfbW92ZSk6IFVzZSBjYW5fY3JlYXRlX3BzZXVkb19wICgpCglpbnN0ZWFkIG9mIHZhcmlhbnRzIG9mICghcmVsb2FkX2luX3Byb2dyZXNzICYmICFyZWxvYWRfY29tcGxldGVkKS4KCSh4ODZfZXhwYW5kX3ZlY3Rvcl9tb3ZlKTogRGl0dG8uCgoyMDA3LTA5LTI4ICBPbGxpZSBXaWxkICA8YWF3QGdvb2dsZS5jb20+CgoJUmV2ZXJ0CgkyMDA3LTA5LTI3ICBPbGxpZSBXaWxkICA8YWF3QGdvb2dsZS5jb20+CgoJKiB2YXJhc20uYyAoY29tcGFyZV9jb25zdGFudCk6IFJlbW92ZWQgY2FsbCB0bwoJbGFuZ19ob29rcy5leHBhbmRfY29uc3RhbnQuCgkoY29weV9jb25zdGFudHMpOiBSZW1vdmVkIGNhbGwgdG8gbGFuZ19ob29rcy5leHBhbmRfY29uc3RhbnQuCgkoY29tcHV0ZV9yZWxvY19mb3JfY29uc3RhbnQpOiBSZW1vdmVkIGNhbGwgdG8KCWxhbmdfaG9va3MuZXhwYW5kX2NvbnN0YW50LgoJKG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzKTogUmVtb3ZlZCBjYWxsIHRvCglsYW5nX2hvb2tzLmV4cGFuZF9jb25zdGFudC4KCShjb25zdHJ1Y3Rvcl9zdGF0aWNfZnJvbV9lbHRzX3ApOiBSZW1vdmVkIGNhbGwgdG8KCWxhbmdfaG9va3MuZXhwYW5kX2NvbnN0YW50LgoJKG91dHB1dF9jb25zdGFudCk6IFJlbW92ZWQgY2FsbHMgdG8gbGFuZ19ob29rcy5leHBhbmRfY29uc3RhbnQuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6IFJlbW92ZWQgZmllbGQgZXhwYW5kX2NvbnN0YW50LgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9yZXR1cm5fdHJlZSk6IFJlbW92ZWQuCgkoTEFOR19IT09LU19FWFBBTkRfQ09OU1RBTlQpOiBSZW1vdmVkLgoJKExBTkdfSE9PS1NfSU5JVElBTElaRVIpOiBSZW1vdmVkIExBTkdfSE9PS1NfRVhQQU5EX0NPTlNUQU5ULgoJKiBsYW5naG9va3MuYyAobGhkX3JldHVybl90cmVlKTogUmVtb3ZlZC4KCjIwMDctMDktMjggIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIHRhcmdldC8zMzM0NwoJKiBjb25maWcvc3B1L3NwdS5jIChzcHVfZXhwYW5kX2luc3YpOiBDYWxsIGNvcHlfcnR4IG9uIHRoZSBzZWNvbmQKCWFyZ3VtZW50IHRvIGdlbl9zZWxiLgoKMjAwNy0wOS0yOCAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgoJKiBsaWJnY2Mtc3RkLnZlcjogQWRkIGZpeGVkLXBvaW50IHJvdXRpbmVzIHRvIEdDQ180LjMuMCBzZWN0aW9uLgoJKiBkb2MvbGliZ2NjLnRleGkgKEZpeGVkLXBvaW50IGZyYWN0aW9uYWwgbGlicmFyeSByb3V0aW5lcyk6CglGaXggdHlwb3MgZm9yIG5lZyBhbmQgY21wIGZ1bmN0aW9ucy4KCjIwMDctMDktMjggIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMzNTUyCgkqIGZ1bmN0aW9uLmMgKG1hdGNoX2FzbV9jb25zdHJhaW50c18xKTogQ2hlY2sgZm9yIG92ZXJsYXAgaW4KCWlucHV0cyBhbmQgcmVwbGFjZSBhbGwgb2NjdXJlbmNlcy4KCjIwMDctMDktMjggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEZpeCBjb21tZW50IHR5cG8uCgoyMDA3LTA5LTI4ICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGJmaW4qLWxpbnV4LXVjbGliYyopOiBTZXQgZXh0cmFfcGFydHMKCXRvICJjcnRiZWdpbi5vIGNydGJlZ2luUy5vIGNydGVuZC5vIGNydGVuZFMubyIuCgkqIGNvbmZpZy9iZmluL3QtYmZpbi1saW51eCAoY3J0aS5vKTogRG9uJ3QgYnVpbGQuCgkoY3J0bi5vKTogTGlrZXdpc2UuCgkoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBSZW1vdmUgY3J0aS5vIGFuZCBjcnRuLm8uCgkqIGNvbmZpZy9iZmluL3QtYmZpbi11Y2xpbnV4IChjcnRpLm8pOiBEb24ndCBidWlsZC4KCShjcnRuLm8pOiBMaWtld2lzZS4KCShFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IFJlbW92ZSBjcnRpLm8gYW5kIGNydG4uby4KCjIwMDctMDktMjcgIE9sbGllIFdpbGQgIDxhYXdAZ29vZ2xlLmNvbT4KCgkqIHZhcmFzbS5jIChjb21wYXJlX2NvbnN0YW50KTogUmVtb3ZlZCBjYWxsIHRvCglsYW5nX2hvb2tzLmV4cGFuZF9jb25zdGFudC4KCShjb3B5X2NvbnN0YW50cyk6IFJlbW92ZWQgY2FsbCB0byBsYW5nX2hvb2tzLmV4cGFuZF9jb25zdGFudC4KCShjb21wdXRlX3JlbG9jX2Zvcl9jb25zdGFudCk6IFJlbW92ZWQgY2FsbCB0bwoJbGFuZ19ob29rcy5leHBhbmRfY29uc3RhbnQuCgkob3V0cHV0X2FkZHJlc3NlZF9jb25zdGFudHMpOiBSZW1vdmVkIGNhbGwgdG8KCWxhbmdfaG9va3MuZXhwYW5kX2NvbnN0YW50LgoJKGNvbnN0cnVjdG9yX3N0YXRpY19mcm9tX2VsdHNfcCk6IFJlbW92ZWQgY2FsbCB0bwoJbGFuZ19ob29rcy5leHBhbmRfY29uc3RhbnQuCgkob3V0cHV0X2NvbnN0YW50KTogUmVtb3ZlZCBjYWxscyB0byBsYW5nX2hvb2tzLmV4cGFuZF9jb25zdGFudC4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogUmVtb3ZlZCBmaWVsZCBleHBhbmRfY29uc3RhbnQuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3JldHVybl90cmVlKTogUmVtb3ZlZC4KCShMQU5HX0hPT0tTX0VYUEFORF9DT05TVEFOVCk6IFJlbW92ZWQuCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6IFJlbW92ZWQgTEFOR19IT09LU19FWFBBTkRfQ09OU1RBTlQuCgkqIGxhbmdob29rcy5jIChsaGRfcmV0dXJuX3RyZWUpOiBSZW1vdmVkLgoKMjAwNy0wOS0yNyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBtaWRkbGUtZW5kLzMzNDM2CgkqIGV4cHIuYyAoZW1pdF9ncm91cF9sb2FkXzEpOiBTcGxpdCBjb25zdGFudCBkb3VibGUgd2hlbiBkZXN0aW5hdGlvbgoJbGVuZ3RoIGlzIGhhbGYgc291cmNlIGxlbmd0aC4KCjIwMDctMDktMjcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUFRGX0FWT0lEX0JSQU5DSExJS0VMWSk6IE5ldyBtYWNyby4KCShtaXBzX2NwdV9pbmZvKTogQWRkIHR1bmVfZmxhZ3MuCgkoR0VORVJBVEVfQlJBTkNITElLRUxZKTogUmVtb3ZlIFRBUkdFVF9TUjcxSyBjaGVjay4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NwdV9pbmZvX3RhYmxlKTogQWRkIHR1bmVfZmxhZ3MgZmllbGRzLgoJUmVtb3ZlIGVuZCBtYXJrZXIuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFJlbW92ZSBkZXByZWNhdGlvbiBjb2RlLiAgVXNlIGJyYW5jaC1saWtlbHkKCWluc3RydWN0aW9ucyBmb3Igb3B0aW1pemVfc2l6ZSBvciBpZiB0aGUgdHVuaW5nIGZsYWdzIGRvIG5vdAoJc3VnZ2VzdCBvdGhlcndpc2UuICBUd2VhayB3YXJuaW5nLgoJKG1pcHNfbWF0Y2hpbmdfY3B1X25hbWVfcCwgbWlwc19wYXJzZV9jcHUpOiBVc2UgQVJSQVlfU0laRS4KCjIwMDctMDktMjcgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0B1YnVudHUuY29tPgoKCSogY29uZmlnL2kzODYvdC1saW51eDY0IChNVUxUSUxJQl9PU0RJUk5BTUVTKTogVXNlIC4uL2xpYjMyIGFzIHRoZQoJbXVsdGlsaWIgb3NkaXJuYW1lIGlmIGl0IGV4aXN0cy4KCSogY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgKE1VTFRJTElCX09TRElSTkFNRVMpOiBMaWtld2lzZS4KCjIwMDctMDktMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM1NjUKCSogdHJlZS1zc2EtbG9vcC1jaC5jIChjb3B5X2xvb3BfaGVhZGVycyk6IFNldCBUUkVFX05PX1dBUk5JTkcgb24KCWFzc2lnbm1lbnRzIG9mIGNvbXBhcmlzb25zLgoJKiB0cmVlLXNzYS1zY2N2bi5jIChzaW1wbGlmeV9iaW5hcnlfZXhwcmVzc2lvbik6IEFkZCBzdG10CglwYXJhbWV0ZXIuICBDaGFuZ2UgY2FsbGVyLiAgRGVmZXIgb3ZlcmZsb3cgd2FybmluZ3MgYXJvdW5kIGNhbGwgdG8KCWZvbGRfYmluYXJ5LgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfdW5kZWZlcl9vdmVyZmxvd193YXJuaW5ncyk6IERvbid0IHdhcm4gaWYKCVRSRUVfTk9fV0FSTklORyBpcyBzZXQgb24gdGhlIHN0YXRlbWVudC4KCSogdHJlZS1zc2EtZm9yd3Byb3AuYwoJKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IERvbid0IHRlc3QKCVRSRUVfTk9fV0FSTklORyB3aGVuIGNhbGxpbmcgZm9sZF91bmRlZmVyX292ZXJmbG93X3dhcm5pbmdzLgoJKiB0cmVlLWNmZy5jIChmb2xkX2NvbmRfZXhwcl9jb25kKTogTGlrZXdpc2UuCgoyMDA3LTA5LTI3ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBEbyBub3QKCXJlZHVjZSBvZmZzZXQgYnkgdW5pdHMgb2YgMHgxMDAwMCBmb3IgU1BFIHZlY3RvciBtb2RlcyBvciBtb2RlcwoJdXNlZCB3aXRoIEU1MDAgZG91YmxlIGluc3RydWN0aW9ucy4KCjIwMDctMDktMDQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBzaW1wbGlmeS1ydHguYyAoY29tcGFyaXNvbl9yZXN1bHQpOiBOZXcuCgkoc2ltcGxpZnlfY29uc3RfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBVc2UgaXQgaW5zdGVhZCBvZiB0aGUgZml2ZQoJImVxdWFsfG9wWzAxXWx0dT8iIHZhcmlhYmxlczsgY29uc2VxdWVudGx5IHJlbW92ZSByZWR1bmRhbnQgImVsc2Uicy4KCUltcHJvdmUgYm91bmRzLWNoZWNraW5nIG9wdGltaXphdGlvbnM7IHJlbW92ZSBzdWJzdW1lZCBQT1BDT1VOVAoJb3B0aW1pemF0aW9ucy4gIEV4dHJhY3Qgbm9uemVyb19hZGRyZXNzX3Agb3B0aW1pemF0aW9ucyBpbnRvIGEKCXNlcGFyYXRlICJpZiIgdG9nZXRoZXIgd2l0aCBvcHRpbWl6YXRpb25zIHdoZXJlIG9wMSBpcyBjb25zdDBfcnR4LgoJT3B0aW1pemUgY29tcGFyaW5nIGFuIElPUiB3aXRoIHplcm8uICBTaW1wbGlmeSBvcDAgUkVMT1Agb3AwIGZvcgoJZmxvYXRpbmctcG9pbnQgYXJndW1lbnRzIHRvbyB3aGVuIGFwcHJvcHJpYXRlLiAgSG9pc3QgdGVzdCBmb3IgQUJTCglvdXRzaWRlIHRoZSBmaW5hbCBzd2l0Y2ggc3RhdGVtZW50LgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBEb24ndCBsb29rIGZvciBhbiBJT1IgZXF1aXZhbGVudCBvZgoJZm9sZGVkX2FyZzAgaWYgd2UgZm91bmQgYSBjb25zdGFudCBlcXVpdmFsZW50LglSZW1vdmUKCXRyYW5zZm9ybWF0aW9ucyBkb25lIGluIHNpbXBsaWZ5LXJ0eC5jIGZvciAib3AwIFJFTE9QIG9wMCIuCgoyMDA3LTA5LTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluLCBleHBhbmRfYnVpbHRpbl9vYmplY3Rfc2l6ZSwKCWV4cGFuZF9idWlsdGluX21lbW9yeV9jaGssIG1heWJlX2VtaXRfY2hrX3dhcm5pbmcsCgltYXliZV9lbWl0X3NwcmludGZfY2hrX3dhcm5pbmcpOiBVc2UgbmV3ICVLIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWVyCglmb3IgZGlhZ25vc3RpY3MuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkqIGxhbmdob29rcy1kZWYuaCAoc3RydWN0IGRpYWdub3N0aWNfaW5mbyk6IEFkZCBmb3J3YXJkIGRlY2wuCgkobGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogQWRkIHRoaXJkIGFyZ3VtZW50LgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGRpYWdub3N0aWNfaW5mbyk6IEFkZCBmb3J3YXJkIGRlY2wuCgkoc3RydWN0IGxhbmdfaG9va3MpOiBBZGQgdGhpcmQgYXJndW1lbnQgdG8gcHJpbnRfZXJyb3JfZnVuY3Rpb24uCgkqIGRpYWdub3N0aWMuaCAoZGlhZ25vc3RpY19pbmZvKTogQWRkIGFic3RyYWN0X29yaWdpbiBmaWVsZC4KCShkaWFnbm9zdGljX2xhc3RfZnVuY3Rpb25fY2hhbmdlZCwgZGlhZ25vc3RpY19zZXRfbGFzdF9mdW5jdGlvbik6IEFkZAoJc2Vjb25kIGFyZ3VtZW50LgoJKGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGFubm91bmNlX2Z1bmN0aW9uKTogUGFzcyBOVUxMIGFzIHNlY29uZCBhcmd1bWVudCB0bwoJZGlhZ25vc3RpY19zZXRfbGFzdF9mdW5jdGlvbi4KCSogZGlhZ25vc3RpYy5jIChkaWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uKTogQWRkIHNlY29uZAoJYXJndW1lbnQsIHBhc3MgaXQgYXMgdGhpcmQgYXJndW1lbnQgdG8gbGFuZ19ob29rcy5wcmludF9lcnJvcl9mdW5jdGlvbi4KCShkZWZhdWx0X2RpYWdub3N0aWNfc3RhcnRlcik6IFBhc3MgRElBR05PU1RJQyBhcyBzZWNvbmQgYXJndW1lbnQKCXRvIGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfZnVuY3Rpb24uCgkoZGlhZ25vc3RpY19yZXBvcnRfZGlhZ25vc3RpYyk6IEluaXRpYWxpemUgZGlhZ25vc3RpYy0+YWJzdHJhY3Rfb3JpZ2luCglhbmQgbWVzc2FnZS5hYnN0cmFjdF9vcmlnaW4uCgkodmVyYmF0aW0pOiBJbml0aWFsaXplIGFic3RyYWN0X29yaWdpbi4KCSogcHJldHR5LXByaW50LmggKHRleHRfaW5mbyk6IEFkZCBhYnN0cmFjdF9vcmlnaW4gZmllbGQuCgkqIHByZXR0eS1wcmludC5jIChwcF9iYXNlX2Zvcm1hdCk6IEhhbmRsZSAlSy4KCSogbGFuZ2hvb2tzLmMgKGxoZF9wcmludF9lcnJvcl9mdW5jdGlvbik6IEFkZCB0aGlyZCBhcmd1bWVudC4gIElmCglkaWFnbm9zdGljLT5hYnN0cmFjdF9vcmlnaW4sIHByaW50IHZpcnR1YWwgYmFja3RyYWNlLgoJKiBjLWZvcm1hdC5jIChnY2NfZGlhZ19jaGFyX3RhYmxlLCBnY2NfdGRpYWdfY2hhcl90YWJsZSwKCWdjY19jZGlhZ19jaGFyX3RhYmxlLCBnY2NfY3h4ZGlhZ19jaGFyX3RhYmxlKTogU3VwcG9ydCAlSy4KCShpbml0X2R5bmFtaWNfZGlhZ19pbmZvKTogTGlrZXdpc2UuCgoyMDA3LTA5LTI2ICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCVBSIHRhcmdldC8zMzQ3OQoJKiBjb25maWcvbWlwcy9taXBzLm1kIChzeW5jX2NvbXBhcmVfYW5kX3N3YXA8bW9kZT4sIHN5bmNfb2xkX2FkZDxtb2RlPiwKCXN5bmNfbmV3X2FkZDxtb2RlPiwgc3luY19vbGRfPG9wdGFiPjxtb2RlPiwgc3luY19uZXdfPG9wdGFiPjxtb2RlPiwKCXN5bmNfb2xkX25hbmQ8bW9kZT4sIHN5bmNfbmV3X25hbmQ8bW9kZT4sCglzeW5jX2xvY2tfdGVzdF9hbmRfc2V0PG1vZGU+KTogRml4ICcmJyBjb25zdHJhaW50IG1vZGlmaWVycy4KCVVwZGF0ZSBsZW5ndGggYXR0cmlidXRlcy4KCShzeW5jX2FkZDxtb2RlPiwgc3luY19zdWI8bW9kZT4sIHN5bmNfb2xkX3N1Yjxtb2RlPiwKCXN5bmNfbmV3X3N1Yjxtb2RlPiwgc3luY188b3B0YWI+PG1vZGU+LCBzeW5jX25hbmQ8bW9kZT4pOiBVcGRhdGUKCWxlbmd0aCBhdHRyaWJ1dGVzLgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1JUFNfQ09NUEFSRV9BTkRfU1dBUCwgTUlQU19TWU5DX09QLAoJTUlQU19TWU5DX09MRF9PUCwgTUlQU19TWU5DX05FV19PUCwgTUlQU19TWU5DX05BTkQsCglNSVBTX1NZTkNfT0xEX05BTkQsIE1JUFNfU1lOQ19ORVdfTkFORCwgTUlQU19TWU5DX0VYQ0hBTkdFKTogQWRkCglwb3N0LWxvb3Agc3luYy4KCjIwMDctMDktMjYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzU2MwoJKiB0cmVlLXNzYS1kc2UuYyAoZ2V0X3VzZV9vZl9zdG10X2xocyk6IFJlbmFtZSB0byAuLi4KCShnZXRfa2lsbF9vZl9zdG10X2xocyk6IC4uLiB0aGlzLiAgUmUtc3RydWN0dXJlLiAgSGFuZGxlCglhZ2dyZWdhdGUgc3RvcmVzLgoJKGRzZV9vcHRpbWl6ZV9zdG10KTogQ2FsbCBnZXRfa2lsbF9vZl9zdG10X2xocyBpbnN0ZWFkIG9mCglnZXRfdXNlX29mX3N0bXRfbGhzLgoKMjAwNy0wOS0yNiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy8yNTMwOQoJKiBjLWNvbW1vbi5jIChjb21wbGV0ZV9hcnJheV90eXBlKTogRGlhZ25vc2UgdG9vLWxhcmdlIGFycmF5cyBhbmQKCXNldCB0eXBlIHRvIGVycm9yX21hcmtfbm9kZS4KCjIwMDctMDktMjYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDM3NQoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM1NjAKCSogdHJlZS1zc2EtZHNlLmMgKGdldF91c2Vfb2Zfc3RtdF9saHMpOiBHaXZlIHVwIG9uIHVzZXMKCXdpdGggY2FsbHMuCgoJUmV2ZXJ0CgkyMDA2LTA1LTIyICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kc2UuYyAoYWdncmVnYXRlX3ZhcmRlY2xfZCk6IE5ldy4KCShkc2VfZ2xvYmFsX2RhdGEpOiBBZGQgYWdncmVnYXRlX3ZhcmRlY2wgZmllbGQuCgkoZHNlX3Bvc3NpYmxlX2RlYWRfc3RvcmVfcCk6IE5ldy4KCUFkZCBwcmV2X2RlZnZhciB2YXJpYWJsZS4KCUFsbG93IGltbWVkaWF0ZSB1c2VzIGFuZCBwcmV2aW91cyBpbW1lZGlhdGUgdXNlcyB0byBkaWZmZXIKCWlmIHRoZXkgYXJlIHNldHRpbmcgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSB3aG9sZS4KCShnZXRfYWdncmVnYXRlX3ZhcmRlY2wpOiBOZXcuCgkoZHNlX3JlY29yZF9wYXJ0aWFsX2FnZ3JlZ2F0ZV9zdG9yZSk6IE5ldy4KCShkc2Vfd2hvbGVfYWdncmVnYXRlX2Nsb2JiZXJlZF9wKTogTmV3LgoJKGRzZV9wYXJ0aWFsX2tpbGxfcCk6IE5ldy4KCUNhbGwgZHNlX21heWJlX3JlY29yZF9hZ2dyZWdhdGVfc3RvcmUoKS4KCVdoZW4gY2hlY2tpbmcgd2hldGhlciBhIFNUTVQgYW5kIGl0cyBVU0VfU1RNVCByZWZlciB0byB0aGUKCXNhbWUgbWVtb3J5IGFkZHJlc3MsIGNoZWNrIGFsc28gZm9yIHBhcnRpYWwga2lsbHMgdGhhdCBjbG9iYmVyCgl0aGUgd2hvbGUuCglNb3ZlIHNvbWUgdmFyaWFibGUgZGVmaW5pdGlvbnMgdG8gdGhlIGJsb2NrIHdoZXJlIHRoZXkgYXJlIHVzZWQuCgkoYWdncmVnYXRlX3ZhcmRlY2xfaGFzaCk6IE5ldy4KCShhZ2dyZWdhdGVfdmFyZGVjbF9lcSk6IE5ldy4KCShhZ2dyZWdhdGVfdmFyZGVjbF9mcmVlKTogTmV3LgoJKGFnZ3JlZ2F0ZV93aG9sZV9zdG9yZV9wKTogTmV3LgoJKHRyZWVfc3NhX2RzZSk6IEluaXRpYWxpemUgYW5kIGZyZWUgYWdncmVnYXRlX3ZhcmRlY2wuCglNYXJrIHdoaWNoIGFnZ3JlZ2F0ZSBzdG9yZXMgd2UgY2FyZSBhYm91dC4KCjIwMDctMDktMjUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zMzU1MQoJKiBjb25maWcvbTMyYy9tMzJjLmMgKG0zMmNfaW1tZF9kYmxfbW92KTogVXNlIElOVFZBTCBpbnN0ZWFkIG9mIFhJTlQuCgoyMDA3LTA5LTI1ICBNaWNoYWVsIE1laXNzbmVyICA8bWljaGFlbC5tZWlzc25lckBhbWQuY29tPgoKCVBSIHRhcmdldC8zMzUyNAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3NzZTVfdW5wYWNrKTogQ2hhbmdlIHRvIGNhbGwKCWdlbl9zc2U1X3BwZXJtX3NpZ25fdjRzaV92MmRpIGFuZCBnZW5fc3NlNV9wcGVybV96ZXJvX3Y0c2lfdjJkaQoJZm9yIHZlY3RvciBpbnQzMiAtPiBpbnQ2NCBjb252ZXJzaW9ucy4gIERvbid0IHdyaXRlIGJleW9uZCB0aGUgZW5kCglvZiB0aGUgYWxsb2NhdGVkIHZlY3RvciBmb3IgaW50MzIgLT4gaW50NjQgY29udmVyc2lvbnMuCgoyMDA3LTA5LTI1ICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3BhaXJlZC5oIChwYWlyZWRfc2VsKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChiZGVzY18zYXJnKTogQWRkIHNlbHYyc2Y0LgoJKHJzNjAwMF9leHBhbmRfdGVybm9wX2J1aWx0aW4pOiBQYXNzIHplcm8gY29uc3RfZG91YmxlIG9wZXJhbmQKCXdoZW4gZXhwYW5kaW5nIHNlbHYyc2YuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKHJzNjAwMF9idWlsdGlucyk6IEFkZAoJUEFJUkVEX0JVSUxUSU5fU0VMVjJTRjQuCgoyMDA3LTA5LTI1ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzMyMjk1CgkqIGMtdHlwZWNrLmMgKGRlZmF1bHRfY29udmVyc2lvbik6IENhbGwgcmVxdWlyZV9jb21wbGV0ZV90eXBlCgliZWZvcmUgcGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rpb25zLgoJKGJ1aWxkX3VuYXJ5X29wKTogQ2FsbCByZXF1aXJlX2NvbXBsZXRlX3R5cGUgZXhjZXB0IGZvciBBRERSX0VYUFIuCgkoYnVpbGRfY19jYXN0KTogQ2FsbCByZXF1aXJlX2NvbXBsZXRlX3R5cGUgZXhjZXB0IGZvciBjYXN0cyB0bwoJdm9pZCB0eXBlcy4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQ2FsbCByZXF1aXJlX2NvbXBsZXRlX3R5cGUuCgoyMDA3LTA5LTI1ICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBjb25maWcvc3B1L3NwdS5tZDogRml4IGRvbG9vcCBwYXR0ZXJuLgoKMjAwNy0wOS0yNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoZXhwYW5kX3Byb2xvZ3VlX3JlZ19zYXZlLAoJZXhwYW5kX2VwaWxvZ3VlX3JlZ19yZXN0b3JlKTogQ29kZSB0byBzYXZlIGFuZCByZXN0b3JlIEkvTS9CL0wgcmVncwoJYW5kIEFTVEFUIG1vdmVkIGhlcmUuLi4KCShleHBhbmRfaW50ZXJydXB0X2hhbmRsZXJfcHJvbG9ndWUsIGV4cGFuZF9pbnRlcnJ1cHRfaGFuZGxlcl9lcGlsb2d1ZSk6CgkuLi4gZnJvbSBoZXJlLiAgTmV3IGFyZ3VtZW50IEFMTDsgY2FsbGVycyBjaGFuZ2VkLgoJKG5fcmVnc19zYXZlZF9ieV9wcm9sb2d1ZSk6IENvdW50IEFTVEFUIGZvciBwbGFpbiBzYXZlYWxsIGZ1bmN0aW9ucy4KCShiZmluX2V4cGFuZF9wcm9sb2d1ZSwgYmZpbl9leHBhbmRfZXBpbG9ndWUpOiBEZWFsIHdpdGggZnVuY3Rpb25zIHRoYXQKCWhhdmUgdGhlICJzYXZlYWxsIiBhdHRyaWJ1dGUuCgoyMDA3LTA5LTI1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWcvbW1peC9tbWl4LmggKEZVTkNUSU9OX0lOQ09NSU5HX0FSR19SRUdOT19QKTogRG9uJ3QgZGVmaW5lCglib2d1cyB0YXJnZXQgbWFjcm8uCgkoSU5DT01JTkdfUkVHTk8sIE9VVEdPSU5HX1JFR05PKTogRGVmaW5lLgoJKiBjb25maWcvbW1peC9tbWl4LmMgKG1taXhfb3Bwb3NpdGVfcmVnbm8pOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9tbWl4L21taXgtcHJvdG9zLmggKG1taXhfb3Bwb3NpdGVfcmVnbm8pOiBQcm90b3R5cGUuCgoJKiBjb25maWcvbW1peC9tbWl4Lm1kICgiKmNtcGNjX2ZvbGRlZCIpOiBJbiBjb25kaXRpb24sIGdhdGUKCXdpdGggUkVHX1AgdGVzdHMgYmVmb3JlIFJFR05PIGFjY2Vzcy4KCjIwMDctMDktMjQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zMTQ4MgoJKiBjb25maWcvbTMyYy9jb25kLm1kIChzdHp4X3JldmVyc2VkXzxtb2RlPik6IEFkZCBhbiBvdXRwdXQKCWNvbnN0cmFpbnQuCgkobW92cWljY188Y29kZT5fPG1vZGU+KTogTGlrZXdpc2UuCgkobW92aGljY188Y29kZT5fPG1vZGU+KTogTGlrZXdpc2UuCgoyMDA3LTA5LTI0ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJUFIgdGFyZ2V0LzMzMTg0CgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobTMyY19laF9yZXR1cm5fZGF0YV9yZWdubyk6IExlYXZlIGFuIGFkZHJlc3MKCXJlZ2lzdGVyIGZvciByZWxvYWQuCgoyMDA3LTA5LTI0ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlci5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzE0Njg4CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9jb21wX3R5cGVfYXR0cmlidXRlcyk6IENoZWNrCglNRVRIT0RfVFlQRSB0b28uCgoyMDA3LTA5LTI0ICBSb21hbiBaaXBwZWwgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4gCgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEFTTV9PVVRQVVRfQUxJR05fV0lUSF9OT1ApOiBOZXcsIHVzZQoJIm1vdmUubCAlYTQsJWE0IiB0byBwcm9kdWNlIG5vcHMuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFJlc2V0IGFsaWduIG9wdGlvbnMsCglpZiBuZWNjZXNzYXJ5IGFsaWduIG1hY3JvIGlzbid0IGF2YWlibGUuCgoyMDA3LTA5LTI0ICBSb21hbiBaaXBwZWwgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4gCgoJY29uZmlnL202OGsvbGludXguaCAoUFJFRkVSUkVEX1NUQUNLX0JPVU5EQVJZKTogTmV3LgoKMjAwNy0wOS0yNCAgUm9tYW4gWmlwcGVsIDx6aXBwZWxAbGludXgtbTY4ay5vcmc+IAoKCSogY29uZmlnL202OGsvbTY4ay5jIChzdHJpY3RfbG93X3BhcnRfcGVlcGhvbGVfb2spOiBEb24ndCBsZWF2ZQoJdGhlIGJhc2ljIGJsb2NrLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChtb3ZzaV9tNjhrKTogQWxsb3cgY2VydGFpbiBjb25zdGFudCB3aGVuCglyZWxvYWQgaXMgY29tcGxldGVkLgoJKHBlZXBob2xlIHBhdHRlcm4pOiBDb252ZXJ0IG1vc3Qgb2YgdGhlbSB0byBSVEwgcGVlcGhvbGUgcGF0dGVybi4KCjIwMDctMDktMjQgIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPiAKCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobm90aWNlX3VwZGF0ZV9jYyk6IFJlY29nbml6ZSBmcCBjb21wYXJlCgkobW92ZWQgZnJvbSBmcCBjb21wYXJlIHBhdHRlcm5zKS4KCSogY29uZmlnL202OGsvbTY4ay5tZCAoY21wPG1vZGU+LCBjbXA8bW9kZT5fNjg4ODEsIGNtcDxtb2RlPl9jZik6CglDbGVhbnVwIHByZWRpY2F0ZXMgdG8gcmVsaWV2ZSByZWxvYWQuCgkoY29uZGl0aW9uYWxfdHJhcCk6IFJlamVjdCBjb25kaXRpb25hbCB0cmFwIHdpdGggZnAgY29uZGl0aW9uLgoJKiBjb25maWcvbTY4ay9wcmVkaWNhdGVzLm1kIChmcF9zcmNfb3BlcmFuZCk6IE5ldywgcmVqZWN0CgljZXJ0YWluIGNvbnN0YW50cyBlYXJseS4KCjIwMDctMDktMjQgIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogUmVtb3ZlIGFjY2lkZW50YWxseSBkdXBsaWNhdGVkIGNvZGUuCgoyMDA3LTA5LTI0ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHBvd2VycGMqLSotKik6IC0td2l0aC1jcHU9Y2VsbCBpcyBhIDY0Yml0IENQVS4KCUFsbG93IC0td2l0aC10dW5lPWNlbGwgYW5kIC0td2l0aC1jcHU9Y2VsbC4KCjIwMDctMDktMjQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfZW1pdF9zd3JzcXJ0c2YpOiBEZWNsYXJlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgKHN3ZGl2KTogQ2hhbmdlIG9wdGlvbiB0byAuLi4KCShyZWNpcCk6IHRoaXMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9idWlsdGluX3JlY2lwcm9jYWwpOiBOZXcKCWZ1bmN0aW9uLgoJKFRBUkdFVF9CVUlMVElOX1JFQ0lQUk9DQUwpOiBVc2UgaXQuCgkocnM2MDAwX2J1aWx0aW5fZXhwYW5kKTogRXhwYW5kIHJlY2lwLCByZWNpcGYsIGFuZCByc3FydGYuCgkocnM2MDAwX2luaXRfYnVpbHRpbnMpOiBJbml0aWFsaXplIHJlY2lwLCByZWNpcGYsIGFuZCByc3FydGYuCgkocnM2MDAwX2VtaXRfc3dyc3FydHNmKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChyczYwMDBfYnVpbHRpbnMpOiBBZGQgcmVjaXAsIHJlY2lwZiwgYW5kCglyc3FydGYuIAoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoVU5TUEVDX1JTUVJUKTogRGVmaW5lLgoJKGRpdnNmMyk6IFJlbW92ZSBzd2RpdiBzdXBwb3J0LgoJKHJlY2lwc2YzKTogTmV3LgoJKHJzcXJ0c2YyKTogTmV3LgoJKHJzcXJ0X2ludGVybmFsMSk6IE5ldy4KCShkaXZkZjMpOiBSZW1vdmUgc3dkaXYgc3VwcG9ydC4KCShyZWNpcHRkZjMpOiBOZXcuCgoyMDA3LTA5LTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMzM1MDYKCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl90eXBlcyk6IEFkZCB0eXBlX2hhc2hfZXEKCWZpZWxkLgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfVFlQRV9IQVNIX0VRKTogRGVmaW5lLgoJKExBTkdfSE9PS1NfRk9SX1RZUEVTX0lOSVRJQUxJWkVSKTogQWRkIExBTkdfSE9PS1NfVFlQRV9IQVNIX0VRLgoJKiB0cmVlLmMgKHR5cGVfaGFzaF9lcSk6IEZvciBGVU5DVElPTl9UWVBFIHVzZQoJbGFuZ19ob29rcy50eXBlLnR5cGVfaGFzaF9lcSBpbiBhZGRpdGlvbiB0byBnZW5lcmljIHRlc3RzLgoKMjAwNy0wOS0yNCAgUHJhbmF2IEJoYW5kYXJrYXIgIDxwcmFuYXYuYmhhbmRhcmthckBjZWx1bml0ZS5jb20+CglSYW1hbmEgUmFkaGFrcmlzaG5hbiAgPHJhbWFuYUBoZXJjdWxlcy5wdW4uY2VsdW5pdGUuY29tPgoKCSogdHJlZS1pbmxpbmUuaCAoZW5pX3dlaWdodHMpOiBBZGQgZmllbGQgdGFyZ2V0X2J1aWx0aW5fY29zdCB0bwoJcmVmbGVjdCB0aGUgY29zdCBwZXIgY2FsbCB0byBhIHRhcmdldCBzcGVjaWZpYyBidWlsdGluLgoJKiB0cmVlLWlubGluZS5jIChlc3RpbWF0ZV9udW1faW5zbnNfMSk6IElmIGl0IGlzIGEgQ0FMTF9FWFBSIGZvciBhCgljYWxsIHRvIGEgdGFyZ2V0IHNwZWNpZmljIGJ1aWx0aW4sIHRoZW4gdXNlIHRhcmdldF9idWlsdGluX2NhbGxfY29zdC4KCShpbml0X2lubGluZV9vbmNlKTogSW5pdGlhbGl6ZSB0YXJnZXRfYnVpbHRpbl9jYWxsX2Nvc3QgZmllbGQuCgoyMDA3LTA5LTI0ICBLYWkgVGlldHogIDxrYWkudGlldHpAb25ldmlzaW9uLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMzNDcyCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAocmV0dXJuX2luX21lbW9yeV9tc182NCk6IEhhbmRsZSByZXR1cm4gdHlwZXMgZm9yCgljb21wbGV4IHR5cGVzLgoKMjAwNy0wOS0yMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlndXJlLmFjIChsZF92ZXJzKTogU3VwcG9ydCBHTlUgbGlua2VyIHZlcnNpb24geHgueHguKgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNy0wOS0yMyAgT2xsaWUgV2lsZCAgPGFhd0Bnb29nbGUuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IEZvbGQgQklUX0FORF9FWFBSJ3Mgd2l0aCBhIHBvaW50ZXIKCW9wZXJhbmQuCgkoZ2V0X3BvaW50ZXJfbW9kdWx1c19hbmRfcmVzaWR1ZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDctMDktMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IE9uIDY0LWJpdCB0YXJnZXRzLAoJY29tYmluZSBhbiBTQyByZXR1cm4gdmFsdWUgaW50byBhIHNpbmdsZSByZWdpc3Rlci4KCjIwMDctMDktMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIG9wdGgtZ2VuLmF3ayAodGFyZ2V0X2ZsYWdzX2V4cGxpY2l0KTogRGVjbGFyZS4KCSogdG9wbGV2LmggKHRhcmdldF9mbGFnc19leHBsaWNpdCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogdG9wbGV2LmMgKHRhcmdldF9mbGFncyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKG1pcHNfbGxzY19zZXR0aW5nLCBtaXBzX2xsc2MpOiBEZWxldGUuCgkoR0VORVJBVEVfU1lOQywgR0VORVJBVEVfTExfU0MpOiBSZWRlZmluZSB1c2luZyB0YXJnZXRfZXhwbGljaXRfZmxhZ3MuCglOZXZlciByZXR1cm4gdHJ1ZSBmb3IgVEFSR0VUX01JUFMxNi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2xsc2MpOiBEZWxldGUuCgkobWlwc19oYW5kbGVfb3B0aW9uKTogUmVtb3ZlIC1tbGxzYyBoYW5kbGluZy4KCShtaXBzX3N0cmlwX3Vuc3BlY19hZGRyZXNzKTogVHdlYWsgY29tbWVudC4KCSogY29uZmlnL21pcHMvbWlwcy5vcHQgKG1sbHNjKTogVXNlIGEgdGFyZ2V0IG1hc2suCgoyMDA3LTA5LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBkb2MvdG0udGV4aSAoUE9JTlRFUlNfRVhURU5EX1VOU0lHTkVEKTogRG9jdW1lbnQgZXh0ZW5zaW9ucyB0bwoJd29yZF9tb2RlIGFzIHdlbGwgYXMgUG1vZGUuCgoyMDA3LTA5LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybV9zZXR1cF9ibG9jayk6IEV4cGxpY2l0bHkgY29udmVydCBCTEttb2RlCglwYXJhbWV0ZXJzIGZyb20gd29yZF9tb2RlIHRvIHRoZSBzdWJ3b3JkIHR5cGUgaWYgc3VjaCBhIHRydW5jYXRpb24KCWlzIG5vdCBhIG5vLW9wLgoKMjAwNy0wOS0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMgKE1BS0VJTkZPKTogSGFuZGxlIG1ha2VpbmZvIHZlcnNpb24gNC4xMCBhbmQgYWJvdmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDA3LTA5LTIzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwYXJhbXMuZGVmIChJTkxJTkVfQ0FMTF9DT1NUKTogU2V0IHRvIDEyLgoJKiBpbnZva2UudGV4aSAoaW5saW5lLWNhbGwtY29zdCk6IFVwZGF0ZSBkZWZhdWx0IHZhbHVlLgoKMjAwNy0wOS0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAobW92dGkpOiBVc2Ugb3BlcmFuZF9zdWJ3b3JkIGZvciB0aGUgc3BsaXQuCgoyMDA3LTA5LTIzICBBeWFsIFpha3MgIDx6YWtzQGlsLmlibS5jb20+CgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogbW9kdWxvLXNjaGVkLmMgKGRvbG9vcF9yZWdpc3Rlcl9nZXQpOiBSZXdyaXRlIHRoZSBsb29wIHdoaWNoCgljaGVja3Mgd2hldGhlciB0aGUgY291bnRfcmVnIGlzIGZvdW5kIG91dHNpZGUgdGhlIGNvbnRyb2wgcGFydC4KCjIwMDctMDktMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpIDxjYXNlIENBTExfRVhQUj46IFVzZSBnZXRfY2FsbGVlX2ZuZGVjbAoJaW5zdGVhZCBvZiBjaGVja2luZyBDQUxMX0VYUFJfRk4gZGlyZWN0bHkgdG8gdGVzdCBmb3IgYnVpbHRpbnMuCglJZiBlcnJvciBvciB3YXJuaW5nIGF0dHJpYnV0ZXMgYXJlIHByZXNlbnQsIHByaW50CgllcnJvciByZXNwLiB3YXJuaW5nLgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfZXJyb3JfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgoJKGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBlcnJvciBhbmQgd2FybmluZwoJYXR0cmlidXRlcy4KCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBlcnJvciBhbmQgd2FybmluZyBhdHRyaWJ1dGVzLgoKCSogdHJlZS5oIChibG9ja19ub25hcnRpZmljaWFsX2xvY2F0aW9uKTogTmV3IHByb3RvdHlwZS4KCSogdHJlZS5jIChibG9ja19ub25hcnRpZmljaWFsX2xvY2F0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKiBkd2FyZjJvdXQuYyAoZ2VuX3N1YnByb2dyYW1fZGllKTogQWRkIERXX0FUX2FydGlmaWNpYWwKCWlmIGFydGlmaWNpYWwgYXR0cmlidXRlIGlzIHByZXNlbnQgb24gYWJzdHJhY3QgaW5saW5lIGRlY2wuCgkqIGMtY29tbW9uLmMgKGhhbmRsZV9hcnRpZmljaWFsX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgYXJ0aWZpY2lhbCBhdHRyaWJ1dGUuCgkqIGZpbmFsLmMgKG92ZXJyaWRlX2ZpbGVuYW1lLCBvdmVycmlkZV9saW5lbnVtKTogTmV3IHZhcmlhYmxlcy4KCShmaW5hbF9zY2FuX2luc24pOiBGb3IgREJYX0RFQlVHIG9yIFNEQl9ERUJVRywgc2V0IG92ZXJyaWRlX2ZpbGVuYW1lCglhbmQgb3ZlcnJpZGVfbGluZW51bSBpZiBpbnNpZGUgb2YgYSBibG9jayBpbmxpbmVkIGZyb20KCV9fYXR0cmlidXRlX18oKF9fYXJ0aWZpY2lhbF9fKSkgZnVuY3Rpb24uCgkobm90aWNlX3NvdXJjZV9saW5lKTogSG9ub3Igb3ZlcnJpZGVfZmlsZW5hbWUgYW5kIG92ZXJyaWRlX2xpbmVudW0uCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgX19hdHRyaWJ1dGVfXygoX19hcnRpZmljaWFsX18pKS4KCSogY29uZmlnL2kzODYvZW1taW50cmluLmg6IEFkZCBfX2FydGlmaWNpYWxfXyBhdHRyaWJ1dGUgdG8KCWFsbCBfX2Fsd2F5c19pbmxpbmVfXyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9pMzg2L21taW50cmluLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni90bW1pbnRyaW4uaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L21tM2Rub3cuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3BtbWludHJpbi5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvYW1taW50cmluLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni94bW1pbnRyaW4uaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3NtbWludHJpbi5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvYm1taW50cmluLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9tbWludHJpbi1jb21tb24uaDogTGlrZXdpc2UuCgoJUFIgbWlkZGxlLWVuZC8yODc1NQoJKiBleHByLmMgKGV4cGFuZF9jb25zdHJ1Y3Rvcik6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfZXhwcl9yZWFsXzEpIDxjYXNlIENPTlNUUlVDVE9SPjogQ2FsbCBpdC4KCShleHBhbmRfZXhwcl9yZWFsXzEpIDxjYXNlIEFSUkFZX1JFRj46IENhbGwgaXQgaWYgVkFMVUUgaXMKCUNPTlNUUlVDVE9SLgoKMjAwNy0wOS0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChkdW1wX2NvbnN0YW50c18xKTogR2VuZXJhbGl6ZSB0byBpbmNsdWRlCglmcmFjdGlvbmFsIGFuZCBhY2N1bXVsYXRvciBtb2Rlcy4KCjIwMDctMDktMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19EU1AsIElTQV9IQVNfRFNQUjIpOiBOZXcgbWFjcm9zLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2V0X21pcHMxNl9tb2RlKTogRG9uJ3QgY2xlYXIgdGhlIERTUAoJZmxhZ3MgZm9yIE1JUFMxNi4KCShvdmVycmlkZV9vcHRpb25zKTogQ2hlY2sgVEFSR0VUX0hBUkRfRkxPQVRfQUJJIGluc3RlYWQgb2YKCVRBUkdFVF9IQVJEX0ZMT0FUIHdoZW4gdGVzdGluZyB3aGV0aGVyIC1tcGFpcmVkLXNpbmdsZSBpcwoJc3VwcG9ydGVkLgoJKG1pcHNfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UpOiBDaGVjayBJU0FfSEFTX0RTUCBpbnN0ZWFkIG9mCglUQVJHRVRfRFNQLgoJKiBjb25maWcvbWlwcy9jb25zdHJhaW50cy5tZCAoa2EpOiBDaGVjayBJU0FfSEFTX0RTUFIyIGluc3RlYWQgb2YKCVRBUkdFVF9EU1BSMi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoQU5ZRik6IFJlcXVpcmUgVEFSR0VUX0hBUkRfRkxPQVQgZm9yIFYyU0YuCgkobXVsdjJzZjMsIG1vdnYyc2YsIG1vdnYyc2ZfaGFyZGZsb2F0XzY0Yml0KTogUmVxdWlyZQoJVEFSR0VUX0hBUkRfRkxPQVQuCgkoPHU+bXVsc2lkaTNfMzJiaXRfaW50ZXJuYWwsIDx1Pm1zdWJzaWRpNCwgPHU+bWFkZHNpZGk0KTogQ2hlY2sKCUlTQV9IQVNfRFNQUjIgaW5zdGVhZCBvZiBUQVJHRVRfSEFTX0RTUFIyLgoJKiBjb25maWcvbWlwcy9taXBzLWRzcC5tZDogVXNlIElTQV9IQVNfRFNQIGluc3RlYWQgb2YgVEFSR0VUX0hBU19EU1AKCXRocm91Z2hvdXQuCgkqIGNvbmZpZy9taXBzL21pcHMtZHNwcjIubWQ6IExpa2V3aXNlIElTQV9IQVNfRFNQUjIgYW5kCglUQVJHRVRfSEFTX0RTUFIyLgoJKiBjb25maWcvbWlwcy9taXBzLWZpeGVkLm1kOiBVc2UgSVNBX0hBU19EU1AgYW5kIElTQV9IQVNfRFNQUjIKCWluc3RlYWQgb2YgVEFSR0VUX0hBU19EU1AgYW5kIFRBUkdFVF9IQVNfRFNQUjIuCgkqIGNvbmZpZy9taXBzL21pcHMtcHMtM2QubWQ6IEFkZCBUQVJHRVRfSEFSRF9GTE9BVCB0byBWMlNGIHBhdHRlcm5zLgoKMjAwNy0wOS0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzE5NDA3CgkqIGF0dHJpYnMuYyAobG9va3VwX2F0dHJpYnV0ZV9zcGVjKTogU3BsaXQgb3V0Li4uCgkoZGVjbF9hdHRyaWJ1dGVzKTogRnJvbSBoZXJlLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDA3LTA5LTIyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogRG9jdW1lbnQgZGctYWRkLW9wdGlvbnMgbWlwczE2X2F0dHJpYnV0ZS4KCjIwMDctMDktMjIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLWlubGluZS5jIChyZW1hcF90eXBlXzEpOiBDb3JyZWN0bHkgY2hhaW4gdmFyaWFudHMuCgoyMDA3LTA5LTIyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMxNDYKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IFVzZSB0aGUgb3JpZ2luYWwgdHJlZSBmb3IgbmVnYXRpbmcuCgkqIHRyZWUuaCAoU1RSSVBfU0lHTl9OT1BTKTogQ29udmVydGluZyBmcm9tIG9yIHRvIHBvaW50ZXIKCWFsc28gY2hhbmdlcyAic2lnbiIuCgoyMDA3LTA5LTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIHRhcmdldC8zMjMyNQoJKiBleGNlcHQuYyAoZmluaXNoX2VoX2dlbmVyYXRpb24pOiBDYWxsIGNvbW1pdF9lZGdlX2luc2VydGlvbnMgaWYKCXRoZXJlIGFyZSBpbnNucyBxdWV1ZWQgb24gdGhlIGVudHJ5IGVkZ2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9ncF9zYXZlX3J0eCk6IEluc2VydCB0aGUgaW5zbnMgb24KCXRoZSBlbnRyeSBlZGdlLgoKMjAwNy0wOS0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKGRnLWFkZC1jOTktcnVudGltZS1vcHRpb25zKTogRG9jdW1lbnQuCgoyMDA3LTA5LTE5ICBNaWNoYWVsIE1laXNzbmVyICA8bWljaGFlbC5tZWlzc25lckBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jOiBEZWxldGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oOiBEaXR0by4KCSogY29uZmlnL2kzODYvYm1taW50cmluLmg6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9zeW5jLm1kOiBEaXR0by4KCSogY29uZmlnL2kzODYvcHByby5tZDogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L21teC5tZDogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kOiBEaXR0by4KCSogY29uZmlnL2kzODYvc3NlLm1kOiBEaXR0by4KCSogY29uZmlnL2kzODYvYXRobG9uLm1kOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogRGl0dG8uCgoyMDA3LTA5LTIxICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM1MDgKCSogdHJlZS1zc2EtYWxpYXMuYyAobWFya19hbGlhc2VzX2NhbGxfY2xvYmJlcmVkKTogQXZvaWQKCXF1YWRyYXRpYyBsb29wIGJ5IGtlZXBpbmcgYSBiaXRtYXAgb2YgdmFyaWFibGVzIHdlIGhhdmUKCXRvIGNsb2JiZXIgYWxsIHN1YnZhcmlhYmxlcyBmb3IuCgkoc2V0X2luaXRpYWxfcHJvcGVydGllcyk6IExpa2V3aXNlLgoKMjAwNy0wOS0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvdC1zZGUgKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IERlbGV0ZS4KCjIwMDctMDktMjAgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgkgICAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2RlY2xzcGVjcyk6IFdoZW4gX1NhdCBpcyB1c2VkIHdpdGhvdXQKCV9GcmFjdCBvciBfQWNjdW0sIHNldCB0aGUgZGVmYXVsdCB0eXBlIHRvIGN0c19mcmFjdC4KCVRoaXMgYXZvaWRzIGEgd2FybmluZyBvZiAidHlwZSBkZWZhdWx0cyB0byBpbnQiLgoKMjAwNy0wOS0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoY2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGgpOiBEb24ndCBhbGxvdyBfQm9vbAoJYml0LWZpZWxkcyB3aWRlciB0aGFuIG9uZSBiaXQuCgoyMDA3LTA5LTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy8zMzMxNgoJKiBkd2FyZjJvdXQuYyAobW9kaWZpZWRfdHlwZV9kaWUpOiBIYW5kbGUgVFlQRV9ERUNMIHdpdGggTlVMTAoJREVDTF9OQU1FLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGUpOiBMaWtld2lzZS4KCglQUiBjLzMzMjM4CglQUiBjLzI3MzAxCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3ZsYV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGdpbXBsaWZ5X2RlY2xfZXhwcik6IE1vdmUgVkxBIGRlY2wgaGFuZGxpbmcgdG8gZ2ltcGxpZnlfdmxhX2RlY2wuCglDYWxsIGl0LgoJKGdpbXBsaWZ5X3RhcmdldF9leHByKTogSGFuZGxlIHZhcmlhYmxlIGxlbmd0aCBUQVJHRVRfRVhQUnMuCgoyMDA3LTA5LTIwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1taW50ZXJsaW5rLW1pcHMxNik6IERvY3VtZW50LgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobWludGVybGluay1taXBzMTYpOiBOZXcgb3B0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBIYW5kbGUKCS1taW50ZXJsaW5rLW1pcHMxNgoKMjAwNy0wOS0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEF0dHJpYnV0ZSBTeW50YXgpOiBSZW1vdmUgb2xkIHNwZWN1bGF0aXZlCglmdXR1cmUgZGlyZWN0aW9uLgoKMjAwNy0wOS0yMCAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb21iaW5lLmM6IEluY2x1ZGUgY2dyYXBoLmguCgkoc2V0dXBfaW5jb21pbmdfcHJvbW90aW9ucyk6IFJld29yayB0byBhbGxvdyBtb3JlIGFnZ3Jlc3NpdmUKCWVsaW1pbmF0aW9uIG9mIHNpZ24gZXh0ZW5zaW9ucyB3aGVuIGFsbCBjYWxsIHNpdGVzIG9mIHRoZQoJY3VycmVudCBmdW5jdGlvbiBhcmUga25vd24gdG8gbGllIHdpdGhpbiB0aGUgY3VycmVudCB1bml0LgoKMjAwNy0wOS0yMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogZHNlLmMgKGZpbmRfc2hpZnRfc2VxdWVuY2UpOiBOby1vcCByZXdvcmsgb2YgY29udHJvbCBmbG93LgoKMjAwNy0wOS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChidWlsZF9taXBzMTZfY2FsbF9zdHViKTogVGlkeS4gIEZpeCBzZWNvbmQKCUdQUiBmb3IgRENtb2RlIG9uIDY0LWJpdCB0YXJnZXRzLiAgUmVtb3ZlIHJlZHVuZGFudCBmYWxsYmFjay4KCjIwMDctMDktMTkgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCSogY2ZnZXhwYW5kLmMgKGR1bXBfc3RhY2tfdmFyX3BhcnRpdGlvbik6IFVzZSB0aGUgY29ycmVjdAoJaW5kZXggZm9yIHRoZSBvZmZzZXQuCgoyMDA3LTA5LTE5ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL3NkZS5oOiBTd2l0Y2ggdG8gR1BMdjMuCgoyMDA3LTA5LTE5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS1zcmEuYyAoZGVjaWRlX2Jsb2NrX2NvcHkpOiBEZWNpZGUgaWYgdGhlcmUgYXJlIGdyb3Vwcy4KCjIwMDctMDktMTkgIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChvdXRwdXRfbW92ZV9oaW1vZGUpOiBSZW1vdmUganVtcCB0YWJsZQoJcmVjb2duaXRpb24uCgljb25maWcvbTY4ay9tNjhrLm1kIChsZWEpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBVc2Ugc2ltcGxlIHBjCglyZWxhdGl2ZSBhZGRyZXNzaW5nLgoKMjAwNy0wOS0xOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGRvYy90bS50ZXhpIChJU19BU01fTE9HSUNBTF9MSU5FX1NFUEFSQVRPUik6IERvY3VtZW50IG5ldyBhcmd1bWVudC4KCSogZmluYWwuYyAoSVNfQVNNX0xPR0lDQUxfTElORV9TRVBBUkFUT1IpOiBQcm92aWRlIHR3by1hcmd1bWVudAoJZGVmYXVsdCBkZWZpbml0aW9uLgoJKGFzbV9pbnNuX2NvdW50KTogUGFzcyB0ZW1wbGF0ZSBhcyBzZWNvbmQgYXJndW1lbnQgdG8gaXQuCgkqIGNvbmZpZy9hdnIvYXZyLmggKElTX0FTTV9MT0dJQ0FMX0xJTkVfU0VQQVJBVE9SKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5oIChJU19BU01fTE9HSUNBTF9MSU5FX1NFUEFSQVRPUik6IExpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCAoSVNfQVNNX0xPR0lDQUxfTElORV9TRVBBUkFUT1IpOiBMaWtld2lzZS4KCSogY29uZmlnL2NyaXMvY3Jpcy5oIChJU19BU01fTE9HSUNBTF9MSU5FX1NFUEFSQVRPUik6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoSVNfQVNNX0xPR0lDQUxfTElORV9TRVBBUkFUT1IpOiBMaWtld2lzZS4KCShzaF9pbnNuX2xlbmd0aF9hZGp1c3RtZW50KTogUGFzcyB0ZW1wbGF0ZSBhcyBzZWNvbmQgYXJndW1lbnQgdG8gaXQuCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoSVNfQVNNX0xPR0lDQUxfTElORV9TRVBBUkFUT1IpOiBOZXcgbWFjcm8uCgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChkZWZpbmVfYXNtX2F0dHJpYnV0ZXMpOiBOZXcuCgoyMDA3LTA5LTE5ICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGJmaW4qLWxpbnV4LXVjbGliYyopOiBBZGQgLi9saW51eC1zeXNyb290LXN1ZmZpeC5oCgl0byB0bV9maWxlLgoJKiBjb25maWcvYmZpbi9wcmludC1zeXNyb290LXN1ZmZpeC5zaDogTmV3LgoJKiBjb25maWcvYmZpbi90LWJmaW4tZWxmIChFWFRSQV9QQVJUUyk6IFJlbW92ZS4KCShNVUxUSUxJQl9PUFRJT05TLCBNVUxUSUxJQl9ESVJOQU1FUywgTVVMVElMSUJfTUFUQ0hFUywKCU1VTFRJTElCX0VYQ0VQVElPTlMpOiBSZWRlZmluZSB3aXRoIG5ldyBtdWx0aWxpYnMuCgkqIGNvbmZpZy9iZmluL3QtYmZpbi11Y2xpbnV4IChFWFRSQV9QQVJUUyk6IFJlbW92ZS4KCShNVUxUSUxJQl9PUFRJT05TLCBNVUxUSUxJQl9ESVJOQU1FUywgTVVMVElMSUJfTUFUQ0hFUywKCU1VTFRJTElCX0VYQ0VQVElPTlMpOiBSZWRlZmluZSB3aXRoIG5ldyBtdWx0aWxpYnMuCgkqIGNvbmZpZy9iZmluL3QtYmZpbi1saW51eCAoRVhUUkFfUEFSVFMpOiBSZW1vdmUuCgkoTVVMVElMSUJfT1BUSU9OUywgTVVMVElMSUJfRElSTkFNRVMsIE1VTFRJTElCX01BVENIRVMsCglNVUxUSUxJQl9FWENFUFRJT05TKTogUmVkZWZpbmUgd2l0aCBuZXcgbXVsdGlsaWJzLgoJKGxpbnV4LXN5c3Jvb3Qtc3VmZml4LmgpOiBOZXcgdGFyZ2V0LgoJKiBjb25maWcvYmZpbi9iZmluLm9wdCAobWNzeW5jLWFub21hbHkpOiBVc2UgVmFyIGluc3RlYWQgb2YgTWFzay4KCShtc3BlY2xkLWFub21hbHkpOiBMaWtld2lzZS4KCSogY29uZmlnL2JmaW4vYmZpbi1wcm90b3MuaCAoZW51bSBiZmluX2NwdV90eXBlKTogUmVuYW1lZCBmcm9tCgkoZW51bSBiZmluX2NwdSk6IC4uLiB0aGlzLiBBZGQgQkZJTl9DUFVfQkY1MjIsIEJGSU5fQ1BVX0JGNTI1LAoJQkZJTl9DUFVfQkY1MjcsIEJGSU5fQ1BVX0JGNTM4LCBCRklOX0NQVV9CRjUzOSwgQkZJTl9DUFVfQkY1NDIsCglCRklOX0NQVV9CRjU0NCwgQkZJTl9DUFVfQkY1NDgsIGFuZCBCRklOX0NQVV9CRjU0OS4KCShiZmluX3NpX3JldmlzaW9uKTogRGVjbGFyZS4KCShiZmluX3dvcmthcm91bmRzKTogRGVjbGFyZS4KCShXQV9TUEVDVUxBVElWRV9MT0FEUyk6IERlZmluZS4KCShFTkFCTEVfV0FfU1BFQ1VMQVRJVkVfTE9BRFMpOiBEZWZpbmUuCgkoV0FfU1BFQ1VMQVRJVkVfU1lOQ1MpOiBEZWZpbmUuCgkoRU5BQkxFX1dBX1NQRUNVTEFUSVZFX1NZTkNTKTogRGVmaW5lLgoJKiBjb25maWcvYmZpbi9lbGYuaCAoU1RBUlRGSUxFX1NQRUMpOiBSZW5hbWUgY3J0NTMyLm8gdG8gYmFzaWNjcnQuby4KCShMSUJfU1BFQyk6IEFkZCAlcyB0byB0aGUgbGlua2VyIHNjcmlwdHMuCglVc2UgcHJvcGVyIGxpbmtlciBzY3JpcHQgZm9yIGJmNTIyLCBiZjUyNSwgYmY1MjcsCgliZjUzOCwgYmY1MzksIGJmNTQyLCBiZjU0NCwgYmY1NDgsIGFuZCBiZjU0OS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX3NpX3JldmlzaW9uKTogRGVmaW5lLgoJKGJmaW5fd29ya2Fyb3VuZHMpOiBEZWZpbmUuCgkoc3RydWN0IGJmaW5fY3B1KTogTmV3LgoJKGJmaW5fY3B1cyk6IE5ldy4KCShiZmluX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgc2lsaWNvbiByZXZpc2lvbiBwYXJ0IG9mIC1tY3B1IG9wdGlvbi4KCShvdmVycmlkZV9vcHRpb25zKTogU2V0IGJmaW5fd29ya2Fyb3VuZHMuCgkobGVuZ3RoX2Zvcl9sb29wKTogUmVwbGFjZSBUQVJHRVRfQ1NZTkNfQU5PTUFMWSB3aXRoCglFTkFCTEVfV0FfU1BFQ1VMQVRJVkVfU1lOQ1MsIFRBUkdFVF9TUEVDTERfQU5PTUFMWSB3aXRoCglFTkFCTEVfV0FfU1BFQ1VMQVRJVkVfTE9BRFMuCgkoYmZpbl9yZW9yZyk6IExpa2V3aXNlLgoJKiBjb25maWcvYmZpbi9iZmluLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lCgltYWNyb3MgZm9yIGJmNTIyLCBiZjUyNSwgYmY1MjcsIGJmNTM4LCBiZjUzOSwKCWJmNTQyLCBiZjU0NCwgYmY1NDgsIGFuZCBiZjU0OS4KCURlZmluZSBfX1NJTElDT05fUkVWSVNJT05fXyBhbmQgX19XT1JLQVJPVU5EXyogbWFjcm9zIGlmIG5lZWRlZC4KCURvbid0IGRlZmluZSBfX0lEX1NIQVJFRF9MSUJfXyB3aGVuIC1tc2VwLWRhdGEuCgkoVEFSR0VUX0RFRkFVTFQpOiBEZWZpbmUgYXMgMC4KCShEUklWRVJfU0VMRl9TUEVDUyk6IEFkZCAtbWNwdT1iZjUzMiBpZiBubyAtbWNwdSBvcHRpb24uCgkqIGRvYy9pbnZva2UudGV4aSAoQmxhY2tmaW4gT3B0aW9ucyk6IERvY3VtZW50IHNpbGljb24KCXJldmlzaW9uIHBhcnQgb2YgLW1jcHUgb3B0aW9uIGFuZCBpdCBub3cgYWNjZXB0cyBiZjUyMiwgYmY1MjUsCgliZjUyNywgYmY1MzgsIGJmNTM5LCBiZjU0MiwgYmY1NDQsIGJmNTQ4LCBhbmQgYmY1NDkuCgoyMDA3LTA5LTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbGlhcy5jIChtZW1vcnlfbW9kaWZpZWRfMSk6IERlY29uc3RpZnkuCgkobWVtb3J5X21vZGlmaWVkX2luX2luc25fcCk6IERvbid0IHVzZSBjb25zdF9ub3RlX3N0b3Jlcy4KCSogcnRsLmggKGNvbnN0X25vdGVfc3RvcmVzKTogRGVsZXRlLgoJKiBydGxhbmFsLmMgKGNvbnN0X25vdGVfc3RvcmVzKTogTGlrZXdpc2UuCgoyMDA3LTA5LTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBkc2UuYyAoZmluZF9zaGlmdF9zZXF1ZW5jZSk6IFRlbXBvcmFyaWx5IHJldmVydCB0byBmb3JiaWRkaW5nCgl3b3JkIHNoaWZ0cy4KCjIwMDctMDktMTggIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCglQUiB0YXJnZXQvMzMzODgKCVBSIHRhcmdldC8zMzM5NwoJKiBjb25maWcvZnIzMC9mcjMwLm1kIChhZGRzaTMpOiBDaGVjayBSRUdfUCgpIGJlZm9yZSBjYWxsaW5nIFJFR05PKCkuCgkoYWRkc2lfc21hbGxfaW50KTogTGlrZXdpc2UuCgkoYWRkc2lfYmlnX2ludCk6IFVzZSBydHhfZXF1YWxfcCgpIGluc3RlYWQgb2YgUkVHTk8oKSBjb21wYXJpc29uLgoJKG9uZV9jbXBsc2kyKTogTGlrZXdpc2UuCgkobmVnc2kyKTogRGVsZXRlLgoJKGVudGVyX2Z1bmMpOiBFeHBhbmQgaW5zbiB1c2luZyBoYXJkX2ZyYW1lX3BvaW50ZXJfcnR4IGFuZAoJc3RhY2tfcG9pbnRlcl9ydHguCgkoKmVudGVyX2Z1bmMpOiBOZXcuCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYyAoZnIzMF9leHBhbmRfcHJvbG9ndWUpOiBDaGVjayBmb3IKCWhhcmRfZnJhbWVfcG9pbnRlcl9ydHggaW5zdGVhZCBvZiB1c2luZyBSRUdOTygpIGNoZWNrLgoJUHJvcGVybHkgc2lnbiBleHRlbmQgR0VOX0lOVCgpIGFyZ3VtZW50LgoKMjAwNy0wOS0xOCAgUm9tYW4gWmlwcGVsIDx6aXBwZWxAbGludXgtbTY4ay5vcmc+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBSZW1vdmUgVVNFX0dBUywKCXVzZSAlLiBzeW50YXguCgkob3V0cHV0X2RiY2NfYW5kX2JyYW5jaCwgb3V0cHV0X3NjY19kaSk6IFJlcGxhY2UgYWxsIGpiY2MKCWFsdGVybmF0aXZlcyB3aXRoIGp1c3QgamNjLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChhZGRzaV9sc2hyc2lfMzEsIGJlcTBfZGksIGJuZTBfZGksCgliZ2UwX2RpLCBibHQwX2RpLCBiZ3R1LCBibHR1LCBiZ2V1LCBibGV1LCBiZ3R1X3JldiwKCWJsdHVfcmV2LCBiZ2V1X3JldiwgYmxldV9yZXYsIGp1bXAsIGRibmVfaGksIGRibmVfc2ksCglkYmdlX2hpLCBkYmdlX3NpKTogTGlrZXdpc2UuCgoyMDA3LTA5LTE4ICBSb21hbiBaaXBwZWwgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4KCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKGJlcSwgYm5lLCBiZ3QsIGJsdCwgYmdlLCBibGUsIGJvcmRlcmVkLAoJYnVub3JkZXJlZCwgYnVuZXEsIGJ1bmdlLCBidW5ndCwgYnVubGUsIGJ1bmx0LCBibHRndCwgYmVxX3JldiwKCWJuZV9yZXYsIGJndF9yZXYsIGJsdF9yZXYsIGJnZV9yZXYsIGJsZV9yZXYsIGJvcmRlcmVkX3JldiwKCWJ1bm9yZGVyZWRfcmV2LCBidW5lcV9yZXYsIGJ1bmdlX3JldiwgYnVuZ3RfcmV2LCBidW5sZV9yZXYsCglidW5sdF9yZXYsIGJsdGd0X3Jldik6IFJlcGxhY2UgYWxsIGZiY2Mgd2l0aCBmamNjLgoKMjAwNy0wOS0xOCAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1kZXZpY2VzLmRlZiAoNTFxZSk6IE5ldyBkZXZpY2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoRkxfRk9SX2lzYV9jKTogUmVtb3ZlIGRpdmlzaW9uIHVuaXQuICBBZGQgaXQKCXRvIGFsbCB1c2VzIG9mIEZMX0ZPUl9pc2FfYyBmb3IgY29tcGF0aWJpbGl0eS4KCShhbGxfbWljcm9hcmNocyk6IEFkZCBjZnYxIG1pY3JvYXJjaGl0ZWN0dXJlLgoJKG02OGtfaGFuZGxlX29wdGlvbik6IEhhbmRsZSBtNTFxZSBvcHRpb24uCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBIYW5kbGUgNTFRRS4KCShUVU5FX0NGVjEpOiBOZXcgbWFjcm8uCgkoZW51bSB1YXJjaF90eXBlKTogQWRkIHVjZnYxLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IDUxcWUgZGV2aWNlIGFuZCBjZnYxIG1pY3JvYXJjaGl0ZWN0dXJlLgoJCjIwMDctMDktMTggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTg2MwoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChjcmVhdGVfdmFyaWFibGVfaW5mb19mb3IpOiBBbHdheXMKCWZyZWUgdGhlIGZpZWxkc3RhY2suCgoyMDA3LTA5LTE4ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IEVuYWJsZSB2ZWN0b3JpemF0aW9uIHVuZGVyIC1PMy4KCjIwMDctMDktMTggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzM0MAoJKiB0cmVlLXNzYS1zY2N2bi5jIChzZXRfc3NhX3ZhbF90byk6IERvIG5vdCBzZXQgdmFsdWVzIHRvCglTU0FfTkFNRXMgdGhhdCBvY2N1ciBpbiBhYm5vcm1hbCBQSEkgbm9kZXMuCgoyMDA3LTA5LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0cmVlLWNmZy5jIChpc19jdHJsX2FsdGVyaW5nX3N0bXQsIHRyZWVfYmxvY2tfZW5kc193aXRoX2NhbGxfcCk6CglEb24ndCB1c2UgY29uc3RfZ2V0X2NhbGxfZXhwcl9pbi4KCSogdHJlZS1naW1wbGUuYyAoY29uc3RfZ2V0X2NhbGxfZXhwcl9pbik6IERlbGV0ZS4KCSogdHJlZS1naW1wbGUuaCAoY29uc3RfZ2V0X2NhbGxfZXhwcl9pbik6IExpa2V3aXNlLgoKMjAwNy0wOS0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogZGYtc2Nhbi5jIChkZl9ub3Rlc19yZXNjYW4pOiBEbyBub3RoaW5nIGlmIHRoZSBpbnN0cnVjdGlvbiBkb2VzCglub3QgeWV0IGhhdmUgYSBiYXNpYyBibG9jay4KCSogZHNlLmMgKGZpbmRfc2hpZnRfc2VxdWVuY2UpOiBEb24ndCBzZXQgREZfTk9fSU5TTl9SRVNDQU4uCgoyMDA3LTA5LTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZmlsZV9zdGFydCk6IEFkZCAiLnByZXZpb3VzIiBkaXJlY3RpdmVzCgl0byBib3RoICIuc2VjdGlvbiJzLgoKMjAwNy0wOS0xNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9taV90aHVuayk6IFVzZQoJbWlwc19mdW5jdGlvbl9va19mb3Jfc2liY2FsbCBhbmQgY29uc3RfY2FsbF9pbnNuX29wZXJhbmQKCXRvIGRldGVybWluZSBpZiBhIGRpcmVjdCBzaWJjYWxsIGlzIGFsbG93ZWQuICBVc2UKCW1pcHNfY2xhc3NpZnlfc3ltYm9sIHRvIGRldGVybWluZSBhIGdsb2JhbCBwb2ludGVyIGlzIG5lZWRlZC4KCjIwMDctMDktMTcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCpjbGVhcl91cHBlcjMyKTogVXNlICJXIiBhcyB0aGUgbWVtb3J5IG9wZXJhbmQuCgoyMDA3LTA5LTE3ICBDaGFvLXlpbmcgRnUgIDxmdUBtaXBzLmNvbT4KCSAgICBOaWdlbCBTdGVwaGVucyAgPG5pZ2VsQG1pcHMuY29tPgoKCSogY29uZmlnL2ZpeGVkLWJpdC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL2ZpeGVkLWJpdC5jOiBOZXcgZmlsZS4KCSogZG9jL2xpYmdjYy50ZXhpIChGaXhlZC1wb2ludCBmcmFjdGlvbmFsIGxpYnJhcnkgcm91dGluZXMpOiBOZXcgbm9kZS4KCjIwMDctMDktMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYy1mb3JtYXQuaCAoZm9ybWF0X2tpbmRfaW5mbyk6IEFkZCBhbGxvY19jaGFyIGZpZWxkLgoJKiBjLWZvcm1hdC5jIChzY2FuZl9mbGFnX3NwZWNzKTogQWRkICdtJy4KCShzY2FuZl9mbGFnX3BhaXJzKTogQWRkICdhJywgJ20nIHBhaXIuCgkoc2Nhbl9jaGFyX3RhYmxlKTogQWxsb3cgJ20nIG1vZGlmaWVyIGZvciBjLCBzLCBbLCBDIGFuZCBTLgoJKGZvcm1hdF90eXBlc19vcmlnKTogQWRkIGFsbG9jX2NoYXIgZmllbGRzLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBSZW5hbWUgYWZsYWcgdG8gYWxsb2NfZmxhZy4KCUhhbmRsZSBma2ktPmFsbG9jX2NoYXIuIG1vZGlmaWVyIGFmdGVyIHdpZHRoIGFuZCBiZWZvcmUgbGVuZ3RoCgltb2RpZmllcnMuICBNb3ZlIEZNVF9GTEFHX1NDQU5GX0FfS0xVREdFIGhhbmRsaW5nIGJlZm9yZQoJbGVuZ3RoIG1vZGlmaWVycyBhcyB3ZWxsLgoJKiBjb25maWcvc29sMi1jLmMgKHNvbGFyaXNfZm9ybWF0X3R5cGVzKTogQWRkIGFsbG9jX2NoYXIgZmllbGQuCgoJUFIgbWlkZGxlLWVuZC8zMzQyMwoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1vcnlfY2hrKTogSGFuZGxlIENPTVBPVU5EX0VYUFJzCglyZXR1cm5lZCBieSBidWlsZF9jYWxsX2V4cHIuCgoyMDA3LTA5LTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS1zcmEuYyAobWF5YmVfbG9va3VwX2VsZW1lbnRfZm9yX2V4cHIpIDxDT01QT05FTlRfUkVGPjogUmV0dXJuCglOVUxMIGZvciB2YXJpYWJsZS1zaXplZCByZWNvcmRzIHRvby4KCShzcmFfd2Fsa19leHByKSA8Q09NUE9ORU5UX1JFRj46IFN0b3AgYXQgdmFyaWFibGUtc2l6ZWQgcmVjb3JkcyB0b28uCgoyMDA3LTA5LTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBzZXQgREVDTF9MQU5HX1NQRUNJRklDLgoJKGNfYnVpbHRpbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgoyMDA3LTA5LTE3ICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI2NDQ5CgkqIGxvb3AtaW52YXJpYW50LmMgKG1vdmVfaW52YXJpYW50X3JlZyk6IERvIG5vdCB1c2UgZm9yY2Vfb3BlcmFuZC4KCShzZXFfaW5zbnNfdmFsaWRfcCk6IFJlbW92ZWQuCgoyMDA3LTA5LTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS1ub211ZGZsYXAuYyAoZ2F0ZV9tdWRmbGFwKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShwYXNzX211ZGZsYXBfMSk6IFVzZSBpdCBhcyBnYXRlIGZ1bmN0aW9uLgoJKHBhc3NfbXVkZmxhcF8yKTogTGlrZXdpc2UuCgoyMDA3LTA5LTE3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgbWlkZGxlLWVuZC8zMzM0OAoJUFIgdGFyZ2V0LzMzNDA2CgkqIGxvb3AtaW52YXJpYW50LmMgKG1vdmVfaW52YXJpYW50X3JlZyk6IFVuc2hhcmUgc2VxdWVuY2UuCgoyMDA3LTA5LTE3ICBWaWN0b3IgS2FwbGFuc2t5ICA8dmljdG9ya0BpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzMzE5CgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3Rfc2FtZV9yYW5nZV9kcnMpOiBOZXcuCgkodmVjdF92ZmFfcmFuZ2VfZXF1YWwpOiBOZXcuCgkodmVjdF9pc19kdXBsaWNhdGVfZGRyKTogUmVtb3ZlZC4KCSh2ZWN0X21hcmtfZm9yX3J1bnRpbWVfYWxpYXNfdGVzdCk6IERvIG5vdCBwZXJmb3JtIG1hcmtpbmcgd2hlbgoJb3B0aW1pemluZyBmb3Igc2l6ZSBvciBtYXhfcGFyYW0gZm9yIGFsaWFzIGNoZWNraW5nIGlzIHplcm8uCglNb3ZlIHRoZSBmdW5jdGlvbiBiZWZvcmUgdmVjdF9hbmFseXplX2RhdGFfcmVmX2RlcGVuZGVuY2UuCgkodmVjdF9hbmFseXplX2RhdGFfcmVmX2RlcGVuZGVuY2UpOiBBZGQgY2FsbCB0bwoJdmVjdF9tYXJrX2Zvcl9ydW50aW1lX2FsaWFzX3Rlc3QgaW4gdHdvIGNhc2VzIHdoZW4gZGVwZW5kZW5jZQoJaXMgbm90IGNsZWFyLgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZl9kZXBlbmRlbmNlcyk6IERvIG5vdCBjYWxsIHRvCgl2ZWN0X21hcmtfZm9yX3J1bnRpbWVfYWxpYXNfdGVzdC4KCSh2ZWN0X3BydW5lX3J1bnRpbWVfYWxpYXNfdGVzdF9saXN0KTogTmV3LgoJKHZlY3RfYW5hbHl6ZV9sb29wKTogQWRkIGNhbGwgdG8gdmVjdF9wcnVuZV9ydW50aW1lX2FsaWFzX3Rlc3RfbGlzdC4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzKToKCVVwZGF0ZSB2ZWNfb3V0c2lkZV9jb3N0LgoJKHZlY3RfdmZhX3NlZ21lbnRfc2l6ZSk6IE1vcmUgY29tcGFjdCBjb2RlLCB1c2UgVFlQRV9TSVpFX1VOSVQuCgkodmVjdF9jcmVhdGVfY29uZF9mb3JfYWxpYXNfY2hlY2tzKTogQnVpbGQgdGhlIGJhc2UgYWRkcmVzcyBvZiBkYXRhCglyZWZlcmVuY2UgZnJvbSBEUl9HUk9VUF9GSVJTVF9EUi4KCSh2ZWN0X2xvb3BfdmVyc2lvbmluZyk6IE5ldy4KCSh2ZWN0X3RyYW5zZm9ybV9sb29wKTogQWRkIGEgY2FsbCB0byB2ZWN0X2xvb3BfdmVyc2lvbmluZy4KCVJlbW92ZSBmYWN0b3JlZCBvdXQgY29kZS4KCjIwMDctMDktMTYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgbWlkZGxlLWVuZC8zMzI3MwoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBDYWxsIGFkanVzdF9hZGRyZXNzIHRvIGNoYW5nZSBtb2RlIG9mIGRlc3RfbWVtCgl0byBCTEttb2RlLgoKMjAwNy0wOS0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogZHNlLmMgKGZpbmRfc2hpZnRfc2VxdWVuY2UpOiBBbGxvdyB3b3JkIGFzIHdlbGwgYXMgc3Vid29yZCBzaGlmdHMuCglEbyB0aGUgdGVudGF0aXZlIHNoaWZ0IGV4cGFuc2lvbiB3aXRoIHRoZSBERl9OT19JTlNOX1JFU0NBTiBmbGFnIHNldC4KCUZpeCB0aGUgY2FsbCB0byBpbnNuX3J0eF9jb3N0LiAgU2tpcCBhY2Nlc3Mgc2l6ZXMgdGhhdCByZXF1aXJlIGEKCXJlYWwgdHJ1bmNhdGlvbiBvZiB0aGUgc3RvcmUgcmVnaXN0ZXIuICBVc2UgY29udmVydF9tb3ZlIGluc3RlYWQKCW9mIGdlbl9sb3dwYXJ0IHdoZW4gbmFycm93aW5nIHRoZSByZXN1bHQuCgkocmVwbGFjZV9yZWFkKTogVXNlIGNvbnZlcnRfbW92ZSBpbnN0ZWFkIG9mIGdlbl9sb3dwYXJ0IHdoZW4KCW5hcnJvd2luZyB0aGUgc3RvcmUgcmhzLgoKMjAwNy0wOS0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoU0hPUlQpOiBGaXggbG9uZyBsaW5lLgoJKFNVQkRJKTogTmV3IG1vZGUgaXRlcmF0b3IuICBFeHRlbmQgdGhlIHNoaWZ0LWFuZC10cnVuY2F0ZSBpbnNucwoJdG8gUUltb2RlIGFuZCBISW1vZGUuCgoyMDA3LTA5LTE2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBPSU5URVJTX0VYVEVORF9VTlNJR05FRCk6IERlZmluZS4KCjIwMDctMDktMTUgIFpkZW5layBEdm9yYWsgIDxvb2tAdWN3LmN6PgoKCSogdHJlZS1wYXJsb29wcy5jOiBOZXcgZmlsZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuaCAoZnJlZV9zdG10X29wZXJhbmRzKTogRGVjbGFyZS4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChzcGxpdF9sb29wX2V4aXRfZWRnZSk6IFJldHVybiB0aGUgbmV3IGJhc2ljCglibG9jay4KCSogdHJlZS1wYXNzLmggKHBhc3NfcGFyYWxsZWxpemVfbG9vcHMpOiBEZWNsYXJlLgoJKiBvbXAtbG93LmMgKGV4cGFuZF9vbXBfcGFyYWxsZWwsIGV4cGFuZF9vbXBfZm9yKTogVXBkYXRlIFNTQSBmb3JtIGZvcgoJdmlydHVhbCBvcGVyYW5kcy4KCShidWlsZF9vbXBfcmVnaW9uc18xKTogQWxsb3cgYW5hbHlzaW5nIGp1c3QgYSBzaW5nbGUgT01QIHJlZ2lvbiBhbmQKCWl0cyBzdWJyZWdpb25zLgoJKCBidWlsZF9vbXBfcmVnaW9uc19yb290LCBvbXBfZXhwYW5kX2xvY2FsKTogTmV3IGZ1bmN0aW9ucy4KCShidWlsZF9vbXBfcmVnaW9ucyk6IEFkZCBhcmd1bWVudCB0byBidWlsZF9vbXBfcmVnaW9uc18xIGNhbGwuCgkqIGJ1aWx0aW5zLmRlZiAoREVGX0dPTVBfQlVJTFRJTik6IEluaXRpYWxpemUgT01QIGJ1aWx0aW5zIHdoZW4KCWF1dG9wYXJhbGxlbGl6YXRpb24gaXMgcnVuLgoJKiB0aW1ldmFyLmRlZiAoVFZfVFJFRV9QQVJBTExFTElaRV9MT09QUyk6IE5ldy4KCSogdHJlZS1zc2EtbG9vcC5jIChnYXRlX3RyZWVfcGFyYWxsZWxpemVfbG9vcHMsIHRyZWVfcGFyYWxsZWxpemVfbG9vcHMsCglwYXNzX3BhcmFsbGVsaXplX2xvb3BzKTogTmV3LgoJKiBjb21tb24ub3B0IChmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcyk6IE5ldy4KCSogdHJlZS1mbG93LmggKG9tcF9leHBhbmRfbG9jYWwsIHRyZWVfZHVwbGljYXRlX3Nlc2VfdGFpbCwKCXBhcmFsbGVsaXplX2xvb3BzKTogRGVjbGFyZS4KCShhZGRfcGhpX2FyZ3NfYWZ0ZXJfY29weSwgc3BsaXRfbG9vcF9leGl0X2VkZ2UpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1wYXJsb29wcy5vKTogQWRkZWQuCgkqIHRyZWUtY2ZnLmMgKGFkZF9waGlfYXJnc19hZnRlcl9jb3B5X2VkZ2UsIHRyZWVfZHVwbGljYXRlX3Nlc2VfdGFpbCk6CglOZXcgZnVuY3Rpb25zLgoJKGFkZF9waGlfYXJnc19hZnRlcl9jb3B5X2JiKTogVXNlIGFkZF9waGlfYXJnc19hZnRlcl9jb3B5X2VkZ2UuCgkoYWRkX3BoaV9hcmdzX2FmdGVyX2NvcHkpOiBDYWxsIGFkZF9waGlfYXJnc19hZnRlcl9jb3B5X2VkZ2UgZm9yCglvbmUgZXh0cmEgZWRnZSBhcyB3ZWxsLgoJKHRyZWVfZHVwbGljYXRlX3Nlc2VfcmVnaW9uKTogQWRkIGFyZ3VtZW50IHRvIGFkZF9waGlfYXJnc19hZnRlcl9jb3B5LgoJVXNlIFZFQ19mcmVlIHRvIGZyZWUgZG9tcyB2ZWN0b3IuCgkobW92ZV9ibG9ja190b19mbik6IFVwZGF0ZSBsb29wIGluZm8uIFJlbW92ZSBwaGkgbm9kZXMgZm9yIHZpcnR1YWwKCW9wZXJhbmRzLiAgUmVjb21wdXRlIG9wZXJhbmQgY2FjaGVzIGluIHRoZSBuZXcgZnVuY3Rpb24uCgkobW92ZV9zZXNlX3JlZ2lvbl90b19mbik6IFVwZGF0ZSBsb29wIGluZm8uCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBBZGQgcGFzc19wYXJhbGxlbGl6ZV9sb29wcy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZnJlZV9zdG10X29wZXJhbmRzKTogTmV3IGZ1bmN0aW9uLgoKCSogZG9jL3Bhc3Nlcy50ZXhpOiBEb2N1bWVudCBhdXRvcGFyYWxsZWxpemF0aW9uLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mdHJlZS1wYXJhbGxlbGl6ZS1sb29wcyk6IE5ldyBvcHRpb24uCgoyMDA3LTA5LTE1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8zMzA2MgoJKiBwYS5jIChmdW5jdGlvbl92YWx1ZSk6IFVzZSBHRVRfTU9ERV9CSVRTSVpFIGluc3RlYWQgb2YKCVRZUEVfUFJFQ0lTSU9OLgoKMjAwNy0wOS0xNSAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9nZXRfdmVjX2RlZnNfZm9yX3N0bXRfY29weSk6IGNoZWNrIGlmIAoJdGhlIFZFQyBpcyBub3QgTlVMTC4KCSh2ZWN0b3JpemFibGVfdHlwZV9kZW1vdGlvbiwgdmVjdG9yaXphYmxlX3R5cGVfcHJvbW90aW9uKTogQ2hlY2sgdGhhdCAKCWdldF92ZWN0eXBlX2Zvcl9zY2FsYXJfdHlwZSBzdWNjZWVkZWQuCgkodmVjdG9yaXphYmxlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCjIwMDctMDktMTQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpmbG9hdGRpPG1vZGU+Ml9pMzg3KTogR3VhcmQgYWdhaW5zdAoJVEFSR0VUXzY0QklULgoKMjAwNy0wOS0xNCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMzM0MzgKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZm1vZHhmMyk6IENvcHkgb3BlcmFuZHNbMl0gdG8gdGVtcG9yYXJ5CglyZWdpc3RlciB3aGVuIG9wZXJhbmRzWzJdIGVxdWFscyBvcGVyYW5kc1sxXS4KCShyZW1haW5kZXJ4ZjMpOiBEaXR0by4KCjIwMDctMDktMTQgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOaWdlbCBTdGVwaGVucyAgPG5pZ2VsQG1pcHMuY29tPgoKCSogZG9jL3RtLnRleGkgKExJQkdDQzJfVU5XSU5EX0FUVFJJQlVURSk6IERvY3VtZW50LgoJKiB1bndpbmQtZ2VuZXJpYy5oIChMSUJHQ0MyX1VOV0lORF9BVFRSSUJVVEUpOiBEZWZpbmUuCgkoX1Vud2luZF9SYWlzZUV4Y2VwdGlvbik6IEFkZCBMSUJHQ0MyX1VOV0lORF9BVFRSSUJVVEUgdG8gZGVjbGFyYXRpb24uCgkoX1Vud2luZF9Gb3JjZWRVbndpbmQpOiBMaWtld2lzZS4KCShfVW53aW5kX1Jlc3VtZSk6IExpa2V3aXNlLgoJKF9VbndpbmRfUmVzdW1lX29yX1JldGhyb3cpOiBMaWtld2lzZS4KCShfVW53aW5kX0JhY2t0cmFjZSk6IExpa2V3aXNlLgoJKF9VbndpbmRfU2pMal9SYWlzZUV4Y2VwdGlvbik6IExpa2V3aXNlLgoJKF9VbndpbmRfU2pMal9Gb3JjZWRVbndpbmQpOiBMaWtld2lzZS4KCShfVW53aW5kX1NqTGpfUmVzdW1lKTogTGlrZXdpc2UuCgkoX1Vud2luZF9TakxqX1Jlc3VtZV9vcl9SZXRocm93KTogTGlrZXdpc2UuCgkqIHVud2luZC5pbmMgKF9VbndpbmRfUmFpc2VFeGNlcHRpb24pOiBBZGQgTElCR0NDMl9VTldJTkRfQVRUUklCVVRFCgl0byBkZWZpbml0aW9uLgoJKF9VbndpbmRfRm9yY2VkVW53aW5kKTogTGlrZXdpc2UuCgkoX1Vud2luZF9SZXN1bWUpOiBMaWtld2lzZS4KCShfVW53aW5kX1Jlc3VtZV9vcl9SZXRocm93KTogTGlrZXdpc2UuCgkoX1Vud2luZF9CYWNrdHJhY2UpOiBMaWtld2lzZS4KCSogdW53aW5kLWNvbXBhdC5jIChfVW53aW5kX0JhY2t0cmFjZSk6IExpa2V3aXNlLgoJKF9VbndpbmRfRm9yY2VkVW53aW5kKTogTGlrZXdpc2UuCgkoX1Vud2luZF9SYWlzZUV4Y2VwdGlvbik6IExpa2V3aXNlLgoJKF9VbndpbmRfUmVzdW1lKTogTGlrZXdpc2UuCgkoX1Vud2luZF9SZXN1bWVfb3JfUmV0aHJvdyk6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChMSUJHQ0MyX1VOV0lORF9BVFRSSUJVVEUpOiBEZWZpbmUgdG8gZm9yY2UKCW5vbWlwczE2IG1vZGUgd2hlbiBJTl9MSUJHQ0MyIHdpdGggaGFyZCBmbG9hdC4KCjIwMDctMDktMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGNvbmZpZy9taXBzL3NkZW10ay5vcHQ6IFVwZGF0ZSB0byBHUEx2My4KCSogY29uZmlnL21pcHMvc2RlbXRrLmg6IExpa2V3aXNlLgoKMjAwNy0wOS0xNCAgTmlnZWwgU3RlcGhlbnMgIDxuaWdlbEBtaXBzLmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHMqLSotbGludXgqKTogUmVjb2duaXNlIG1pcHNpc2EzMnIyIGFuZCBzZXQKCU1JUFNfSVNBX0RFRkFVTFQgYXBwcm9wcmlhdGVseS4gIERvbid0IG1ha2Ugc29mdC1mbG9hdCB0aGUgZGVmYXVsdAoJZm9yIG1pcHNpc2EzMi0qLWxpbnV4Ki4KCjIwMDctMDktMTQgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoJICAgIFRoaWVtbyBTZXVmZXIgIDx0aHNAbWlwcy5jb20+CgkgICAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjIChtaXBzKi1zZGUtZWxmKik6IEFkZCBzdXBwb3J0IGZvciB0aGUgU0RFIEMgbGlicmFyaWVzLgoJKiBjb25maWd1cmUuYWM6IEFkZCBhIG1pcHNzZGUgdGhyZWFkaW5nIHR5cGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL21pcHMvc2RlbXRrLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy90LXNkZW10azogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL3NkZW10ay5vcHQ6IExpa2V3aXNlLgoJKiBndGhyLW1pcHNzZGUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL3NkZS5oIChGVU5DVElPTl9QUk9GSUxFUik6IE1vdmUgdG8gY29uZmlnL21pcHMvc2RlbXRrLmguCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTUlQU19TQVZFX1JFR19GT1JfUFJPRklMSU5HX1ApOiBOZXcgbWFjcm8uCgkoTUlQU19JQ0FDSEVfU1lOQyk6IE5ldyBtYWNybywgc3BsaXQgZnJvbSAuLi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoY2xlYXJfY2FjaGUpOiAuLi5oZXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2F2ZV9yZWdfcCk6IENoZWNrCglNSVBTX1NBVkVfUkVHX0ZPUl9QUk9GSUxJTkdfUCBvbiBwcm9maWxlZCBmdW5jdGlvbnMuCgkoYnVpbGRfbWlwczE2X2Z1bmN0aW9uX3N0dWIpOiBVc2UgdGFyZ2V0bS5zdHJpcF9uYW1lX2VuY29kaW5nLgoJKGJ1aWxkX21pcHMxNl9jYWxsX3N0dWIpOiBMaWtld2lzZS4KCjIwMDctMDktMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHN0bXAtaW50LWhkcnMpOiBEZXBlbmQgb24gZml4aW5jX2xpc3QuCgoyMDA3LTA5LTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMzIzMzcKCSogY29uZmlnL2lhNjQvaWE2NC5jIChmaW5kX2dyX3NwaWxsKTogRG9uJ3QgZGVjcmVtZW50CgljdXJyZW50X2ZyYW1lX2luZm8ubl9sb2NhbF9yZWdzLiAgRG9uJ3QgcmV0dXJuIGVtaXR0ZWQgbG9jYWwgcmVncy4KCShpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IEltcHJvdmUgdW53aW5kIGhhY2sgdG8gcHV0CglSUCwgUEZTLCBGUCBpbiB0aGF0IG9yZGVyIGJ5IGFsbG93aW5nIHNvbWUgb2YgdGhlIHJlZ2lzdGVycwoJYmVlbiBhbHJlYWR5IGVtaXR0ZWQsIGFzIGxvbmcgYXMgdGhleSBhcmUgZW1pdHRlZCB0byB0aGUKCWRlc2lyZWQgcmVnaXN0ZXIuCgoyMDA3LTA5LTE0ICBVbHJpY2ggV2VpZ2FuZCAgPFVscmljaC5XZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvc3B1L3ZteDJzcHUuaCAodmVjX2V4dHJhY3QsIHZlY19pbnNlcnQsIHZlY19sdmx4LAoJdmVjX2x2bHhsLCB2ZWNfbHZyeCwgdmVjX2x2cnhsLCB2ZWNfcHJvbW90ZSwgdmVjX3NwbGF0cywKCXZlY19zdHZseCwgdmVjX3N0dmx4bCwgdmVjX3N0dnJ4LCB2ZWNfc3R2cnhsKTogTmV3IGludHJpbnNpY3MuCgoyMDA3LTA5LTEzICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoJICAgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBkc2UuYyAoZmluZF9zaGlmdF9zZXF1ZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShyZXBsYWNlX3JlYWQpOiBBZGQgY2FzZSB0byByZW1vdmUgcmVhZCBpZiBpdCByZXF1aXJlcyBzaGlmdC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9wcm9sb2d1ZSk6IEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCQoyMDA3LTA5LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChmbmFtZV9hc19zdHJpbmcpOiBVcGRhdGUuCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyKSA8bGV4X3VudHJhbnNsYXRlZF9zdHJpbmc+OiBOZXcgZmllbGQuCgkoY19sZXhfb25lX3Rva2VuKTogVXBkYXRlLiAgQWRkICdwYXJzZXInIGFyZ3VtZW50LgoJKGNfcGFyc2VyX3NpbXBsZV9hc21fZXhwcik6IFVwZGF0ZS4KCShjX3BhcnNlcl9hdHRyaWJ1dGVzKTogVXBkYXRlLgoJKGNfcGFyc2VyX2FzbV9zdGF0ZW1lbnQpOiBVcGRhdGUuCgkoY19wYXJzZXJfYXNtX29wZXJhbmRzKTogVXBkYXRlLgoJKGNfcGFyc2VyX3BlZWtfdG9rZW4pOiBVcGRhdGUuCgkoY19wYXJzZXJfcGVla18ybmRfdG9rZW4pOiBVcGRhdGUuCgkqIGMtbGV4LmMgKGNfbGV4X3N0cmluZ190cmFuc2xhdGUpOiBSZW1vdmUuCgkoY19sZXhfcmV0dXJuX3Jhd19zdHJpbmdzKTogTGlrZXdpc2UuCgkoY19sZXhfd2l0aF9mbGFncyk6IEFkZGVkICdsZXhfZmxhZ3MnIGFyZ3VtZW50LgoJKGxleF9zdHJpbmcpOiBBZGRlZCAndHJhbnNsYXRlJyBhcmd1bWVudC4KCSogYy1wcmFnbWEuaCAoY19sZXhfd2l0aF9mbGFncyk6IFVwZGF0ZS4KCShjX2xleF9zdHJpbmdfdHJhbnNsYXRlLCBjX2xleF9yZXR1cm5fcmF3X3N0cmluZ3MpOiBSZW1vdmUuCgkoQ19MRVhfU1RSSU5HX05PX1RSQU5TTEFURSk6IE5ldyBkZWZpbmUuCgkoQ19MRVhfUkFXX1NUUklOR1MpOiBMaWtld2lzZS4KCjIwMDctMDktMTMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJRnJvbSBKaWUgWmhhbmc6CgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoZW51bSBiZmluX2J1aWx0aW5zKTogQWRkIEJGSU5fQlVJTFRJTl9PTkVTLAoJQkZJTl9CVUlMVElOX0NQTFhfTVVMXzE2X1M0MCwgQkZJTl9CVUlMVElOX0NQTFhfTUFDXzE2X1M0MCwKCUJGSU5fQlVJTFRJTl9DUExYX01TVV8xNl9TNDAsIGFuZCBCRklOX0JVSUxUSU5fQ1BMWF9TUVUuCgkoYmZpbl9pbml0X2J1aWx0aW5zKTogSW5pdGlhbGl6ZSBfX2J1aWx0aW5fYmZpbl9vbmVzLAoJX19idWlsdGluX2JmaW5fbWluX2ZyMXgxNiwgX19idWlsdGluX2JmaW5fbWF4X2ZyMXgxNiwKCV9fYnVpbHRpbl9iZmluX21pbl9mcjF4MzIsIF9fYnVpbHRpbl9iZmluX21heF9mcjF4MzIsCglfX2J1aWx0aW5fYmZpbl9jbXBseF9hZGQsIF9fYnVpbHRpbl9iZmluX2NtcGx4X3N1YiwKCV9fYnVpbHRpbl9iZmluX2NtcGx4X211bF9zNDAsIF9fYnVpbHRpbl9iZmluX2NtcGx4X21hY19zNDAsCglfX2J1aWx0aW5fYmZpbl9jbXBseF9tc3VfczQwIGFuZCBfX2J1aWx0aW5fYmZpbl9jc3F1X2ZyMTYuCgkoYmRlc2NfMWFyZyk6IEFkZCBfX2J1aWx0aW5fYmZpbl9vbmVzLgoJKGJmaW5fZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgX19idWlsdGluX2JmaW5fY21wbHhfbXVsX3M0MCwKCV9fYnVpbHRpbl9iZmluX2NtcGx4X21hY19zNDAsIF9fYnVpbHRpbl9iZmluX2NtcGx4X21zdV9zNDAsCglhbmQgX19idWlsdGluX2JmaW5fY3NxdV9mcjE2LgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChVTlNQRUNfT05FUyk6IE5ldyBjb25zdGFudC4KCShvbmVzKTogTmV3IGRlZmluZV9pbnNuLgoJKHNzYWRkaGkzX3BhcnRzKTogTmV3IGRlZmluZV9pbnNuLgoJKHNzc3ViaGkzX3BhcnRzKTogTmV3IGRlZmluZV9pbnNuLgoJKGZsYWdfbXVsaGlfcGFydHMpOiBOZXcgZGVmaW5lX2luc24uCgoyMDA3LTA5LTEzICBTZW9uZ2JhZSBQYXJrIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCgkqIGNvbW1vbi5vcHQgKGZlbWl0LWNsYXNzLWRlYnVnLWFsd2F5cyk6IFR1cm4gb2ZmIGJ5IGRlZmF1bHQuCgoyMDA3LTA5LTEzICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vYmZpbi5tZCAocmVsb2FkX291dHBkaSwgcmVsb2FkX2lucGRpKTogTmV3IHBhdHRlcm5zLgoJKiBjb25maWcvYmZpbi9iZmluLmMgKGJmaW5fc2Vjb25kYXJ5X3JlbG9hZCk6IE1ha2Ugc3VyZSB3ZSB1c2UgdGhlbS4KCjIwMDctMDktMTMgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMzODkKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYXBwZW5kX3Z1c2UpOiBJZiBhbm4tPmluX3ZkZWZfbGlzdCB0cnVlLAoJdGhlbiBzZXQgYnVpbGRfbG9hZHMgYmVmb3JlIHJldHVybmluZy4KCjIwMDctMDktMTMgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBEYXZpZCBVbmcgIDxkYXZpZHVAbWlwcy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKEFTTV9PVVRQVVRfUkVHX1BVU0gpOiBSZXBsYWNlIHtkfXN1YnUgd2l0aAoJe2R9YWRkaXUgYW5kIGEgbmVnYXRpdmUJaW1tZWRpYXRlIHN1Y2ggdGhhdCBpdCB3b3JrcyB3aXRoIE1JUFMxNgoJaW5zdHJ1Y3Rpb25zLgoJCjIwMDctMDktMTMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiBib290c3RyYXAvMzM0MTgKCSogY29uZmlndXJlLmFjIChsZF92ZXJzKTogU3VwcG9ydCBMaW51eCBsaW5rZXIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDA3LTA5LTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBTYW5kcmEgTG9vc2Vtb3JlIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoU1lNQk9MX0ZMQUdfTUlQUzE2X0ZVTkMpOiBEZWxldGUuCgkoU1lNQk9MX1JFRl9NSVBTMTZfRlVOQ19QKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYXR0cmlidXRlX3RhYmxlKTogVHVybiBtaXBzMTYgYW5kCglub21pcHMxNiBpbnRvIGRlY2wgYXR0cmlidXRlcy4KCShUQVJHRVRfSU5TRVJUX0FUVFJJQlVURVMpOiBPdmVycmlkZS4KCShUQVJHRVRfTUVSR0VfREVDTF9BVFRSSUJVVEVTKTogTGlrZXdpc2UuCgkoVEFSR0VUX0ZVTkNUSU9OX0FUVFJJQlVURV9JTkxJTkFCTEVfUCk6IEFsd2F5cyByZXR1cm4gdHJ1ZS4KCShtaXBzX21pcHMxNl90eXBlX3AsIG1pcHNfbm9taXBzMTZfdHlwZV9wKTogRGVsZXRlIGluIGZhdm9yIG9mLi4uCgkobWlwc19taXBzMTZfZGVjbF9wLCBtaXBzX25vbWlwczE2X2RlY2xfcCk6IC4uLnRoZXNlIG5ldyBmdW5jdGlvbnMuCgkobWlwc19jb21wX3R5cGVfYXR0cmlidXRlcyk6IFJlbW92ZSBtaXBzMTYgYW5kIG5vbWlwczE2IGhhbmRsaW5nLgoJKG1pcHNfdXNlX21pcHMxNl9tb2RlX3ApOiBSZWltcGxlbWVudCBhcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMKCWEgZGVjbCBhbmQgY29uc2lkZXJzIG9ubHkgZGVjbCBhdHRyaWJ1dGVzLiAgSWYgdGhlIGRlY2wgaXMgbmVzdGVkCglmdW5jdGlvbiwgdXNlIGl0cyBwYXJlbnQgYXR0cmlidXRlcy4KCShtaXBzX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogVXNlIG1pcHNfdXNlX21pcHMxNl9tb2RlX3AKCWluc3RlYWQgb2YgU1lNQk9MX1JFRl9NSVBTMTZfRlVOQ19QLgoJKG1pcHNfc2V0X21pcHMxNl9tb2RlKTogTW92ZSBjYWxsIHRvIHNvcnJ5IGhlcmUgZnJvbSBvbGQKCW1pcHNfdXNlX21pcHMxNl9tb2RlX3AuCgkobWZsaXBfbWlwczE2X2VudHJ5KTogTmV3IHN0cnVjdHVyZS4KCShtZmxpcF9taXBzMTZfaHRhYik6IE5ldyB2YXJpYWJsZS4KCShtZmxpcF9taXBzMTZfaHRhYl9oYXNoLCBtZmxpcF9taXBzMTZfaHRhYl9lcSk6IE5ldyBmdW5jdGlvbnMuCgkobWZsaXBfbWlwczE2X3VzZV9taXBzMTZfcCwgbWlwc19pbnNlcnRfYXR0cmlidXRlcyk6IExpa2V3aXNlLgoJKG1pcHNfbWVyZ2VfZGVjbF9hdHRyaWJ1dGVzKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfc2V0X2N1cnJlbnRfZnVuY3Rpb24pOiBSZWluc3RhdGUgY2FsbCB0byBtaXBzX3NldF9taXBzMTZfbW9kZS4KCVVzZSBtaXBzX3VzZV9taXBzMTZfbW9kZV9wLgoJKG1pcHNfb3V0cHV0X21pX3RodW5rKTogVXNlIG1pcHNfdXNlX21pcHMxNl9tb2RlX3AgaW5zdGVhZCBvZgoJU1lNQk9MX1JFRl9NSVBTMTZfRlVOQ19QLgoJKG1pcHNfZW5jb2RlX3NlY3Rpb25faW5mbyk6IERvbid0IHNldCBTWU1CT0xfRkxBR19NSVBTMTZfRlVOQy4KCjIwMDctMDktMTMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1wYXJzZXIuYyAoY19wYXJzZXJfc3RydWN0X2RlY2xhcmF0aW9uKTogQ2hlY2sgZm9yIGEgbnVsbCByZXR1cm4uCgoyMDA3LTA5LTEzICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGZ4Y291ZGVydEBnY2MuZ251Lm9yZz4KCglQUiBkcml2ZXIvMzMzMDkKCSogZ2NjLmMgKHhwdXRlbnYpOiBNYWtlIGFyZ3VtZW50IGNvbnN0LCBhbmQgdXNlIENPTlNUX0NBU1QuCgoyMDA3LTA5LTEyICBNaWNoYWVsIE1laXNzbmVyICA8bWljaGFlbC5tZWlzc25lckBhbWQuY29tPgoJICAgIER3YXJha2FuYXRoIFJhamFnb3BhbCAgPGR3YXJhay5yYWphZ29wYWxAYW1kLmNvbT4KCSAgICBUb255IExpbnRoaWN1bSAgPHRvbnkubGludGhpY3VtQGFtZC5jb20+CgoJKiB0cmVlLmggKGZ1bmN0aW9uX2FyZ3NfaXRlcmF0b3IpOiBOZXcgdHlwZSB0byBpdGVyYXRlIG92ZXIKCWZ1bmN0aW9uIGFyZ3VtZW50cy4KCShGT1JFQUNIX0ZVTkNUSU9OX0FSR1NfUFRSKTogSXRlcmF0b3IgbWFjcm9zIGZvciBpdGVyYXRpbmcgb3ZlcgoJZnVuY3Rpb24gYXJndW1lbnRzIHByb3ZpZGluZyBhIHBvaW50ZXIgdG8gdGhlIGFyZ3VtZW50LgoJKEZPUkVBQ0hfRlVOQ1RJT05fQVJHUyk6IEl0ZXJhdG9yIG1hY3JvcyBmb3IgaXRlcmF0aW5nIG92ZXIKCWZ1bmN0aW9uIGFyZ3VtZW50cyBwcm92aWRpbmcgdGhlIGFyZ3VtZW50LgoJKGZ1bmN0aW9uX2FyZ3NfaXRlcl9pbml0KTogSW5saW5lIGZ1bmN0aW9uIHRvIGluaXRpYWxpemUKCWZ1bmN0aW9uX2FyZ3NfaXRlcmF0b3IuCgkoZnVuY3Rpb25fYXJnc19pdGVyX2NvbmRfcHRyKTogSW5saW5lIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgbmV4dAoJcG9pbnRlciB0byBob2xkIHRoZSBhcmd1bWVudC4KCShmdW5jdGlvbl9hcmdzX2l0ZXJfY29uZCk6IElubGluZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG5leHQKCWFyZ3VtZW50LgoJKGZ1bmN0aW9uX2FyZ3NfaXRlcl9jb25kX25leHQpOiBBZHZhbmNlIHRoZSBmdW5jdGlvbiBhcmdzIGl0ZXJhdG9yLgoJKHN0ZGFyZ19wKTogTmV3IGZ1bmN0aW9uLCByZXR1cm4gdHJ1ZSBpZiB2YXJpYWJsZSBhcmd1bWVudCBmdW5jdGlvbi4KCShwcm90b3R5cGVfcCk6IE5ldyBmdW5jdGlvbiwgcmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gaXMgcHJvdG90eXBlZC4KCShmdW5jdGlvbl9hcmdzX2NvdW50KTogTmV3IGZ1bmN0aW9uLCBjb3VudCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cwoJb2YgYSBmdW5jdGlvbi4KCgkqIHRyZWUuYyAoc3RkYXJnX3ApOiBOZXcgZnVuY3Rpb24sIHJldHVybiB0cnVlIGlmIHZhcmlhYmxlCglhcmd1bWVudCBmdW5jdGlvbi4KCShwcm90b3R5cGVfcCk6IE5ldyBmdW5jdGlvbiwgcmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gaXMgcHJvdG90eXBlZC4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVEFSR0VUX1NTRTUpOiBOZXcgbWFjcm8gZm9yIFNTRTUuCgkoVEFSR0VUX1JPVU5EKTogTmV3IG1hY3JvIGZvciB0aGUgcm91bmQvcHRlc3QgaW5zdHJ1Y3Rpb25zIHdoaWNoCglhcmUgc2hhcmVkIGJldHdlZW4gU1NFNC4xIGFuZCBTU0U1LgoJKE9QVElPTl9NQVNLX0lTQV9ST1VORCk6IERpdHRvLgoJKE9QVElPTl9JU0FfUk9VTkQpOiBEaXR0by4KCShUQVJHRVRfRlVTRURfTUFERCk6IE5ldyBtYWNybyBmb3IgLW1mdXNlZC1tYWRkIHN3dGljaC4KCShUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZCBTU0U1IHN1cHBvcnQuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm9wdCAoLW1zc2U1KTogTmV3IHN3aXRjaCBmb3IgU1NFNSBzdXBwb3J0LgoJKC1tZnVzZWQtbWFkZCk6IE5ldyBzd2l0Y2ggdG8gZ2l2ZSB1c2VycyBjb250cm9sIG92ZXIgd2hldGhlciB0aGUKCWNvbXBpbGVyIG9wdGltaXplcyB0byB1c2UgdGhlIG11bHRpcGx5L2FkZCBTU0U1IGluc3RydWN0aW9ucy4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobV9BTURfTVVMVElQTEUpOiBSZW5hbWUgZnJvbQoJbV9BVEhMT05fSzhfQU1ERkFNMTAsIGFuZCBjaGFuZ2UgYWxsIHVzZXMuCgkoZW51bSBwdGFfZmxhZ3MpOiBBZGQgUFRBX1NTRTUuCgkoaXg4Nl9oYW5kbGVfb3B0aW9uKTogVHVybiBvZmYgM2Rub3cgaWYgLW1zc2U1LgoJKG92ZXJyaWRlX29wdGlvbnMpOiBBZGQgU1NFNSBzdXBwb3J0LgoJKHByaW50X29wZXJhbmQpOiAlWSBwcmludHMgY29tcGFyaXNvbiBjb2RlcyBmb3IgU1NFNSBjb20vcGNvbQoJaW5zdHJ1Y3Rpb25zLgoJKGl4ODZfZXhwYW5kX3NzZV9tb3ZjYyk6IEFkZCBTU0U1IHN1cHBvcnQuCgkoaXg4Nl9leHBhbmRfc3NlNV91bnBhY2spOiBOZXcgZnVuY3Rpb24gdG8gdXNlIHBwZXJtIHRvIHVucGFjayBhCgl2ZWN0b3IgdHlwZSB0byB0aGUgbmV4dCBsYXJnZXN0IHNpemUuCgkoaXg4Nl9leHBhbmRfc3NlNV9wYWNrKTogTmV3IGZ1bmN0aW9uIHRvIHVzZSBwcGVybSB0byBwYWNrIGEKCXZlY3RvciB0eXBlIHRvIHRoZSBuZXh0IHNtYWxsZXN0IHNpemUuCgkoSVg4Nl9CVUlMVElOX0ZNQUREU1MpOiBOZXcgZm9yIFNTRTUgaW50cmluc2ljLgoJKElYODZfQlVJTFRJTl9GTUFERFNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZNQUREUFMpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fRk1BRERQRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9GTVNVQlNTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZNU1VCU0QpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fRk1TVUJQUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9GTVNVQlBEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTUFERFNTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTUFERFNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTUFERFBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTUFERFBEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTVNVQlNTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTVNVQlNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTVNVQlBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZOTVNVQlBEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDTU9WX1YyREkpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENNT1ZfVjRTSSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ01PVl9WOEhJKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDTU9WX1YxNlFJKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDTU9WX1Y0U0YpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENNT1ZfVjJERik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QUEVSTSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QRVJNUFMpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUEVSTVBEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BNQUNTU1dXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BNQUNTV1cpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUE1BQ1NTV0QpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUE1BQ1NXRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QTUFDU1NERCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QTUFDU0REKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BNQUNTU0RRTCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QTUFDU1NEUUgpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUE1BQ1NEUUwpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUE1BQ1NEUUgpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUE1BRENTU1dEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BNQURDU1dEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREQlcpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUEhBRERCRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QSEFEREJRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREV0QpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUEhBRERXUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QSEFERERRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREVUJXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREVUJEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREVUJRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREVVdEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREVVdRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIQUREVURRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BIU1VCQlcpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUEhTVUJXRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QSFNVQkRRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BST1RCKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BST1RXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BST1REKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BST1RRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BST1RCX0lNTSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QUk9UV19JTU0pOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUFJPVERfSU1NKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BST1RRX0lNTSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hMQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hMVyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hMRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hMUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hBQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hBVyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hBRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QU0hBUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9GUkNaU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fRlJDWlNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0ZSQ1pQUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9GUkNaUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ1ZUUEgyUFMpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ1ZUUFMyUEgpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NRVFTUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01ORVNTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUxUU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NTEVTUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01HVFNTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUdFU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUVRU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVU5FU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUxUU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUxFU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUdUU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUdFU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NT1JEU1MpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVU5PUkRTUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01GQUxTRVNTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVRSVUVTUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01FUVNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTU5FU0QpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NTFRTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01MRVNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUdUU0QpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NR0VTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01VRVFTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01VTkVTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01VTFRTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01VTEVTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01VR1RTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01VR0VTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01PUkRTRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01VTk9SRFNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUZBTFNFU0QpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVFJVRVNEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUVRUFMpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NTkVQUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01MVFBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUxFUFMpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NR1RQUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01HRVBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVVFUVBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVVORVBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVVMVFBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVVMRVBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVVHVFBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVVHRVBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTU9SRFBTKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVVOT1JEUFMpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NRkFMU0VQUyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01UUlVFUFMpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NRVFQRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01ORVBEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUxUUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NTEVQRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01HVFBEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTUdFUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUVRUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVU5FUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUxUUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUxFUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUdUUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVUdFUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NT1JEUEQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09NVU5PUkRQRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9DT01GQUxTRVBEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX0NPTVRSVUVQRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NRVFVQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTkVVQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTFRVQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTEVVQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR1RVQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR0VVQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NRkFMU0VVQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NVFJVRVVCKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01FUVVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01ORVVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01MVFVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01MRVVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01HVFVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01HRVVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01GQUxTRVVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01UUlVFVVcpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUVRVUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTU5FVUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUxUVUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUxFVUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUdUVUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUdFVUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUZBTFNFVUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTVRSVUVVRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NRVFVUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTkVVUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTFRVUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTEVVUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR1RVUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR0VVUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NRkFMU0VVUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NVFJVRVVRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01FUUIpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTU5FQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTFRCKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01MRUIpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUdUQik6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR0VCKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01GQUxTRUIpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTVRSVUVCKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01FUVcpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTU5FVyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTFRXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01MRVcpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUdUVyk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR0VXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01GQUxTRVcpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTVRSVUVXKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01FUUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTU5FRCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTFREKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01MRUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUdURCk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR0VEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01GQUxTRUQpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTVRSVUVEKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01FUVEpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTU5FUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NTFRRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01MRVEpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTUdUUSk6IERpdHRvLgoJKElYODZfQlVJTFRJTl9QQ09NR0VRKTogRGl0dG8uCgkoSVg4Nl9CVUlMVElOX1BDT01GQUxTRVEpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fUENPTVRSVUVRKTogRGl0dG8uCgkoYmRlc2NfcHRlc3QpOiBDaGFuZ2UgT1BUSU9OX01BU0tfSVNBX1NTRTRfMSB0bwoJT1BUSU9OX01BU0tfSVNBX1JPVU5EIGZvciBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4KCVNTRTQuMSBhbmQgU1NFNS4KCShiZGVzY18yYXJnKTogRGl0dG8uCgkoYmRlc2Nfc3NlXzNhcmcpOiBEaXR0by4KCShlbnVtIG11bHRpX2FyZ190eXBlKTogTmV3IGVudW0gZm9yIGRlc2NyaWJpbmcgdGhlIHZhcmlvdXMgU1NFNQoJaW50cmluc2ljIGFyZ3VtZW50IHR5cGVzLgoJKGJkZXNjX211bHRpX2FyZyk6IE5ldyB0YWJsZSBmb3IgU1NFNSBpbnRyaW5zaWNzLgoJKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogQWRkIFNTRTUgaW50cmluc2ljIHN1cHBvcnQuCgkoaXg4Nl9leHBhbmRfbXVsdGlfYXJnX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIFNTRTUKCWludHJpbnNpY3MuCgkoaXg4Nl9leHBhbmRfYnVpbHRpbik6IEFkZCBTU0U1IGludHJpbnNpYyBzdXBwb3J0LgoJKGl4ODZfc3NlNV92YWxpZF9vcF9wKTogTmV3IGZ1bmN0aW9uIHRvIHZhbGlkYXRlIFNTRTUgMyBhbmQgNAoJb3BlcmFuZCBpbnN0cnVjdGlvbnMuCgkoaXg4Nl9leHBhbmRfc3NlNV9tdWx0aXBsZV9tZW1vcnkpOiBOZXcgZnVuY3Rpb24gdG8gc3BsaXQgdGhlCglzZWNvbmQgbWVtb3J5IHJlZmVyZW5jZSBmcm9tIFNTRTUgaW5zdHJ1Y3Rpb25zLgoJKHR5cGVfaGFzX3ZhcmlhZGljX2FyZ3NfcCk6IERlbGV0ZSBpbiBmYXZvciBvZiBzdGRhcmdfcC4KCShpeDg2X3JldHVybl9wb3BzX2FyZ3MpOiBVc2Ugc3RkYXJnX3AgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmdW5jdGlvbgoJaGFzIHZhcmlhYmxlIGFyZ3VtZW50cy4KCShpeDg2X3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBEaXR0by4KCSh4ODZfdGhpc19wYXJhbWV0ZXIpOiBEaXR0by4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfZXhwYW5kX3NzZTVfdW5wYWNrKTogQWRkCglkZWNsYXJhdGlvbi4KCShpeDg2X2V4cGFuZF9zc2U1X3BhY2spOiBEaXR0by4KCShpeDg2X3NzZTVfdmFsaWRfb3BfcCk6IERpdHRvLgoJKGl4ODZfZXhwYW5kX3NzZTVfbXVsdGlwbGVfbWVtb3J5KTogRGl0dG8uCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChVTlNQRUNfU1NFNV9JTlRSSU5TSUMpOiBBZGQgbmV3IFVOU1BFQwoJY29uc3RhbnQgZm9yIFNTRTUgc3VwcG9ydC4KCShVTlNQRUNfU1NFNV9VTlNJR05FRF9DTVApOiBEaXR0by4KCShVTlNQRUNfU1NFNV9UUlVFRkFMU0UpOiBEaXR0by4KCShVTlNQRUNfU1NFNV9QRVJNVVRFKTogRGl0dG8uCgkoVU5TUEVDX1NTRTVfQVNISUZUKTogRGl0dG8uCgkoVU5TUEVDX1NTRTVfTFNISUZUKTogRGl0dG8uCgkoVU5TUEVDX0ZSQ1opOiBEaXR0by4KCShVTlNQRUNfQ1ZUUEgyUFMpOiBEaXR0by4KCShVTlNQRUNfQ1ZUUFMyUEgpOiBEaXR0by4KCShQQ09NX0ZBTFNFKTogQWRkIG5ldyBjb25zdGFudCBmb3IgdHJ1ZS9mYWxzZSBTU0U1IGNvbXBhcmlzb25zLgoJKFBDT01fVFJVRSk6IERpdHRvLgoJKENPTV9GQUxTRV9TKTogRGl0dG8uCgkoQ09NX0ZBTFNFX1ApOiBEaXR0by4KCShDT01fVFJVRV9TKTogRGl0dG8uCgkoQ09NX1RSVUVfUCk6IERpdHRvLgoJKHR5cGUgYXR0cmlidXRlKTogQWRkIHNzZW11bGFkZCwgc3NlaWFkZDEsIHNzZWN2dDEsIHNzZTRhcmcgdHlwZXMuCgkodW5pdCBhdHRyaWJ1dGUpOiBBZGQgc3VwcG9ydCBmb3Igc3NlbXVsYWRkLCBzc2VjdnQxLCBzc2VpYWRkMSBzc2U0YXJnCgl0eXBlcy4KCShtZW1vcnkgYXR0cmlidXRlKTogRGl0dG8uCgkoc3NlNF8xX3JvdW5kPG1vZGU+Mik6IFVzZSBUQVJHRVRfUk9VTkQgaW5zdGVhZCBvZiBUQVJHRVRfU1NFNF8xLgoJVXNlIFNTRTRfMV9ST1VORF8qIGNvbnN0YW50cyBpbnN0ZWFkIG9mIGhhcmQgY29kZWQgbnVtYmVycy4KCShyaW50PG1vZGU+Mik6IFVzZSBUQVJHRVRfUk9VTkQgaW5zdGVhZCBvZiBUQVJHRVRfU1NFNF8xLgoJKGZsb29yPG1vZGU+Mik6IERpdHRvLgoJKGNlaWw8bW9kZT4yKTogRGl0dG8uCgkoYnRydW5jPG1vZGU+Mik6IERpdHRvLgoJKG5lYXJieWludGRmMik6IERpdHRvLgoJKG5lYXJieWludHNmMik6IERpdHRvLgoJKHNzZV9zZXRjY3NmKTogRGlzYWJsZSBpZiBTU0U1LgoJKHNzZV9zZXRjY2RmKTogRGl0dG8uCgkoc3NlNV9zZXRjYzxtb2RlPik6IE5ldyBzdXBwb3J0IGZvciBTU0U1IGNvbmRpdGlvbmFsIG1vdmUuCgkoc3NlNV9wY21vdl88bW9kZT4pOiBEaXR0by4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoU1NFTU9ERTEyNDgpOiBOZXcgbW9kZSBpdGVyYXRvciBmb3IgU1NFNS4KCShTU0VNT0RFRjQpOiBEaXR0by4KCShTU0VNT0RFRjJQKTogRGl0dG8uCgkoc3NlbW9kZXN1ZmZpeGY0KTogTmV3IG1vZGUgYXR0cmlidXRlIGZvciBTU0U1LgoJKHNzZW1vZGVzdWZmaXhmMnMpOiBEaXR0by4KCShzc2Vtb2Rlc3VmZml4ZjJjKTogRGl0dG8uCgkoc3Nlcm90YXRlbWF4KTogRGl0dG8uCgkoc3Nlc2NhbGFybW9kZSk6IERpdHRvLgoJKHNzZV9tYXNrY21wdjRzZjMpOiBEaXNhYmxlIGlmIFNTRTUuCgkoc3NlX21hc2tjbXB2MmRmMyk6IERpdHRvLgoJKHNzZV92bW1hc2tjbXB2NHNmMyk6IERpdHRvLgoJKHNzZTVfZm1hZGQ8bW9kZT40KTogQWRkIFNTRTUgZmxvYXRpbmcgcG9pbnQgbXVsdGlwbHkvYWRkCglpbnN0cnVjdGlvbnMuCgkoc3NlNV92bWZtYWRkPG1vZGU+NCk6IERpdHRvLgoJKHNzZTVfZm1zdWI8bW9kZT40KTogRGl0dG8uCgkoc3NlNV92bWZtc3ViPG1vZGU+NCk6IERpdHRvLgoJKHNzZTVfZm5tYWRkPG1vZGU+NCk6IERpdHRvLgoJKHNzZTVfdm1mbm1hZGQ8bW9kZT40KTogRGl0dG8uCgkoc3NlNV9mbm1zdWI8bW9kZT40KTogRGl0dG8uCgkoc3NlNV92bWZubXN1Yjxtb2RlPjQpOiBEaXR0by4KCShzc2U1aV9mbWFkZDxtb2RlPjQpOiBEaXR0by4KCShzc2U1aV9mbXN1Yjxtb2RlPjQpOiBEaXR0by4KCShzc2U1aV9mbm1hZGQ8bW9kZT40KTogRGl0dG8uCgkoc3NlNWlfZm5tc3ViPG1vZGU+NCk6IERpdHRvLgoJKHNzZTVpX3ZtZm1hZGQ8bW9kZT40KTogRGl0dG8uCgkoc3NlNWlfdm1mbXN1Yjxtb2RlPjQpOiBEaXR0by4KCShzc2U1aV92bWZubWFkZDxtb2RlPjQpOiBEaXR0by4KCShzc2U1aV92bWZubXN1Yjxtb2RlPjQpOiBEaXR0by4KCShtdWx2MTZxaTMpOiBBZGQgU1NFNSBzdXBwb3J0LgoJKG11bHY0c2kzKTogRGl0dG8uCgkoc3NlNV9tdWx2NHNpMyk6IE5ldyBpbnNuIGZvciAzMi1iaXQgbXVsdGlwbHkgc3VwcG9ydCBvbiBTU0U1LgoJKHNzZTJfbXVsdjRzaTMpOiBEaXNhYmxlIGlmIFNTRTUuCgkoc3NlNF8xX3JvdW5kcGQpOiBVc2UgVEFSR0VUX1JPVU5EIGluc3RlYWQgb2YgVEFSR0VUX1NTRTRfMS4KCShzc2U0XzFfcm91bmRwcyk6IERpdHRvLgoJKHNzZTRfMV9yb3VuZHNkKTogRGl0dG8uCgkoc3NlNF8xX3JvdW5kc3MpOiBEaXR0by4KCShzc2VfbWFza2NtcHY0c2YzKTogRGlzYWJsZSBpZiBTU0U1IHNvIHRoZSBTU0U1IGluc3RydWN0aW9uIHdpbGwKCWJlIGdlbmVyYXRlZC4KCShzc2VfbWFza2NtcHNmMyk6IERpdHRvLgoJKHNzZV92bW1hc2tjbXB2NHNmMyk6IERpdHRvLgoJKHNzZTJfbWFza2NtcHYyZGYzKTogRGl0dG8uCgkoc3NlMl9tYXNrY21wZGYzKTogRGl0dG8uCgkoc3NlMl92bW1hc2tjbXB2MmRmMyk6IERpdHRvLgoJKHNzZTJfZXE8bW9kZT4zKTogRGl0dG8uCgkoc3NlMl9ndDxtb2RlPjMpOiBEaXR0by4KCShzc2U1X3BjbW92Xzxtb2RlPik6IEFkZCBTU0U1IHN1cHBvcnQuCgkodmVjX3VucGFja3VfaGlfdjE2cWkpOiBEaXR0by4KCSh2ZWNfdW5wYWNrc19oaV92MTZxaSk6IERpdHRvLgoJKHZlY191bnBhY2t1X2xvX3YxNnFpKTogRGl0dG8uCgkodmVjX3VucGFja3NfbG9fdjE2cWkpOiBEaXR0by4KCSh2ZWNfdW5wYWNrdV9oaV92OGhpKTogRGl0dG8uCgkodmVjX3VucGFja3NfaGlfdjhoaSk6IERpdHRvLgoJKHZlY191bnBhY2t1X2xvX3Y4aGkpOiBEaXR0by4KCSh2ZWNfdW5wYWNrc19sb192OGhpKTogRGl0dG8uCgkodmVjX3VucGFja3VfaGlfdjRzaSk6IERpdHRvLgoJKHZlY191bnBhY2tzX2hpX3Y0c2kpOiBEaXR0by4KCSh2ZWNfdW5wYWNrdV9sb192NHNpKTogRGl0dG8uCgkodmVjX3VucGFja3NfbG9fdjRzaSk6IERpdHRvLgoJKHNzZTVfcG1hY3N3dyk6IE5ldyBTU0U1IGludHJpbnNpYyBpbnNuLgoJKHNzZTVfcG1hY3Nzd3cpOiBEaXR0by4KCShzc2U1X3BtYWNzZGQpOiBEaXR0by4KCShzc2U1X3BtYWNzc2RkKTogRGl0dG8uCgkoc3NlNV9wbWFjc3NkcWwpOiBEaXR0by4KCShzc2U1X3BtYWNzc2RxaCk6IERpdHRvLgoJKHNzZTVfcG1hY3NkcWgpOiBEaXR0by4KCShzc2U1X3BtYWNzc3dkKTogRGl0dG8uCgkoc3NlNV9wbWFjc3dkKTogRGl0dG8uCgkoc3NlNV9wbWFkY3Nzd2QpOiBEaXR0by4KCShzc2U1X3BtYWRjc3dkKTogRGl0dG8uCgkoc3NlNV9wY21vdl88bW92ZT4pOiBDb25kaXRpb25hbCBtb3ZlIHN1cHBvcnQgb24gU1NFNS4KCShzc2U1X3BoYWRkYncpOiBOZXcgU1NFNSBpbnRyaW5zaWMgaW5zbi4KCShzc2U1X3BoYWRkYmQpOiBEaXR0by4KCShzc2U1X3BoYWRkYnEpOiBEaXR0by4KCShzc2U1X3BoYWRkd2QpOiBEaXR0by4KCShzc2U1X3BoYWRkd3EpOiBEaXR0by4KCShzc2U1X3BoYWRkZHEpOiBEaXR0by4KCShzc2U1X3BoYWRkdWJ3KTogRGl0dG8uCgkoc3NlNV9waGFkZHViZCk6IERpdHRvLgoJKHNzZTVfcGhhZGR1YnEpOiBEaXR0by4KCShzc2U1X3BoYWRkdXdkKTogRGl0dG8uCgkoc3NlNV9waGFkZHV3cSk6IERpdHRvLgoJKHNzZTVfcGhhZGR1ZHEpOiBEaXR0by4KCShzc2U1X3Boc3ViYncpOiBEaXR0by4KCShzc2U1X3Boc3Vid2QpOiBEaXR0by4KCShzc2U1X3Boc3ViZHEpOiBEaXR0by4KCShzc2U1X3BwZXJtKTogRGl0dG8uCgkoc3NlNV9wcGVybV9zaWduX3YxNnFpX3Y4aGkpOiBOZXcgaW5zbnMgZm9yIHBhY2svdW5wYWNrIHdpdGggU1NFNS4KCShzc2U1X3BwZXJtX3plcm9fdjE2cWlfdjhoaSk6IERpdHRvLgoJKHNzZTVfcHBlcm1fc2lnbl92OGhpX3Y0c2kpOiBEaXR0by4KCShzc2U1X3BwZXJtX3plcm9fdjhoaV92NHNpKTogRGl0dG8uCgkoc3NlNV9wcGVybV9zaWduX3Y0c2lfdjJkaSk6IERpdHRvLgoJKHNzZTVfcHBlcm1fc2lnbl92NHNpX3YyZGkpOiBEaXR0by4KCShzc2U1X3BwZXJtX3BhY2tfdjJkaV92NHNpKTogRGl0dG8uCgkoc3NlNV9wcGVybV9wYWNrX3Y0c2lfdjhoaSk6IERpdHRvLgoJKHNzZTVfcHBlcm1fcGFja192OGhpX3YxNnFpKTogRGl0dG8uCgkoc3NlNV9wZXJtPG1vZGU+KTogTmV3IFNTRTUgaW50cmluc2ljIGluc24uCgkocm90bDxtb2RlPjMpOiBEaXR0by4KCShzc2U1X3JvdGw8bW9kZT4zKTogRGl0dG8uCgkoc3NlNV9hc2hsPG1vZGU+Myk6IERpdHRvLgoJKHNzZTVfbHNobDxtb2RlPjMpOiBEaXR0by4KCShzc2U1X2ZyY3o8bW9kZT4yKTogRGl0dG8uCgkoc3NlNXNfZnJjejxtb2RlPjIpOiBEaXR0by4KCShzc2U1X2N2dHBoMnBzKTogRGl0dG8uCgkoc3NlNV9jdnRwczJwaCk6IERpdHRvLgoJKHNzZTVfdm1tYXNrY21wPG1vZGU+Myk6IERpdHRvLgoJKHNzZTVfY29tX3RmPG1vZGU+Myk6IERpdHRvLgoJKHNzZTVfbWFza2NtcDxtb2RlPjMpOiBEaXR0by4KCShzc2U1X21hc2tjbXBfdW5zPG1vZGU+Myk6IERpdHRvLgoJKHNzZTVfbWFza2NtcF91bnMyPG1vZGU+Myk6IERpdHRvLgoJKHNzZTVfcGNvbV90Zjxtb2RlPjMpOiBEaXR0by4KCQoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChjb25zdF8wX3RvXzMxX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlCgl0byBtYXRjaCAwLi4zMS4KCShzc2U1X2NvbXBhcmlzb25fZmxvYXRfb3BlcmF0b3IpOiBOZXcgcHJlZGljYXRlIHRvIG1hdGNoIHRoZQoJY29tcGFyaXNvbiBvcGVyYXRvcnMgc3VwcG9ydGVkIGJ5IHRoZSBTU0U1IGNvbSBpbnN0cnVjdGlvbi4KCShpeDg2X2NvbXBhcmlzb25faW50X29wZXJhdG9yKTogTmV3IHByZWRpY2F0ZSB0byBtYXRjaCBqdXN0IHRoZQoJc2lnbmVkIGludCBjb21wYXJpc29ucy4KCShpeDg2X2NvbXBhcmlzb25fdW5zX29wZXJhdG9yKTogTmV3IHByZWRpY2F0ZSB0byBtYXRjaCBqdXN0IHRoZQoJdW5zaWduZWQgaW50IGNvbXBhcmlzb25zLgoKCSogZG9jL2ludm9rZS50ZXhpICgtbXNzZTUpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCSgtbWZ1c2VkLW1hZGQpOiBEaXR0by4KCgkqIGRvYy9leHRlbmQudGV4aSAoeDg2IGludHJpbnNpY3MpOiBEb2N1bWVudCBuZXcgU1NFNSBpbnRyaW5zaWNzLgoKCSogY29uZmlnLmdjYyAoaVszNDU2N104Ni0qLSopOiBJbmNsdWRlIGJtbWludHJpbi5oIGFuZAoJbW1pbnRyaW4tY29tbW9uLmguCgkoeDg2XzY0LSotKik6IERpdHRvLgoKCSogY29uZmlnL2kzODYvY3B1aWQuaCAoYml0X1NTRTUpOiBEZWZpbmUgU1NFNSBiaXQuCgoJKiBjb25maWcvaTM4Ni9ibW1pbnRyaW4uaDogTmV3IGZpbGUsIHByb3ZpZGUgY29tbW9uIHg4NiBjb21waWxlcgoJaW50cmluaXNpY3MgZm9yIFNTRTUuCgoJKiBjb25maWcvaTM4Ni9zbW1pbnRyaW4uaDogTW92ZSBpbnN0cnVjdGlvbnMgc2hhcmVkIHdpdGggU1NFNSB0bwoJbW1pbnRyaW4tY29tbW9uLmguCgoJKiBjb25maWcvaTM4Ni9tbWludHJpbi1jb21tb24uaDogTmV3IGZpbGUsIHRvIGNvbnRhaW4gY29tbW9uCglpbnN0cnVjdGlvbnMgYmV0d2VlbiBTU0U0LjEgYW5kIFNTRTUuCgoJKiBjb25maWcvaTM4Ni9uZXR3YXJlLmMgKGdlbl9zdGRjYWxsX29yX2Zhc3RjYWxsX2RlY29yYXRpb24pOiBVc2UKCUZPUkVBQ0hfRlVOQ1RJT05fQVJHUyB0byBpdGVyYXRlIG92ZXIgdGhlIGFyZ3VtZW50IGxpc3QuCgkoZ2VuX3JlZ3Bhcm1fcHJlZml4KTogRGl0dG8uCgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChnZW5fc3RkY2FsbF9vcl9mYXN0Y2FsbF9zdWZmaXgpOiBVc2UKCUZPUkVBQ0hfRlVOQ1RJT05fQVJHUyB0byBpdGVyYXRlIG92ZXIgdGhlIGFyZ3VtZW50IGxpc3QuICBVc2UKCXByb3RvdHlwZV9wIHRvIGRldGVybWluZSBpZiBhIGZ1bmN0aW9uIGlzIHByb3RvdHlwZWQuCgoyMDA3LTA5LTEyICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGNvbmZpZy9kZnAtYml0LmMgKGRmcF9jb252ZXJzaW9uX2V4Y2VwdGlvbik6IE5ldyBmdW5jdGlvbi4KCShERlBfVE9fREZQKSBBZGQgbmV3IHZhcmlhbnRzIHRvIHVzZSBkaXJlY3QgY29udmVyc2lvbnMgaW4gZGVjTnVtYmVyLgoJKERGUF9UT19JTlQpOiBEaXR0by4KCShJTlRfVE9fREZQKTogRGl0dG8uCgkqIGNvbmZpZy9kZnAtYml0LmggKERFQ19GTE9BVF9GUk9NX0lOVCwgREVDX0ZMT0FUX1RPX0lOVCk6IE5ldy4KCjIwMDctMDktMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zMjMzOAoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX2VwaWxvZ3VlKTogRW1pdCBibG9ja2FnZQoJYmVmb3JlIHNwIHJlc3RvcmF0aW9uIGV2ZW4gd2hlbiB0b3RhbF9zaXplIGlzIDAsIGJ1dAoJZnJhbWVfcG9pbnRlcl9uZWVkZWQuCgoyMDA3LTA5LTEyICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAobWFjaGluZV9mdW5jdGlvbik6IEFkZCB2YXJhcmdfYTdfY29weS4KCSh4dGVuc2FfY29weV9pbmNvbWluZ19hNyk6IFVzZSBzdGFydF9zZXF1ZW5jZSBpbnN0ZWFkIG9mCglwdXNoX3RvX3NlcXVlbmNlLiAgU3Rhc2ggaW5zbnMgaW4gdmFyYXJnX2E3X2NvcHkgZm9yIGJ1aWx0aW5fc2F2ZXJlZ3MuCgkoeHRlbnNhX2J1aWx0aW5fc2F2ZXJlZ3MpOiBQbGFjZSBjb2RlIGZyb20gdmFyYXJnX2E3X2NvcHkgYXQgdGhlIHN0YXJ0CglvZiB0aGUgc2F2ZXJlZ3Mgc2VxdWVuY2UuCgoyMDA3LTA5LTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHJlZS5oIChncm9rZmllbGQpOiBBZGQgYSAidHJlZSAqIiBhcmd1bWVudC4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVGFrZSBhIHBvaW50ZXIgdG8gdGhlIGRlY2wncyBhdHRyaWJ1dGVzLgoJQ2hhaW4gbmVzdGVkIGRlY2wgYXR0cmlidXRlcyB0byBpdC4gIERvbid0IGNhbGwgZGVjbF9hdHRyaWJ1dGVzIGhlcmUuCgkoZ3Jva3R5cGVuYW1lKTogUGFzcyBncm9rZGVjbGFyYXRvciBhIHBvaW50ZXIgdG8gdGhlIGF0dHJpYnV0ZSBsaXN0LgoJKHN0YXJ0X2RlY2wsIGdyb2twYXJtLCBwdXNoX3Bhcm1fZGVjbCwgc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShncm9rZmllbGQpOiBUYWtlIGEgcG9pbnRlciB0byB0aGUgZGVjbCdzIGF0dHJpYnV0ZXMgYW5kIHBhc3MKCWl0IHRvIGdyb2tkZWNsYXJhdG9yLgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9zdHJ1Y3RfZGVjbGFyYXRpb24pOiBVcGRhdGUgdGhlIGNhbGxzIHRvCglncm9rZmllbGQuICBDYWxsIGRlY2xfYXR0cmlidXRlcyBmb3IgYW5vbnltb3VzIHN0cnVjdCBhbmQgdW5pb24KCWZpZWxkcy4KCjIwMDctMDktMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19DQUxMR1JBUEhfRVhQQU5EX0ZVTkNUSU9OKTogS2lsbC4KCjIwMDctMDktMTIgIElyYSBSb3NlbiAgPGlyYXJAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjM3NwoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfZGF0YV9yZWZfZGVwZW5kZW5jZSk6IERpc3Rpbmd1aXNoCgliZXR3ZWVuIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBkZXBlbmRlbmNlIGRpc3RhbmNlIHVzaW5nIEREUl9SRVZFUlNFRF9QLgoKMjAwNy0wOS0xMiAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzM3MwoJKiB0cmVlLXZlY3QtYW5hbHl6ZSAodmVjdF9kZXRlcm1pbmVfdmVjdG9yaXphdGlvbl9mYWN0b3IpOiBDYWxsIAoJVFJFRV9JTlRfQ1NUX0xPVyB3aGVuIGNvbXBhcmluZyBUWVBFX1NJWkVfVU5JVC4JCgoyMDA3LTA5LTEyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgdGFyZ2V0LzMzMzkzCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGZsb2F0c2lzZjJfbWl4ZWRfbWVtb3J5LCBmbG9hdHNpc2YyX3NzZV9tZW1vcnkpOgoJRGlzYWJsZSBmb3IgIVNTRV9NQVRICgoyMDA3LTA5LTEyICBDaHJpc3RpYW4gQnJ1ZWwgIDxjaHJpc3RpYW4uYnJ1ZWxAc3QuY29tPgoKCSogc2guaCAoU0hfREJYX1JFR0lTVEVSX05VTUJFUik6IEFkZGVkIGZwc2NyLCBmaXhlZCBzci9nYnIgcmVncy4KCSogbGludXgtdW53aW5kLmggKFNIX0RXQVJGX0ZSQU1FX0dCUik6IGZpeGVkLiAKCQoyMDA3LTA5LTEyICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfZ2V0X3NscF9kZWZzKTogRG9uJ3QgYnVpbGQgYSB2ZWN0b3IKCWZvciBvcHJuZDEgaWYgbm90IHJlcXVpcmVkLgoJKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24pOiBVc2Ugc2NhbGFyIG9wZXJhbmQgaW4gU0xQIGluIGNhc2Ugb2YgCglzaGlmdCB3aXRoIHNjYWxhciBhcmd1bWVudC4KCjIwMDctMDktMTIgIElyYSBSb3NlbiAgPGlyYXJAaWwuaWJtLmNvbT4KCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01JTl9WRUNUX0xPT1BfQk9VTkQpOiBDaGFuZ2UgZGVmYXVsdCBhbmQKCW1pbmltdW0gdG8gMS4KCjIwMDctMDktMTEgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeC5jb20+CgoJKiBkZWZhdWx0cy5oIChEV0FSRjJfVU5XSU5EX0lORk8pOiBEb24ndCBkZWZpbmUgaWYKCVRBUkdFVF9VTldJTkRfSU5GTyBpcyBkZWZpbmVkLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKElOQ09NSU5HX1JFVFVSTl9BRERSX1JUWCk6IERlbGV0ZSB1bmRlZgoJYWZ0ZXIgZGVmaW5pdGlvbi4KCjIwMDctMDktMTIgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKGNhbGNfbGl2ZV9yZWdzKTogVXNlCgljdXJyZW50X2Z1bmN0aW9uX3NhdmVzX2FsbF9yZWdpc3RlcnMgaW5zdGVhZCBvZgoJY3VycmVudF9mdW5jdGlvbl9oYXNfbm9ubG9jYWxfbGFiZWwuCgkoc2hfYWxsb2NhdGVfaW5pdGlhbF92YWx1ZSk6IExpa2V3aXNlLgoJKHNoX2dldF9wcl9pbml0aWFsX3ZhbCk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guaCAoU0hNRURJQV9SRUdTX1NUQUNLX0FESlVTVCk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2gubWQgKGxvYWRfcmEpOiBMaWtld2lzZS4KCjIwMDctMDktMTIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL2NyaXMvdC1saW51eCAoTElNSVRTX0hfVEVTVCk6IE9ubHkgZGVmaW5lIGlmIG5vdCBpbmhpYml0X2xpYmMuCgoJUFIgdGFyZ2V0LzMzMzYwCgkqIGNvbmZpZy9jcmlzL2NyaXMuYyAoY3Jpc19leHBhbmRfcGljX2NhbGxfYWRkcmVzcyk6IEZpeCB0eXBvIGluCglHRVRfQ09ERSAoeCkgPT0gQ09OU1RfSU5UIHRvIENPTlNUX0lOVF9QICh4KSB0cmFuc2Zvcm1hdGlvbi4KCjIwMDctMDktMTIgIFNhIExpdSAgPHNhbGl1QGRlLmlibS5jb20+CgoJKiBjb25maWcvc3B1L3NwdS5jIChzcHVfZW1pdF9icmFuY2hfb3Jfc2V0KTogSGFuZGxlIE5hTiB2YWx1ZXMgYXMKCW9wZXJhbmRzIHRvIERGbW9kZSBHRSBvciBMRSBjb21wYXJlcy4KCjIwMDctMDktMTIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmggKGVudW0gcmVnX2NsYXNzLCBSRUdfQ0xBU1NfQ09OVEVOVFMsCglSRUdfQ0xBU1NfTkFNRVMpOiBBZGQgUDBSRUdTLgoJKFJFR05PX1JFR19DTEFTUyk6IFJldHVybiBpdCB3aGVyZSBhcHByb3ByaWF0ZS4KCShSRUdfQ0xBU1NfRlJPTV9DT05TVFJBSU5UKTogQWRkICdxQScuCgkoQ0xBU1NfTElLRUxZX1NQSUxMRURfUCk6IFAwUkVHUyBpcyBsaWtlbHlfc3BpbGxlZC4KCSogZG9jL21kLnRleGkgKEJsYWNrZmluIGZhbWlseSk6IERvY3VtZW50ICdxJyBjb25zdHJhaW50cy4KCjIwMDctMDktMTEgIFN0ZXZlIEtlbnRvbiAgPHNrZW50b25Ab3UuZWR1PgoKCSogcGEvbGludXgtdW53aW5kLmg6IEd1YXJkIHdpdGggaW5oaWJpdF9saWJjLgoJKiBwYS9ocHV4LXVud2luZC5oOiBMaWtld2lzZS4KCjIwMDctMDktMTEgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyBNSVBTIC1tbGxzYyBhbmQgLW1uby1sbHNjIG9wdGlvbnMuCgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IG5ldyAtLXdpdGgtbGxzYyBhbmQgLS13aXRob3V0LWxsc2MKCW9wdGlvbnMuCgkqIGNvbmZpZy5nY2M6IEhhbmRsZSAtLXdpdGgtbGxzYyBhbmQgLS13aXRob3V0LWxsc2MgY29uZmlndXJlIG9wdGlvbnMuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHN5bmMsIG1lbW9yeV9iYXJyaWVyKTogV3JhcCBzeW5jIGluc3RydW5jdGlvbgoJaW4gJXwgYW5kICUtIG9wZXJhbmQgY29kZXMuICBEZXBlbmQgb24gR0VORVJBVEVfU1lOQyBpbnN0ZWFkIG9mCglJU0FfSEFTX1NZTkMuCgkoc3luY19jb21wYXJlX2FuZF9zd2FwPG1vZGU+LCBzeW5jX2FkZDxtb2RlPiwgc3luY19zdWI8bW9kZT4sCglzeW5jX29sZF9hZGQ8bW9kZT4sIHN5bmNfb2xkX3N1Yjxtb2RlPiwgc3luY19uZXdfYWRkPG1vZGU+LAoJc3luY19uZXdfc3ViPG1vZGU+LCBzeW5jXzxvcHRhYj48bW9kZT4sIHN5bmNfb2xkXzxvcHRhYj48bW9kZT4sCglzeW5jX25ld188b3B0YWI+PG1vZGU+LCBzeW5jX25hbmQ8bW9kZT4sIHN5bmNfb2xkX25hbmQ8bW9kZT4sCglzeW5jX25ld19uYW5kPG1vZGU+LCBzeW5jX2xvY2tfdGVzdF9hbmRfc2V0PG1vZGU+KTogRGVwZW5kIG9uCglHRU5FUkFURV9MTF9TQyBpbnN0ZWFkIG9mIElTQV9IQVNfTExfU0MuCgkqIGNvbmZpZy9taXBzL21pcHMub3B0IChtbGxzYyk6IE5ldyBvcHRpb24uCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19sbHNjKTogRGVmaW5lIHZhcmlhYmxlLgoJKG1pcHNfaGFuZGxlX29wdGlvbik6IEhhbmRsZSBtbGxzYyBvcHRpb24uCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBtaXBzX3ByaW50X29wZXJhbmRfcHVuY3QgZm9yICd8JyBhbmQgJy0nLgoJKHByaW50X29wZXJhbmQpOiBBZGQgbmV3ICV8IGFuZCAlLSBvcGVyYW5kIGNvZGVzLgoJKiBjb25maWcvbWlwcy9taXBzLmggKG1pcHNfbGxzY19zZXR0aW5nKTogTmV3IGVudW0gdHlwZS4KCShtaXBzX2xsc2MpOiBEZWNsYXJlLgoJKE9QVElPTl9ERUZBVUxUX1NQRUNTKTogQWRkIGxsc2MgaGFuZGxpbmcuCgkoR0VORVJBVEVfU1lOQyk6IE5ldyBtYWNyby4KCShHRU5FUkFURV9MTF9TQyk6IE5ldyBtYWNyby4KCShNSVBTX0NPTVBBUkVfQU5EX1NXQVAsIE1JUFNfU1lOQ19PUCwgTUlQU19TWU5DX09MRF9PUCwKCU1JUFNfU1lOQ19ORVdfT1AsIE1JUFNfU1lOQ19OQU5ELCBNSVBTX1NZTkNfT0xEX05BTkQsCglNSVBTX1NZTkNfTkVXX05BTkQsIE1JUFNfU1lOQ19FWENIQU5HRSk6IFdyYXAgaW5zdHJ1Y3Rpb25zCglpbiAlfCBhbmQgJS0gb3BlcmFuZCBjb2Rlcy4KCjIwMDctMDktMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChwdXNoX2ZpZWxkc19vbnRvX2ZpZWxkc3RhY2spOiBEZWFsIHdpdGgKCVRZUEVfTk9OQUxJQVNFRF9DT01QT05FTlQgbGlrZSB3aXRoIERFQ0xfTk9OQUREUkVTU0FCTEVfUC4KCjIwMDctMDktMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjc5NDUKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBEbyBwYWNrIHZhcmlhYmxlIHNpemUgZmllbGRzLgkKCjIwMDctMDktMTEgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL3ByZWRpY2F0ZXMubWQgKG1vdnNpX2NvbnN0MF9vcGVyYW5kLAoJbm9uX3N5bWJvbGljX2NhbGxfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGVzLgoKCSogY29uZmlnL202OGsvY29uc3RyYWludHMubWQgKENzLCBDaSwgQzAsIENqLCBDUSwgQ1csIENaLCBDUywgQXAsIEFjKToKCU5ldyBjb25zdHJhaW50cy4KCSogZG9jL21kLnRleGkgKENvbnN0cmFpbnRzIGZvciBQYXJ0aWN1bGFyIE1hY2hpbmVzOiBNb3Rvcm9sYSA2ODB4MCk6CglEb2N1bWVudCBjb25zdHJhaW50cyBOLCBPLCBQLCBSLCBTLCBULCBRLCBVLCBXLCBDcywgQ2ksIEMwLCBDaiwgQ1EsCglDVywgQ1osIENTLCBBcCBhbmQgQWMuCgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChVTlNQRUNfSUIpOiBOZXcgY29uc3RhbnQuCgkoY29uc3RyYWludHMubWQpOiBOZXcgaW5jbHVkZS4KCShjcHUsIHR5cGUsIHR5cGUxLCBvcHgsIG9weSwgb3B4X3R5cGUsIG9weV90eXBlLCBzaXplLCBvcHhfYWNjZXNzLAoJb3B4X21lbSwgb3B5X21lbSwgb3BfbWVtLCBndWVzcywgc3BsaXQpOiBOZXcgYXR0cmlidXRlcy4KCShtb3ZkZl9pbnRlcm5hbCk6IE5hbWUgcGF0dGVybi4gIEZpeCB0byB1c2UgYWx0ZXJuYXRpdmVzLiAgQWRkIHNwbGl0LgoJU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKHB1c2hkaSk6IEFkZCBzcGxpdC4KCSh0c3RzaV9pbnRlcm5hbCk6IE5hbWUgcGF0dGVybi4gIEZpeCB0byB1c2UgYWx0ZXJuYXRpdmVzLiAgU3BlY2lmeQoJYXR0cmlidXRlcy4gIFNwbGl0IHRzdHNpX2ludGVybmFsXzY4MDIwX2NmIGZyb20gaXQuCgkodHN0c2lfaW50ZXJuYWxfNjgwMjBfY2YpOiBOZXcgcGF0dGVybi4KCSh0c3RoaV9pbnRlcm5hbCwgdHN0cWlfaW50ZXJuYWwpOiBOYW1lIHBhdHRlcm4uICBTcGVjaWZ5IGF0dHJpYnV0ZXMuCgkodHN0PG1vZGU+X2NmKTogU3BlY2lmeSBhdHRyaWJ1dGVhLgoJKGNtcHNpX2NmKTogTmFtZSBwYXR0ZXJuLiAgU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKGNtcDxtb2RlPl82ODg4MSwgY21wPG1vZGU+X2NmKTogU3BlY2lmeSB0eXBlIGF0dHJpYnV0ZS4KCShwdXNoZXh0aGlzaV9jb25zdCk6IEZpeCB0byB1c2UgYWx0ZXJuYXRpdmVzLiAgU3BlY2lmeQoJYXR0cmlidXRlcy4KCShtb3ZzaV9jb25zdDApOiBTcGxpdCBtb3ZzaV9jb25zdDBfNjgwMDBfMTAgYW5kIG1vdnNpX2NvbnN0MF82ODA0MF82MAoJZnJvbSBpdC4gIEZpeCB0byB1c2UgYWx0ZXJuYXRpdmVzLiAgU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKG1vdnNpX2NvbnN0MF82ODA0MF8xMCwgbW92c2lfY29uc3QwXzY4MDQwXzYwKTogTmV3IHBhdHRlcm5zLgoJKG1vdnNpX2NmLCBtb3ZzdHJpY3RxaV9jZik6IEZpeCB0byB1c2UgYWx0ZXJuYXRpdmVzLiAgU3BlY2lmeQoJYXR0cmlidXRlcy4KCShtb3ZzZl9jZl9zb2Z0KTogU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKG1vdmRmX2NmX3NvZnQpOiBBZGQgc3BsaXQuCgkocHVzaGFzaSwgemVyb19leHRlbmRoaXNpMl9jZiwgemVyb19leHRlbmRxaXNpMl9jZnY0LAoJY2Z2NF9leHRlbmRoaXNpMiwgNjhrX2V4dGVuZGhpc2kyLCBleHRlbmRxaWhpMiwgY2Z2NF9leHRlbmRxaXNpMiwKCTY4a19leHRlbmRxaXNpMiwgdHJ1bmNkZnNmMl9jZik6IFNwZWNpZnkgYXR0cmlidXRlcy4KCSh0cnVuY2Rmc2YyXzY4ODgxKTogTmFtZSBwYXR0ZXJuLiAgU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKGZsb2F0c2k8bW9kZT4yX2NmLCBmbG9hdGhpPG1vZGU+Ml82ODg4MSwgZmxvYXRoaTxtb2RlPjJfY2YsCglmbG9hdHFpPG1vZGU+Ml82ODg4MSwgZmxvYXRxaTxtb2RlPjJfY2YsIGZ0cnVuYzxtb2RlPjJfY2YsCglmaXg8bW9kZT5xaTJfY2YsIGZpeDxtb2RlPmhpMl9jZiwgZml4PG1vZGU+c2kyX2NmLCBhZGRkaV9kaXNobDMyKToKCVNwZWNpZnkgYXR0cmlidXRlcy4KCShhZGRzaTNfNTIwMCk6IEZpeCB0byB1c2UgYWx0ZXJuYXRpdmVzLiAgU3BlY2lmeSBhdHRyaWJ1dGVzLgoJQWRkIHNwbGl0cy4KCShhZGQ8bW9kZT4zX2NmLCBzdWJkaV9kaXNobDMyKTogU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKHN1YnNpMyk6IEFkZCBhbHRlcm5hdGl2ZSBmb3Igc3VicS5sLiAgU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKHN1Yjxtb2RlPjNfY2YsIG11bGhpMywgbXVsaGlzaTMpOiBTcGVjaWZ5IGF0dHJpYnV0ZXMuCgkobXVsaGlzaXNpM19zLCBtdWxzaTNfNjgwMjAsIG11bHNpM19jZik6IE5hbWUgcGF0dGVybi4gIFNwZWNpZnkKCWF0dHJpYnV0ZXMuCgkodW11bGhpc2kzKTogU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKG11bGhpc2lzaTNfeik6IE5hbWUgcGF0dGVybi4gIFNwZWNpZnkgYXR0cmlidXRlcy4KCShmbXVsPG1vZGU+M19jZiwgZGl2PG1vZGU+M19jZiwgbmVnc2kyX2ludGVybmFsLCBuZWdzaTJfNTIwMCwKCXNxcnQ8bW9kZT4yXzY4ODgxLCBjbHpzaTIsIG9uZV9jbXBsc2kyXzUyMDAsIHN1YnJlZ2hpMWFzaHJkaV9jb25zdDMyLAoJc3VicmVnc2kxYXNocmRpX2NvbnN0MzIsIGFzaHJzaTMsIHN1YnJlZzFsc2hyZGlfY29uc3QzMiwgbHNocnNpMywKCWJzZXRtZW1xaSk6IFNwZWNpZnkgYXR0cmlidXRlcy4KCShic2V0bWVtcWlfZXh0KTogTmFtZSBwYXR0ZXJuLiAgU3BlY2lmeSBhdHRyaWJ1dGVzLgoJKGJjbHJtZW1xaSk6IFNwZWNpZnkgYXR0cmlidXRlcy4KCShiY2xybWVtcWlfZXh0LCBzY2MsIHNscyk6IE5hbWUgcGF0dGVybi4gIFNwZWNpZnkgYXR0cmlidXRlcy4KCShiZXEsIGJuZSwgYmd0LCBiZ3R1LCBibHQsIGJsdHUsIGJnZSwgYmdldSwgYmxlLCBibGV1KTogU3BlY2lmeQoJYXR0cmlidXRlcy4KCShiZXEyLCBibmUyLCBiZ3QyLCBiZ3R1MiwgYmx0MiwgYmx0dTIsIGJnZTIsIGJnZXUyLCBibGUyLCBibGV1Mik6IE5hbWUKCXBhdHRlcm4uICBTcGVjaWZ5IGF0dHJpYnV0ZXMuCgkoanVtcCk6IFNwZWNpZnkgYXR0cmlidXRlcy4KCSh0YWJsZWp1bXBfaW50ZXJuYWwpOiBOYW1lIHBhdHRlcm4uICBTcGVjaWZ5IGF0dHJpYnV0ZXMuCgkoY2FsbF92YWx1ZSk6IFNwbGl0IGludG8gbm9uX3N5bWJvbGljX2NhbGxfdmFsdWUsCglzeW1ib2xpY19jYWxsX3ZhbHVlX2pzciwgc3ltYm9saWNfY2FsbF92YWx1ZV9ic3IuICBGaXggdG8gdXNlCglhbHRlcm5hdGl2ZXMuICBTcGVjaWZ5IGF0dHJpYnV0ZXMuCgkobm9uX3N5bWJvbGljX2NhbGxfdmFsdWUsIHN5bWJvbGljX2NhbGxfdmFsdWVfanNyLAoJc3ltYm9saWNfY2FsbF92YWx1ZV9ic3IpOiBOZXcgcGF0dGVybnMuCgkobm9wLCByZXR1cm4sIHVubGluaywgaW5kaXJlY3RfanVtcCk6IFNwZWNpZnkgYXR0cmlidXRlcy4KCSh0cmFwKTogRml4IGNvbmRpdGlvbi4gIFNwZWNpZnkgYXR0cmlidXRlcy4KCShpYik6IE5ldyBwYXR0ZXJuLgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX3N5bWJvbGljX2NhbGxfdmFyKTogTmV3IHZhcmlhYmxlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIGl0LiAgSW5pdGlhbGl6ZSBtNjhrX3NjaGVkX2NwdS4KCShDT05TVF9NRVRIT0QpOiBSZW5hbWUgdG8gTTY4S19DT05TVF9NRVRIT0QsIG1vdmUgdG8gbTY4ay5oLgoJKGNvbnN0X21ldGhvZCk6IE1ha2UgZ2xvYmFsLCByZW5hbWUgdG8gbTY4a19jb25zdF9tZXRob2QuCgkoY29uc3RfaW50X2Nvc3QsIG91dHB1dF9tb3ZlX2NvbnN0X2ludG9fZGF0YV9yZWcpOiBVcGRhdGUuCgkob3V0cHV0X21vdmVfZG91YmxlKTogUGFyYW1ldHJpemUgdG8gZW1pdCBydGwgY29kZSwgcmVuYW1lIHRvCgloYW5kbGVfbW92ZV9kb3VibGUuCgkob3V0cHV0X3JlZ19hZGp1c3QsIGVtaXRfcmVnX2FkanVzdCwgb3V0cHV0X2NvbXBhZHIsIG91dHB1dF9tb3ZzaSwKCWVtaXRfbW92c2kpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShvdXRwdXRfbW92ZV9kb3VibGUpOiBOZXcgZnVuY3Rpb24gd2l0aCBzZW1hbnRpY3Mgb2Ygb2xkCglvdXRwdXRfbW92ZV9kb3VibGUuCgkobTY4a19lbWl0X21vdmVfZG91YmxlKTogTmV3IGZ1bmN0aW9uLgoJKG02OGtfc2NoZWRfY3B1KTogTmV3IHZhcmlhYmxlLgoJKGF0dHJfb3BfdHlwZSk6IE5ldyBlbnVtLgoJKHNjaGVkX2d1ZXNzX3ApOiBOZXcgdmFyaWFibGUuCgkoc2NoZWRfYWRkcmVzc190eXBlLCBzY2hlZF9vcGVyYW5kX3R5cGUsIHNjaGVkX2F0dHJfb3BfdHlwZSk6CglOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShtNjhrX3NjaGVkX2F0dHJfb3B4X3R5cGUsIG02OGtfc2NoZWRfYXR0cl9vcHlfdHlwZSwKCW02OGtfc2NoZWRfYXR0cl9zaXplLCBtNjhrX3NjaGVkX2F0dHJfb3BfbWVtKTogTmV3IGZ1bmN0aW9ucy4KCShzY2hlZF9icmFuY2hfdHlwZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkobTY4a19zY2hlZF9icmFuY2hfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL202OGsvbTY4ay5oIChNNjhLX1NZTUJPTElDX0NBTEwpOiBOZXcgZW51bS4KCShtNjhrX3N5bWJvbGljX2NhbGxfdmFyKTogRGVjbGFyZS4KCShNNjhLX0NPTlNUX01FVEhPRCk6IFJlbmFtZSBmcm9tIENPTlNUX01FVEhPRC4gIE1vdmUgaGVyZSBmcm9tIG02OGsuYy4KCShtNjhrX2NvbnN0X21ldGhvZCwgbTY4a19lbWl0X21vdmVfZG91YmxlLCBtNjhrX3NjaGVkX2NwdSwKCW02OGtfc2NoZWRfYXR0cl9vcHhfdHlwZSwgbTY4a19zY2hlZF9hdHRyX29weV90eXBlLAoJbTY4a19zY2hlZF9hdHRyX3NpemUsIG02OGtfc2NoZWRfYXR0cl9vcF9tZW0sIG02OGtfc2NoZWRfYnJhbmNoX3R5cGUpOgoJRGVjbGFyZS4KCjIwMDctMDktMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9WQV9BUkdfUEFDS19MRU4pOiBOZXcgYnVpbHRpbi4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pIDxjYXNlIEJVSUxUX0lOX1ZBX0FSR19QQUNLX0xFTj46IElzc3VlCgllcnJvciBpZiBfX2J1aWx0aW5fdmFfYXJnX3BhY2tfbGVuICgpIHdhc24ndCBvcHRpbWl6ZWQgb3V0IGR1cmluZwoJaW5saW5pbmcuCgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfYmIpOiBSZXBsYWNlIF9fYnVpbHRpbl92YV9hcmdfcGFja19sZW4gKCkKCXdpdGggdGhlIG51bWJlciBvZiBpbmxpbmUncyBhbm9ueW1vdXMgYXJndW1lbnRzLgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IF9fYnVpbHRpbl92YV9hcmdfcGFja19sZW4gKCkuCgoyMDA3LTA5LTExICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXZfMSk6IERvIG5vdCBzaW1wbGlmeSB2YXIgKiBjICogYyB0byB2YXIuCgoyMDA3LTA5LTExICBKYW4gSHViaWNrYSA8amhAc3VzZS5jej4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoaXg4Nl90dW5lX2luZGljZXMpOiBBZGQKCVg4Nl9UVU5FX0lOVEVSX1VOSVRfQ09OVkVSU0lPTlMuCgkoVEFSR0VUX0lOVEVSX1VOSVRfQ09OVkVSU0lPTlMpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGZsb2F0c2kgZXhwYW5kZXJzKTogUmVtb3ZlIHJlZHVuZGFudCBjaGVjawoJZm9yIFNJbW9kZSBzb3VyY2U7IG9mZmxvYWQgdG8gbWVtb3J5IHdoZW4gYXNrZWQgZm9yLgoJKGZsb2F0c2lzZjJfbWl4ZWQsIGZsb2F0c2lzZjJfc3NlLCBmbG9hdHNpZGYyX21peGVkLCBmbG9hdHNpZGYyX3NzZQoJZmxvYXRkaXNmMl9taXhlZCwgZmxvYXRzaXNmMl9zc2UsIGZsb2F0c2lkZjJfbWl4ZWQsIGZsb2F0c2lkZjJfc3NlKToKCVVwZGF0ZSBjb25kaXRpb25zOwoJKGZsb2F0c2lzZjJfbWl4ZWRfbWVtb3J5LCBmbG9hdHNpc2YyX3NzZV9tZW1vcnksCglmbG9hdHNpZGYyX21peGVkX21lbW9yeSwgZmxvYXRzaWRmMl9zc2VfbWVtb3J5CglmbG9hdGRpc2YyX21peGVkX21lbW9yeSwgZmxvYXRzaXNmMl9zc2VfbWVtb3J5LAoJZmxvYXRzaWRmMl9taXhlZF9tZW1vcnksIGZsb2F0c2lkZjJfc3NlX21lbW9yeSk6IE5ldy4KCjIwMDctMDktMTEgIEphbiBIdWJpY2thIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKHByb2Nlc3Nfb3B0aW9ucyk6IGFsbCBmcm9udGVuZHMgbm93IGRvIHVuaXQtYXQtYS10aW1lLgoJKiBjZ3JhcGh1bml0LmM6IHVwZGF0ZSBjb21tZW50cy4KCShjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogY2FsbCBwYXNzbWFuYWdlciBkaXJyZWN0bHk7IGVtaXQgdGh1bmtzLgoJKiBjLWRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogdXNlIGNncmFwaF9hZGRfbmV3X2Z1bmN0aW9uLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogV2UgYXJlIGFsd2F5cyB1bml0LWF0LWEtdGltZS4KCjIwMDctMDktMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NldF9taXBzMTZfbW9kZSk6IFVzZSBzZXBhcmF0ZSBhbmNob3IKCXNldHRpbmdzIGZvciBNSVBTMTYuCgkobWlwc191c2VfYW5jaG9yc19mb3Jfc3ltYm9sX3ApOiBVc2UgZGVmYXVsdF91c2VfYW5jaG9yc19mb3Jfc3ltYm9sX3AuCgoyMDA3LTA5LTExICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zeW1ib2xfaW5zbnNfMSk6IEFsbG93IExFQXMgb2YKCVNZTUJPTF9GT1JDRV9UT19NRU0gY29uc3RhbnRzLgoJKG1pcHNfcnR4X2Nvc3RzKTogR2l2ZSBhIGNvc3Qgb2YgMSB0byBmb3JjZV90b19tZW1fb3BlcmFuZHMuCgkobWlwczE2X3Jld3JpdGVfcG9vbF9yZWZzX2luZm8pOiBOZXcgc3RydWN0dXJlLgoJKG1pcHMxNl9yZXdyaXRlX3Bvb2xfY29uc3RhbnQpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tLi4uCgkobWlwczE2X3Jld3JpdGVfcG9vbF9yZWZzKTogLi4uaGVyZS4gIFRha2UgYSBwb2ludGVyIHRvIGEKCW1pcHMxNl9yZXdyaXRlX3Bvb2xfcmVmc19pbmZvIHN0cnVjdHVyZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIKCXRvIGEgY29uc3RhbnQgcG9vbC4gIEZvcmNlIGZvcmNlX3RvX21lbV9vcGVyYW5kcyBpbnRvIG1lbW9yeS4KCShtaXBzMTZfbGF5X291dF9jb25zdGFudHMpOiBVcGRhdGUgY2FsbCB0byBtaXBzMTZfcmV3cml0ZV9wb29sX3JlZnMuCgkqIGNvbmZpZy9taXBzL3ByZWRpY2F0ZXMubWQgKGZvcmNlX3RvX21lbV9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KCSogY29uZmlnL21pcHMvY29uc3RyYWludHMubWQgKGtmKTogTmV3IGNvbnN0cmFpbnQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCptb3ZkaV82NGJpdF9taXBzMTYpOiBBZGQgYSBkIDwtIGtmIGFsdGVybmF0aXZlLgoJKCptb3ZzaV9taXBzMTYpOiBMaWtld2lzZS4KCjIwMDctMDktMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoJICAgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChDT05TVEFOVF9QT09MX0NPU1QpOiBNb3ZlIHRvLi4uCgkqIGNvbmZpZy9taXBzL21pcHMuYzogLi4uaGVyZSBhbmQgc2V0IHRvIDQgZm9yIFRBUkdFVF9NSVBTMTYuCgkobWlwczE2X2NvbnN0YW50X2Nvc3QsIG1pcHNfaW1tZWRpYXRlX29wZXJhbmRfcCwgbWlwc19iaW5hcnlfY29zdCkKCShtaXBzX2ZwX211bHRfY29zdCwgbWlwc19mcF9kaXZfY29zdCwgbWlwc19zaWduX2V4dGVuZF9jb3N0KQoJKG1pcHNfemVyb19leHRlbmRfY29zdCk6IE5ldyBmdW5jdGlvbnMuCgkobWlwc19ydHhfY29zdHMpOiBUcmVhdCBDT01QQVJFIGNvbnN0YW50cyBhcyBoYXZpbmcgemVybyBjb3N0LgoJVXNlIHRoZSBuZXcgZnVuY3Rpb25zLiAgVHdlYWsgbWFueSBjb3N0IGVzdGltYXRlcywgYm90aCBoZXJlCglhbmQgaW4gdGhlIG5ldyBzdWJyb3V0aW5lcy4gIFJldHVybiBmYWxzZSB3aGVuIHRoZSBjb3N0IG9mIHRoZQoJb3BlcmFuZHMgaGFzIG5vdCBiZWVuIGNhbGN1bGF0ZWQuICBDaGVjayBmb3IgKmNsZWFyX3VwcGVyMzIuCglDaGVjayBmb3IgZmxvYXRpbmctcG9pbnQgbXVsdGlwbHktYWRkLCByZWNpcHJvY2FsIGFuZCByc3FydAoJcGF0dGVybnMuICBIYW5kbGUgY29tcGFyaXNvbiBhbmQgcm90YXRpb24gY29kZXMuCgoyMDA3LTA5LTExICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChUQVJHRVRfU1RSSVBfTkFNRV9FTkNPRElORyk6IERvbid0CglvdmVycmlkZSBkZWZhdWx0LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGdldF9kbGxpbXBvcnRfZGVjbCk6IERvbid0IHN0cmlwCglGQVNUQ0FMTF9QUkVGSVguCgoyMDA3LTA5LTEwICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCglQUiBjLzMwMDEzCgkqIGNvbmZpZy9kZnAtYml0LmM6IERvbid0IHNraXAgVEZtb2RlIGNvbnZlcnNpb25zOyBtb3ZlIHN0cnRvKgoJZGVjbGFyYXRpb25zIHRvIHRvcC4KCShERlBfVE9fQkZQKTogVXNlIGZvciBlaXRoZXIgWEZtb2RlIG9yIFRGbW9kZS4KCShCRlBfVE9fREZQKTogVXNlIGZvciBlaXRoZXIgWEZtb2RlIG9yIFRGbW9kZTsgYWx3YXlzIHVzZSBjYXN0CglvZiBCRlBfVklBX1RZUEUuCgkqIGNvbmZpZy9kZnAtYml0Lmg6IEluY2x1ZGUgZmxvYXQuaC4KCShMT05HX0RPVUJMRV9IQVNfWEZfTU9ERSwgTE9OR19ET1VCTEVfSEFTX1RGX01PREUpOiBEZWZpbmUgaWYgbG9uZwoJZG91YmxlIGlzIG9uZSBvZiB0aGVzZSBtb2RlcywgcmF0aGVyIHRoYW4gdXNpbmcgTElCR0NDX0hBU18qRl9NT0RFCgl3aGljaCBkb2Vzbid0IG1lYW4gdGhlIHNhbWUgdGhpbmcuCgkoQkZQX0tJTkQpOiBVc2UgNCB0byBtZWFuIFRGbW9kZS4KCShCRlBfRk1UKTogU3BlY2lmeSB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIGJhc2VkIG9uIHRoZQoJbnVtYmVyIG9mIG1hbnRpc3NhIGRpZ2l0cy4KCShCRlBfVklBX1RZUEUpOiBCaW5hcnkgZmxvYXQgdHlwZSB0byB1c2UgYXMgY2FzdCBmb3Igc3ByaW50Zi4KCShCRlBfVE9fREZQLCBERlBfVE9fQkZQKTogRGVmaW5lIG5hbWVzIGZvciBURm1vZGUgdmFyaWFudHMuCgkoU1RSX1RPX0JGUCk6IFVzZSBzdHJ0b2xkIGZvciBYRm1vZGUgb3IgVEZtb2RlLgoJKFRGdHlwZSk6IERlZmluZSBpZiBURm1vZGUgaXMgc3VwcG9ydGVkLgoJKiBkb2MvbGliZ2NjLnRleGkgKERlY2ltYWwgZmxvYXQgbGlicmFyeSByb3V0aW5lcyk6IERvY3VtZW50CglURiBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KCjIwMDctMDktMTAgIENoYW8teWluZyBGdSAgPGZ1QG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NjYWxhcl9tb2RlX3N1cHBvcnRlZF9wKTogRGVjbGFyZS4KCShUQVJHRVRfU0NBTEFSX01PREVfU1VQUE9SVEVEX1ApOiBEZWZpbmUuCgkobWlwc19lbWl0X2NvbXBhcmUpOiBQcm9jZXNzIGZpeGVkLXBvaW50IG1vZGVzLgoJKG1pcHNfcGFkX2FyZ191cHdhcmQpOiBTdXBwb3J0IGZpeGVkLXBvaW50IHR5cGVzLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBBbGxvdyBmaXhlZC1wb2ludCBtb2RlcyBpbiBhY2N1bXVsYXRvcnMuCgkobWlwc19wYXNzX2J5X3JlZmVyZW5jZSk6IFBhc3MgRFEsIFVEUSwgREEsIGFuZCBVREEgbW9kZXMgaW4gcmVnaXN0ZXJzLgoJKG1pcHNfdmVjdG9yX21vZGVfc3VwcG9ydGVkX3ApOiBTdXBwb3J0IFYySFFtb2RlLCBWMlVIUW1vZGUsIFYySEFtb2RlLAoJVjJVSEFtb2RlLCBWNFFRbW9kZSwgYW5kIFY0VVFRbW9kZSB3aGVuIFRBUkdFVF9EU1AuCgkobWlwc19zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCk6IE5ldyBmdW5jdGlvbiB0byBhY2NlcHQgZml4ZWQtcG9pbnQKCW1vZGVzIGlmIHRoZSB3aWR0aCBpcyBub3QgZ3JlYXRlciB0aGFuIHR3byBCSVRTX1BFUl9XT1JELgoJKiBjb25maWcvbWlwcy9taXBzLmggKFNIT1JUX0ZSQUNUX1RZUEVfU0laRSwgRlJBQ1RfVFlQRV9TSVpFLAoJTE9OR19GUkFDVF9UWVBFX1NJWkUsIExPTkdfTE9OR19GUkFDVF9UWVBFX1NJWkUsCglTSE9SVF9BQ0NVTV9UWVBFX1NJWkUsIEFDQ1VNX1RZUEVfU0laRSwgTE9OR19BQ0NVTV9UWVBFX1NJWkUsCglMT05HX0xPTkdfQUNDVU1fVFlQRV9TSVpFKTogRGVmaW5lLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgiZCIpOiBVcGRhdGUgbW9kZSBhdHRyaWJ1dGUgZm9yIGZpeGVkLXBvaW50Cgltb2Rlcy4KCSgiSU1PREUiKTogTmV3IG1vZGUgYXR0cmlidXRlLgoJKG1pcHMtZml4ZWQubWQpOiBJbmNsdWRlLgoJKiBjb25maWcvbWlwcy9taXBzLW1vZGVzLmRlZjogQ3JlYXRlIFZFQ1RPUl9NT0RFUyBmb3IgRlJBQ1QsIFVGUkFDVCwKCUFDQ1VNLCBVQUNDVU0uCgkqIGNvbmZpZy9taXBzL21pcHMtZml4ZWQubWQ6IE5ldyBmaWxlLgoKMjAwNy0wOS0xMSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjb25maWcvc3B1L3NwdS5tZDogRm9ybWF0dGluZyBmaXhlcy4KCjIwMDctMDktMTAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL2RmcC1iaXQuYyAoZGZwX3VuYXJ5X2Z1bmMpOiBEZWxldGUuCgkoZGZwX3VuYXJ5X29wKTogRGVsZXRlLgoJKGRmcF9iaW5hcnlfb3ApOiBVc2UgZGVjRmxvYXQgZnVuY3Rpb25zIGluc3RlYWQgb2YgZGVjTnVtYmVyCglmdW5jdGlvbnMgZm9yIGJpbmFyeSBvcGVyYXRpb25zLgoJKGQzMl9iaW5hcnlfb3ApOiBDb252ZXJ0IDMyLWJpdCBvcGVyYW5kcyB0byA2NCBiaXRzIGZvciBldmFsdWF0aW9uLgoJKGRubl9iaW5hcnlfb3ApOiBDYWxsIGRmcF9iaW5hcnlfb3Agd2l0aCBkZWNGbG9hdCByYXRoZXIgdGhhbgoJREZQX0NfVFlQRS4KCShkZnBfY29tcGFyZV9vcCk6IFVzZSBkZWNGbG9hdCBmdW5jdGlvbnMgaW5zdGVhZG9mIGRlY051bWJlcgoJZnVuY3Rpb25zIGZvciBjb21wYXJpc29ucy4KCShkMzJfY29tcGFyZV9vcCk6IENvbnZlcnQgMzItYml0IG9wZXJhbmRzIHRvIDY0IGJpdHMgZm9yIGV2YWx1YXRpb24uCgkoZG5uX2JpbmFyeV9vcCk6IENhbGwgZGZwX2NvbXBhcmVfb3Agd2l0aCBkZWNGbG9hdCByYXRoZXIgdGhhbgoJREZQX0NfVFlQRS4KCShERlBfQURELCBERlBfU1VCLCBERlBfTVVMVElQTEUsIERGUF9ESVZJREUpOiBVc2UgbWFjcm9zIGZvcgoJY2FsbCB0byBkeHhfYmluYXJ5X29wIGFuZCBkZWNGbG9hdCBmdW5jdGlvbi4KCShERlBfRVEsIERGUF9ORSwgREZQX0xULCBERlBfR1QsIERGUF9MRSwgREZQX0dFKTogVXNlIG1hY3JvcyBmb3IKCWNhbGxzIHRvIGR4eF9iaW5hcnlfb3AgYW5kIGRlY0Zsb2F0IGZ1bmN0aW9uLgoJKiBjb25maWcvZGZwLWJpdC5oOiBJbmNsdWRlIGRlY0Zsb2F0IGhlYWRlciBmaWxlcy4KCShkZWNGbG9hdCwgREZQX0JJTkFSWV9PUCwgREZQX0NPTVBBUkVfT1AsIERFQ19GTE9BVF9BREQsCglERUNfRkxPQVRfU1VCVFJBQ1QsIERFQ19GTE9BVF9NVUxUSVBMWSwgREVDX0ZMT0FUX0RJVklERSwKCURFQ19GTE9BVF9DT01QQVJFLCBERUNfRkxPQVRfSVNfWkVSTywgREVDX0ZMT0FUX0lTX05BTiwKCURFQ19GTE9BVF9JU19TSUdORUQ6IERlZmluZSBmb3IgZWFjaCBvZiAzIG9wZXJhbmQgd2lkdGhzLgoKMjAwNy0wOS0xMCAgSGFyc2hhIEphZ2FzaWEgPGhhcnNoYS5qYWdhc2lhQGFtZC5jb20+CgkgICAgSmFuIFNqb2RpbiA8amFuLnNqb2RpbkBhbWQuY29tPgoKCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9hbmFseXplX29wZXJhdGlvbnMpOiBDaGFuZ2UKCWNvbXBhcmlzb24gb2YgbG9vcCBpdGVyYXRpb25zIHdpdGggdGhyZXNob2xkIHRvIGxlc3MgdGhhbgoJb3IgZXF1YWwgdG8gaW5zdGVhZCBvZiBsZXNzIHRoYW4uIFJlZHVjZQoJbWluX3NjYWxhcl9sb29wX2JvdW5kIGJ5IG9uZS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzKTogCglDaGFuZ2UgcHJvbG9ndWUgYW5kIGVwaWxvZ3VlIGl0ZXJhdGlvbnMgZXN0aW1hdGUgdG8gdmYvMiwKCXdoZW4gdW5rbm93biBhdCBjb21waWxlLXRpbWUuIENoYW5nZSB2ZXJzaW9uaW5nIGd1YXJkCgljb3N0IHRvIHRha2VuX2JyYW5jaF9jb3N0LiBJZiBwZWVsaW5nIGZvciBhbGlnbm1lbnQgaXMKCXVua25vd24gYXQgY29tcGlsZS10aW1lLCBjaGFuZ2UgcGVlbCBndWFyZCBjb3N0cyB0byBvbmUKCXRha2VuIGJyYW5jaCBhbmQgb25lIG5vdC10YWtlbiBicmFuY2ggcGVyIHBlZWxlZCBsb29wLgoJSWYgcGVlbGluZyBmb3IgYWxpZ25tZW50IGlzIGtub3duIGJ1dCBudW1iZXIgb2Ygc2NhbGFyIGxvb3AKCWl0ZXJhdGlvbnMgaXMgdW5rbm93biBhdCBjb21waWxlLXRpbWUsIGNoYW5nZSBwZWVsIGd1YXJkCgljb3N0cyB0byBvbmUgdGFrZW4gYnJhbmNoIHBlciBwZWVsZWQgbG9vcC4gQ2hhbmdlIHRoZSBjb3N0Cgltb2RlbCBlcXVhdGlvbiB0byBjb25zaWRlciB2ZWN0b3IgaXRlcmF0aW9ucyBhcyB0aGUgbG9vcAoJaXRlcmF0aW9ucyBsZXNzIHRoZSBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUgaXRlcmF0aW9ucy4KCUNoYW5nZSBvdXRzaWRlIHZlY3RvciBjb3N0IGNoZWNrIHRvIGxlc3MgdGhhbiBvciBlcXVhbCB0bwoJemVybyBpbnN0ZWFkIG9mIGVxdWFsIHRvIHplcm8uCgkodmVjdF9kb19wZWVsaW5nX2Zvcl9sb29wX2JvdW5kKTogUmVkdWNlCgltaW5fc2NhbGFyX2xvb3BfYm91bmQgYnkgb25lLgoJKiB0cmVlLXZlY3Rvcml6ZXIuaDogQWRkIFRBUkdfQ09ORF9UQUtFTl9CUkFOQ0hfQ09TVCBhbmQKCVRBUkdfQ09ORF9OT1RfVEFLRU5fQlJBTkNIX0NPU1QuCQoJKiBjb25maWcvaTM4Ni9pMzg2LmggKHByb2Nlc3Nvcl9jb3N0cyk6IEFkZAoJc2NhbGFyX3N0bXRfY29zdCwgc2NhbGFyX2xvYWRfY29zdCwgc2NhbGFyX3N0b3JlX2Nvc3QsCgl2ZWNfc3RtdF9jb3N0LCB2ZWNfdG9fc2NhbGFyX2Nvc3QsIHNjYWxhcl90b192ZWNfY29zdCwKCXZlY19hbGlnbl9sb2FkX2Nvc3QsIHZlY3RfdW5hbGlnbl9sb2FkX2Nvc3QsCgl2ZWNfc3RvcmVfY29zdCwgY29uZF90YWtlbl9icmFuY2hfY29zdCwKCWNvbmRfbm90X3Rha2VuX2JyYW5jaF9jb3N0LgoJRGVmaW5lIG1hY3JvcyBmb3IgeDg2IGNvc3RzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6Cgkoc2l6ZV9jb3N0KTogU2V0IHNjYWxhcl9zdG10X2Nvc3QsIHNjYWxhcl9sb2FkX2Nvc3QsCglzY2FsYXJfc3RvcmVfY29zdCwgdmVjX3N0bXRfY29zdCwgdmVjX3RvX3NjYWxhcl9jb3N0LAoJc2NhbGFyX3RvX3ZlY19jb3N0LCB2ZWNfYWxpZ25fbG9hZF9jb3N0LCAKCXZlY3RfdW5hbGlnbl9sb2FkX2Nvc3QsIHZlY19zdG9yZV9jb3N0LAoJY29uZF90YWtlbl9icmFuY2hfY29zdCwgY29uZF9ub3RfdGFrZW5fYnJhbmNoX2Nvc3QgdG8gb25lLiAKCShpMzg2X2Nvc3QsIGk0ODZfY29zdCwgcGVudGl1bV9jb3N0LCBwZW50aXVtcHJvX2Nvc3QsCglnZW9kZV9jb3N0LCBrNl9jb3N0LCBhdGhsb25fY29zdCwgcGVudGl1bTRfY29zdCwgbm9jb25hX2Nvc3QsIAoJY29yZTJfY29zdCwgZ2VuZXJpYzY0X2Nvc3QsIGdlbmVyaWMzMl9jb3N0KTogU2V0IHRvIGRlZmF1bHQKCXVudHVuZWQgY29zdHMuCgkoazhfY29zdCwgYW1kZmFtMTBfY29zdCk6IENvc3RzIGZvciB2ZWN0b3JpemF0aW9uIHR1bmVkLgoJKHg4Nl9idWlsdGluX3ZlY3Rvcml6YXRpb25fY29zdCk6IE5ldy4KCjIwMDctMDktMTAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoJICAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZGZwLmM6IEluY2x1ZGUgZGVjaW1hbDEyOExvY2FsLmg7IAoJKGRmcF9ieXRlX3N3YXApOiBSZW1vdmUuCgkoZW5jb2RlX2RlY2ltYWwzMiwgZGVjb2RlX2RlY2ltYWwzMik6IERvbid0IGhhbmRsZSBlbmRpYW5uZXNzLgoJKGVuY29kZV9kZWNpbWFsNjQsIGRlY29kZV9kZWNpbWFsNjQpOiBEaXR0by4KCShlbmNvZGVfZGVjaW1hbDEyOCwgZGVjb2RlX2RlY2ltYWwxMjgpOiBEaXR0by4KCSogY29uZmlnL2RmcC1iaXQuYyAoaG9zdF90b19pZWVlMzIsIGllZWVfdG9faG9zdF8zMik6IERpdHRvLgoJKF9fc3dhcDY0KTogUmVtb3ZlLgoJKGhvc3RfdG9faWVlZV82NCwgaWVlZV90b19ob3N0XzY0KTogRG9uJ3QgaGFuZGxlIGVuZGlhbm5lc3MuCgkoX19zd2FwMTI4KTogUmVtb3ZlCgkoaG9zdF90b19pZWVlXzEyOCwgaWVlZV90b19ob3N0XzEyOCk6IERvbid0IGhhbmRsZSBlbmRpYW5uZXNzLgoJKiBNYWtlZmlsZS5pbiAoREVDTlVNX0gpOiBBZGQgZGVjaW1hbDEyOExvY2FsLmguCgoyMDA3LTA5LTEwICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoVU5TUEVDX01FTU9SWV9CQVJSSUVSKTogTmV3IGVudHJ5IGluCglkZWZpbmVfY29uc3RhbnRzLgoJKG1lbW9yeV9iYXJyaWVyKTogUmV3cm90ZSBhcyBhbiBpbnNuIHRoYXQgY2xvYmJlcnMgbWVtb3J5LgoKMjAwNy0wOS0xMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZ2xvYmFsX3BvaW50ZXIpOiBDaGVjawoJY2FsbF9yZWFsbHlfdXNlZF9yZWdzIGluc3RlYWQgb2YgY2FsbF91c2VkX3JlZ3MuCgkobWlwc19zYXZlX3JlZ19wKTogTGlrZXdpc2UuICBTYXZlIGFsbCBjYWxsLXNhdmVkIHJlZ2lzdGVycwoJaWYgY3VycmVudF9mdW5jdGlvbl9zYXZlc19hbGxfcmVnaXN0ZXJzLiAgRml4IGluZGVudGF0aW9uLgoJTm8gbG9uZ2VyIHRyZWF0ICQxOCBhcyBhIHNwZWNpYWwgY2FzZS4KCShjb21wdXRlX2ZyYW1lX3NpemUpOiBHdWFyZCBGUFIgbG9vcCB3aXRoIFRBUkdFVF9IQVJEX0ZMT0FULgoKMjAwNy0wOS0xMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1JUFNfQVJDSF9GTE9BVF9TUEVDKTogTmV3IG1hY3JvLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY3B1X2luZm9fdGFibGUpOiBNZW50aW9uIGl0IGluIHRoZQoJdGhlIGludHJvZHVjdG9yeSBjb21tZW50LgoJKE1JUFNfTUFSQ0hfQ09OVFJPTFNfU09GVF9GTE9BVCk6IERlbGV0ZS4KCShvdmVycmlkZV9vcHRpb25zKTogRG9uJ3QgdGVzdCBmb3IgaXQuCgkqIGNvbmZpZy9taXBzL3NkZS5oIChNSVBTX01BUkNIX0NPTlRST0xTX1NPRlRfRkxPQVQpOiBEZWxldGUuCgkoRFJJVkVSX1NFTEZfU1BFQ1MpOiBBZGQgTUlQU19BUkNIX0ZMT0FUX1NQRUMuCgkqIGNvbmZpZy9taXBzL3ZyLmg6IEFzIGZvciBjb25maWcvbWlwcy9zZGUuaC4KCjIwMDctMDktMTAgIFRyZXZvciBTbWlnaWVsICA8dHJldm9yX3NtaWdpZWxAcGxheXN0YXRpb24uc29ueS5jb20+CgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0LnNjaGVkKTogTmV3IGZpZWxkOiBzbXNfcmVzX21paS4KCShzdHJ1Y3QgZGRnKTogRGVmaW5lLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9TQ0hFRF9TTVNfUkVTX01JSSk6IERlZmluZS4KCShUQVJHRVRfU0NIRUQpOiBBZGQgVEFSR0VUX1NDSEVEX1NNU19SRVNfTUlJLgoJKiBjb25maWcvc3B1L3NwdS5jOiBJbmNsdWRlIGRkZy5oLgoJKFRBUkdFVF9TQ0hFRF9TTVNfUkVTX01JSSk6IERlZmluZS4KCShzcHVfc21zX3Jlc19taWkpOiBOZXcgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIG1paS4KCSogbW9kdWxvLXNjaGVkIChyZXNfTUlJKTogVXNlIGl0LgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX1NDSEVEX1NNU19SRVNfTUlJLgoKMjAwNy0wOS0xMCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9kdW1wX3Bvb2wpOiBDcmVhdGUgY29weSBvZiBjb25zdGFudAoJcG9vbCBlbnRyaWVzIHNpbmNlIHRoZXkgbWlnaHQgaG9sZCB2YWx1ZXMgdGhhdCBtdXN0IG5vdCBiZSBzaGFyZWQuCgoyMDA3LTA5LTEwIFJvYmVydCBLaWRkIDxya2lkZEBjcmhjLnVpdWMuZWR1PgoKCSogYmItcmVvcmRlci5jIChyZXN0X29mX2hhbmRsZXJfcmVvcmRlcl9ibG9ja3MpOiBSZW1vdmVkIGNhbGwgdG8KCVJUTCBsZXZlbCB0cmFjZXIgcGFzcy4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IE1vdmUgcGFzc190cmFjZXIgZnJvbQoJYWZ0ZXIgcGFzc19ydGxfaWZjdnQgdG8gYWZ0ZXIgcGFzc19kY2UuCgkqIHRyYWNlci5jOiBVcGRhdGUgY29weXJpZ2h0LgoJKGxheW91dF9zdXBlcmJsb2Nrcyk6IFJlbW92ZSBmdW5jdGlvbi4KCShtYXJrX2JiX3NlZW4pOiBOZXcuCgkoYmJfc2Vlbl9wKTogTmV3LgoJKGNvdW50X2luc25zKTogQ2hhbmdlIHRvIGVzdGltYXRlIGluc3RydWN0aW9ucyBpbiBhIFRyZWUtU1NBCglzdGF0ZW1lbnQuCgkoZmluZF90cmFjZSk6IFVzZSBiYl9zZWVuX3AuCgkodGFpbF9kdXBsaWNhdGUpOiBVc2UgYmJfc2Vlbl9wLiAgQ2FsbCBhZGRfcGhpX2FyZ3NfYWZ0ZXJfY29weQoJYWZ0ZXIgZHVwbGljYXRlX2Jsb2NrLgoJKHRyYWNlcik6IENoYW5nZSBwcm90b3R5cGUgdG8gbWF0Y2ggdGhhdCBvZiBhIHBhc3MgZXhlY3V0ZQoJY2FsbGJhY2suCgkoZ2F0ZV90cmFjZXIpOiBSZW5hbWUgZnJvbSBnYXRlX2hhbmRsZV90cmFjZXIuCgkocmVzdF9vZl9oYW5kbGVfdHJhY2VyKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKiBydGwuaDogUmVtb3ZlIHByb3RvdHlwZSBmb3IgdHJhY2VyLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtcHJvZi90cmFjZXItMS5jOiBOZXcuCgoyMDA3LTA5LTEwICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMzM2OQoJKiBjb25maWcvaTM4Ni9zc2UubWQgKGFzaHI8bW9kZT4zKTogQ2hhbmdlIG9wMiBtb2RlIHRvIFNJbW9kZS4KCVVzZSAnTicgb3BlcmFuZCBjb25zdHJhaW50IGZvciBvcDIuCgkobHNocjxtb2RlPjMpOiBEaXR0by4KCShhc2hsPG1vZGU+Myk6IERpdHRvLgoJKHZlY19zaGxfPG1vZGU+KTogVXNlIGNvbnN0XzBfdG9fMjU1X211bF84X29wZXJhbmQgcHJlZGljYXRlIGZvciBvcDIuCgkodmVjX3Nocl88bW9kZT4pOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9idWlsdGluKSBbSVg4Nl9CVUlMVElOX1BTTEw/MTI4LAoJSVg4Nl9CVUlMVElOX1BTUkEqPzEyOCwgSVg4Nl9CVUlMVElOX1BTUkw/MTI4XTogQ29udmVydCBvcDEgdG8gU0ltb2RlLgoKMjAwNy0wOS0xMCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJmaXh1bnNfdHJ1bmM8QkZQOm1vZGU+PEdQUjptb2RlPjIiKToKCUNoYW5nZSBtb2RlIG1hY3JvIGluIHRoZSBsYXN0IHJlYWxfMmV4cE4gcGFyYW1ldGVyIHRvIHVwcGVyY2FzZS4KCjIwMDctMDktMTAgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIHRyZWUtcGFzcy5oIChwYXNzX2NzZWxpbSk6IERlY2xhcmUgbmV3IHBhc3MuCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBMaW5rIGluIHBhc3NfY3NlbGltLgoJKiB0cmVlLXNzYS1waGlvcHQuYyAodHJlZV9zc2FfcGhpb3B0X3dvcmtlcik6IFJlbmFtZWQgZnJvbQoJdHJlZV9zc2FfcGhpb3B0OyBhZGQgZG9fc3RvcmVfZWxpbSBwYXJhbWV0ZXIsIGhhbmRsZSBpdCBieSBjYWxsaW5nCgljb25kX3N0b3JlX3JlcGxhY2VtZW50LgoJKGNvbmRzdG9yZXRlbXApOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGNvbmRfc3RvcmVfcmVwbGFjZW1lbnQpOiBOZXcgZnVuY3Rpb24uCgkodHJlZV9zc2FfcGhpb3B0LCB0cmVlX3NzYV9jc19lbGltKTogTmV3IHdyYXBwZXJzIGFyb3VuZAoJdHJlZV9zc2FfcGhpb3B0X3dvcmtlci4KCShzdHJ1Y3QgbmFtZV90b19iYik6IE5ldy4KCShnZXRfbm9uX3RyYXBwaW5nLCBuYW1lX3RvX2JiX2hhc2gsIG5hbWVfdG9fYmJfZXEsIGFkZF9vcl9tYXJrX2V4cHIsCgludF9pbml0X2Jsb2NrLCBudF9maW5pX2Jsb2NrKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoc2Vlbl9zc2FfbmFtZXMsIG5vbnRyYXBfc2V0KTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkoZ2F0ZV9jc2VsaW0sIHBhc3NfY3NlbGltKTogRGVmaW5lIG5ldyBwYXNzLgoJKiBjb21tb24ub3B0IChmdHJlZS1jc2VsaW0pOiBOZXcgZmxhZy4KCSogdG9wbGV2LmMgKHByb2Nlc3Nfb3B0aW9ucyk6IFNldCBmbGFnX3RyZWVfY3NlbGltIGlmIHJlcXVpcmVkLgoKMjAwNy0wOS0xMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSk6IEZvciByZWNlbnQKCWNhbm9uaWNhbGl6YXRpb24sIGRvbid0IHJlY3Vyc2UgaWYgb3AxIGVxdWFscyBib3RoIFBMVVMgYXJndW1lbnRzLgoKMjAwNy0wOS0wOSAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfc3luY19vcGVyYXRpb24pOiAgVXNlIHBsdXMgaW5zbiBpZiBtaW51cwoJQ09OU1RfSU5UX1AodmFsKS4KCShleHBhbmRfc3luY19mZXRjaF9vcGVyYXRpb24pOiAgRGl0dG8uCgoyMDA3LTA5LTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqZmxvYXRzaXNmMl9taXhlZF92ZWN0b3IpOiBVc2UgY3Z0ZHEycHMgaW5zdGVhZAoJb2YgY3Z0cHEycHMuCgkoKmZsb2F0c2lzZjJfc3NlX3ZlY3Rvcik6IExpa2V3aXNlLgoKMjAwNy0wOS0wOSAgS3Jpc3RlciBXYWxmcmlkc3NvbiAgPGNhdG9AZGYubHRoLnNlPgoKCSogY29uZmlnL25ldGJzZC5oIChIQU5ETEVfUFJBR01BX1BBQ0tfUFVTSF9QT1ApOiBEZWZpbmUgdG8gMS4KCjIwMDctMDktMDkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoaXg4Nl90dW5lX2luZGljZXMpOiBSZW5hbWUKCVg4Nl9VU0VfVkVDVE9SX0NPTlZFUlRTIHRvIFg4Nl9UVU5FX1VTRV9WRUNUT1JfQ09OVkVSVFMuCgkoVEFSR0VUX1VTRV9WRUNUT1JfQ09OVkVSVFMpOiBVcGRhdGVkLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgoKMjAwNy0wOS0wOSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoJICAgIE5pZ2VsIFN0ZXBoZW5zIDxuaWdlbEBtaXBzLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3ZlcmFsbCBPcHRpb25zKTogIEFkZCAuc3ggZmlsZSBleHRlbnNpb24KCWFzIGEgc3lub255bSBmb3IgLlMuCgkqIGNwcHNwZWMuYyAoa25vd25fc3VmZml4ZXMpOiBMaWtld2lzZS4KCSogZ2NjLmMgKGRlZmF1bHRfY29tcGlsZXJzKTogTGlrZXdpc2UuCgoyMDA3LTA5LTA5ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJUFIgdGFyZ2V0LzMwMzE1CgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoQ0FOT05JQ0FMSVpFX0NPTVBBUklTT04pOiBEZWxldGUuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbl8xKTogQWRkIHRoZQoJY2Fub25pY2FsaXphdGlvbiBmcm9tIGkzODYuaC4KCSogZG9jL21kLnRleGkgKENhbm9uaWNhbGl6YXRpb24gb2YgSW5zdHJ1Y3Rpb25zKTogRG9jdW1lbnQgaXQuCgoyMDA3LTA5LTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgRHdhcmFrYW5hdGggUmFqYWdvcGFsIDxkd2FyYWsucmFqYWdvcGFsQGFtZC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKGl4ODZfdHVuZV9pbmRpY2VzKTogQWRkIFg4Nl9VU0VfVkVDVE9SX0NPTlZFUlRTLgoJKFRBUkdFVF9VU0VfVkVDVE9SX0NPTlZFUlRTKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBOZXcgcG9zdC1yZWxvYWQgc3BsaXR0ZXJzIGZvciBjb252ZXJ0aW5nCglTRiB0byBERiBhbmQgREYgdG8gU0YuCgkoZmxvYXRzaSogZXhwYW5kZXIpOiBTcGVjaWFsIGNhc2UgdmVjdG9yIGNvbnZlcnNpb25zLgoJKGZsb2F0c2lzZjJfbWl4ZWRfdmVjdG9yLCBmbG9hdHNpc2YyX3NzZV92ZWN0b3Jfbm9pbnRlcm51bml0LAoJZmxvYXRzaXNmMl9zc2VfdmVjdG9yX2ludGVybnVuaXQsIGZsb2F0c2lzZjJfc3NlX3ZlY3RvciwKCWZsb2F0c2lkZjJfbWl4ZWRfdmVjdG9yLCBmbG9hdHNpZGYyX3NzZV92ZWN0b3IpOiBOZXcuCgkoZmxvYXRzaXNmMl9taXhlZCwgZmxvYXRzaXNmMl9zc2UsIGZsb2F0c2lkZjJfbWl4ZWQsIGZsb2F0c2lkZjJfc3NlKToKCURpc2FibGUgd2hlbiBkb2luZyB2ZWN0b3IgY29udmVydHMuCgkoZmxvYXRzaTxtb2RlPjJfaTM4Nyk6IERpc2FibGUgd2hlbgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHZlY19kdXB2MmRmKTogRXhwb3J0LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdHVuZV9mZWF0dXJlcyk6IEVuYWJsZSBTU0UgY29udmVyc2lvbnMuCgoyMDA3LTA5LTA5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmlydHVhbF9vcGVyYW5kKTogT25seSBtYXJrCglzdG9yZXMgYXMgaGFzX3ZvbGF0aWxlX29wcyBpZiBhbGlhcyBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlLgoKMjAwNy0wOS0wOSAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogZG9jL2NvbnRyaWIudGV4aTogQWRkIG15c2VsZi4KCjIwMDctMDktMDkgIElyYSBSb3NlbiAgPGlyYXJAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5oIChzdG10X3ZpbmZvX3NldF9pbnNpZGVfb2ZfbG9vcF9jb3N0LAoJc3RtdF92aW5mb19zZXRfb3V0c2lkZV9vZl9sb29wX2Nvc3QpOiBOZXcgZnVuY3Rpb25zLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfZ2V0X2Nvc3RfZmllbGRzKTogUmVtb3ZlLgoJKHZlY3RfbW9kZWxfc2ltcGxlX2Nvc3QpOiBDYWxsCglzdG10X3ZpbmZvX3NldF9pbnNpZGUvb3V0c2lkZV9vZl9sb29wX2Nvc3QgdG8gc2V0IHRoZSByZWxldmFudCBjb3N0CglmaWVsZCBpbnN0ZWFkIG9mIGNhbGxpbmcgdmVjdF9nZXRfY29zdF9maWVsZHMuCgkodmVjdF9tb2RlbF9zdG9yZV9jb3N0LCB2ZWN0X21vZGVsX2xvYWRfY29zdCk6IExpa2V3aXNlLgoKMjAwNy0wOS0wOSAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocGFpcmVkX2luaXRfYnVpbHRpbnMpOiBBZGQgY29uc3QKCWRlY2xhcmF0aW9uIHRvIGJkZXNjX3BhaXJlZF9wcmVkcyB2YXJpYWJsZS4KCShwYWlyZWRfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCjIwMDctMDktMDkgIFJldml0YWwgRXJlcyAgPGVyZXNAaWwuaWJtLmNvbT4KCgkqIGRiZ2NudC5kZWYgKHNtc19zY2hlZF9sb29wKTogTmV3IGNvdW50ZXIuCgkqIG1vZHVsby1zY2hlZC5jOiBVc2Ugc21zX3NjaGVkX2xvb3AgaW5zdGVhZCBvZgoJTUFYX1NNU19MT09QX05VTUJFUiB0byBkZXRlcm1pbmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxvb3BzIHRvCglwZXJmb3JtIHN3aW5nIG1vZHVsbyBzY2hlZHVsaW5nIG9uLiAgSW5jbHVkZSBkYmdjbnQuaC4KCSogTWFrZWZpbGUuaW46IEFkZCBEQkdDTlRfSCB0byBtb2R1bG8tc2NoZWQuby4KCSogcGFyYW1zLmRlZjogUmVtb3ZlIFBBUkFNX01BWF9TTVNfTE9PUF9OVU1CRVIuCgoyMDA3LTA5LTA5ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoWDg3TU9ERUYxMiwgU1NFTU9ERUYpOiBSZW1vdmUgbW9kZSBpdGVyYXRvcnMuCglTdWJzdGl0dXRlIGFsbCB1c2VzIHdpdGggLi4uCgkoTU9ERUYpOiBOZXcgbW9kZSBpdGVyYXRvci4KCgkoZml4X3RydW5jPG1vZGU+X2Zpc3R0cF9pMzg3XzEpOiBSZW1vdmUgb3BlcmFuZCBjb25zdHJhaW50cwoJZnJvbSBwcmUtcmVnYWxsb2MgZGVmaW5lX2luc25fYW5kX3NwbGl0IHNwbGl0dGVyIHBhdHRlcm4uCgkoKmZpeF90cnVuYzxtb2RlPl9pMzg3XzEpOiBEaXR0by4KCSgqZmlzdGRpMl8xKTogRGl0dG8uCgkoKmZpc3Q8bW9kZT4yXzEpOiBEaXR0by4KCShmcm5kaW50eGYyX2Zsb29yKTogRGl0dG8uCgkoKmZpc3Q8bW9kZT4yX2Zsb29yXzEpOiBEaXR0by4KCShmcm5kaW50eGYyX2NlaWwpOiBEaXR0by4KCSgqZmlzdDxtb2RlPjJfY2VpbF8xKTogRGl0dG8uCgkoZnJuZGludHhmMl90cnVuYyk6IERpdHRvLgoJKGZybmRpbnR4ZjJfbWFza19wbSk6IERpdHRvLgoKCShwcm9sb2d1ZSk6IFVzZSAoY29uc3RfaW50IDApIGFzIG5ldmVyIGdlbmVyYXRlZCBmaWxsZXIgaW5zbi4KCShlcGlsb2d1ZSk6IERpdHRvLgoJKHNpYmNhbGxfZXBpbG9ndWUpOiBEaXR0by4KCShlaF9yZXR1cm5fc2kpOiBEaXR0by4KCShlaF9yZXR1cm5fZGkpOiBEaXR0by4KCgkoYWRkPG1vZGU+Myk6IFJlbmFtZSBmcm9tIGFkZGRmMyBhbmQgYWRkc2YzLiAgTWFjcm9pemUgZXhwYW5kZXIKCXVzaW5nIE1PREVGIG1vZGUgaXRlcmF0b3IuCgkoc3ViPG1vZGU+Myk6IFJlbmFtZSBmcm9tIHN1YmRmMyBhbmQgc3Vic2YzLiAgTWFjcm9pemUgZXhwYW5kZXIKCXVzaW5nIE1PREVGIG1vZGUgaXRlcmF0b3IuCgkobXVsPG1vZGU+Myk6IFJlbmFtZSBmcm9tIG11bGRmMyBhbmQgbXVsc2YzLiAgTWFjcm9pemUgZXhwYW5kZXIKCXVzaW5nIE1PREVGIG1vZGUgaXRlcmF0b3IuCgkobmVhcmJ5aW50PG1vZGU+Mik6IFJlbmFtZSBmcm9tIG5lYXJieWludGRmMiBhbmQgbmVhcmJ5aW50c2YyLgoJTWFjcm9pemUgZXhwYW5kZXIgdXNpbmcgTU9ERUYgbW9kZSBpdGVyYXRvci4KCgkoemVyb19leHRlbmRzaWRpMik6IFJlbW92ZSBvcGVyYW5kIGNvbnN0cmFpbnRzIGZyb20gZXhwYW5kZXIuCgkoc211bGRpM19oaWdocGFydCk6IERpdHRvLgoJKGluZGlyZWN0X2p1bXApOiBEaXR0by4KCSh0YWJsZWp1bXApOiBEaXR0by4KCShyc3FydHNmMik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHN0b3JlbnR2NHNmKTogRGl0dG8uCgkoc3RvcmVudHYyZGYpOiBEaXR0by4KCShzdG9yZW50djJkaSk6IERpdHRvLgoJKHN0b3JlbnRzaSk6IERpdHRvLgoJKHNzZTJfY3Z0cGQycHMpOiBEaXR0by4KCSh2ZWNfaW50ZXJsZWF2ZV9oaWdodjE2cWkpOiBEaXR0by4KCSh2ZWNfaW50ZXJsZWF2ZV9sb3d2MTZxaSk6IERpdHRvLgoJKHZlY19pbnRlcmxlYXZlX2hpZ2h2OGhpKTogRGl0dG8uCgkodmVjX2ludGVybGVhdmVfbG93djhoaSk6IERpdHRvLgoJKHZlY19pbnRlcmxlYXZlX2hpZ2h2NHNpKTogRGl0dG8uCgkodmVjX2ludGVybGVhdmVfbG93djRzaSk6IERpdHRvLgoJKHZlY19pbnRlcmxlYXZlX2hpZ2h2MmRpKTogRGl0dG8uCgkodmVjX2ludGVybGVhdmVfbG93djJkaSk6IERpdHRvLgoJKHNzZTJfbWFza21vdmRxdSk6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9tbXgubWQgKG1teF9tYXNrbW92cSk6IERpdHRvLgoKMjAwNy0wOS0wOSAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmggKGVudW0gdmVjdF9kZWZfdHlwZSk6IFN0YXJ0IGVudW1lcmF0aW9uIGZyb20gMS4KCShzdHJ1Y3QgX3NscF90cmVlLCBzdHJ1Y3QgX3NscF9pbnN0YW5jZSk6IERlZmluZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzCglhbG9uZyBtYWNyb3MgZm9yIHRoZWlyIGFjY2Vzcy4KCShzdHJ1Y3QgX2xvb3BfdmVjX2luZm8pOiBEZWZpbmUgbmV3IGZpZWxkczogc3RyaWRlZF9zdG9yZXMsCglzbHBfaW5zdGFuY2VzLCBhbmQgc2xwX3Vucm9sbGluZ19mYWN0b3IgYWxvbmcgbWFjcm9zIGZvciB0aGVpciBhY2Nlc3MuCgkoZW51bSBzbHBfdmVjdF90eXBlKTogTmV3LgoJKHN0cnVjdCBfc3RtdF92ZWNfaW5mbyk6IERlZmluZSBuZXcgZmllbGQsIHNscF90eXBlLCBhbmQgbWFjcm9zIGZvcgoJaXRzIGFjY2Vzcy4KCShTVE1UX1ZJTkZPX1NUUklERURfQUNDRVNTKTogTmV3IG1hY3JvLgoJKHZlY3RfZnJlZV9zbHBfdHJlZSk6IERlY2xhcmUuCgkodmVjdG9yaXphYmxlX2xvYWQpOiBBZGQgYW4gYXJndW1lbnQgb2YgdHlwZSBzbHBfdHJlZS4KCSh2ZWN0b3JpemFibGVfc3RvcmUsIHZlY3Rvcml6YWJsZV9vcGVyYXRpb24sIHZlY3Rvcml6YWJsZV9jb252ZXJzaW9uLAoJdmVjdG9yaXphYmxlX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCSh2ZWN0X21vZGVsX3NpbXBsZV9jb3N0LCB2ZWN0X21vZGVsX3N0b3JlX2Nvc3QsIHZlY3RfbW9kZWxfbG9hZF9jb3N0KToKCURlY2xhcmUgKG1ha2UgZXh0ZXJuKS4KCSogdHJlZS12ZWN0b3JpemVyLmMgKG5ld19zdG10X3ZlY19pbmZvKTogSW5pdGlhbGl6ZSB0aGUgbmV3IGZpZWxkLgoJKG5ld19sb29wX3ZlY19pbmZvKTogTGlrZXdpc2UuCgkoZGVzdHJveV9sb29wX3ZlY19pbmZvKTogRnJlZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBTTFAgc3RydWN0dXJlcy4KCSogdHJlZS12ZWN0LWFuYWx5emUuYzogSW5jbHVkZSByZWNvZy5oLgoJKHZlY3RfdXBkYXRlX3NscF9jb3N0c19hY2NvcmRpbmdfdG9fdmYpOiBOZXcuCgkodmVjdF9hbmFseXplX29wZXJhdGlvbnMpOiBBZGQgYXJndW1lbnQgZm9yIGNhbGxzIHRvIHZlY3Rvcml6YWJsZV8gKCkKCWZ1bmN0aW9ucy4gRm9yIG5vdCBwdXJlIFNMUCBzdG10cyB3aXRoIHN0cmlkZWQgYWNjZXNzIGNoZWNrIHRoYXQgdGhlCglncm91cCBzaXplIGlzIHBvd2VyIG9mIDIuIFVwZGF0ZSB0aGUgdmVjdG9yaXphdGlvbiBmYWN0b3IgYWNjb3JkaW5nIHRvCglTTFAuIENhbGwgdmVjdF91cGRhdGVfc2xwX2Nvc3RzX2FjY29yZGluZ190b192Zi4KCSh2ZWN0X2FuYWx5emVfZ3JvdXBfYWNjZXNzKTogTmV3LgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZl9hY2Nlc3MpOiBDYWxsIHZlY3RfYW5hbHl6ZV9ncm91cF9hY2Nlc3MuCgkodmVjdF9mcmVlX3NscF90cmVlKTogTmV3IGZ1bmN0aW9ucy4KCSh2ZWN0X2dldF9hbmRfY2hlY2tfc2xwX2RlZnMsIHZlY3RfYnVpbGRfc2xwX3RyZWUsIHZlY3RfcHJpbnRfc2xwX3RyZWUsCgl2ZWN0X21hcmtfc2xwX3N0bXRzLCB2ZWN0X2FuYWx5emVfc2xwX2luc3RhbmNlLCB2ZWN0X2FuYWx5emVfc2xwLAoJdmVjdF9tYWtlX3NscF9kZWNpc2lvbiwgdmVjdF9kZXRlY3RfaHlicmlkX3NscF9zdG10cywKCXZlY3RfZGV0ZWN0X2h5YnJpZF9zbHApOiBMaWtld2lzZS4KCSh2ZWN0X2FuYWx5emVfbG9vcCk6IENhbGwgdmVjdF9hbmFseXplX3NscCwgdmVjdF9tYWtlX3NscF9kZWNpc2lvbgoJYW5kIHZlY3RfZGV0ZWN0X2h5YnJpZF9zbHAuCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJsZV9pdGVycyk6IFRha2UKCVNMUCBjb3N0cyBpbnRvIGFjY291bnQuCgkodmVjdF9nZXRfY29zdF9maWVsZHMpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9tb2RlbF9zaW1wbGVfY29zdCk6IE1ha2UgZXh0ZXJuLCBhZGQgU0xQIHBhcmFtZXRlciBhbmQgaGFuZGxlCglTTFAuCgkodmVjdF9tb2RlbF9zdG9yZV9jb3N0LCB2ZWN0X21vZGVsX2xvYWRfY29zdCk6IExpa2V3aXNlLgoJKHZlY3RfZ2V0X2NvbnN0YW50X3ZlY3RvcnMpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9nZXRfc2xwX3ZlY3RfZGVmcywgdmVjdF9nZXRfc2xwX2RlZnMsCgl2ZWN0X2dldF92ZWNfZGVmc19mb3Jfc3RtdF9jb3B5LCB2ZWN0X2dldF92ZWNfZGVmc19mb3Jfc3RtdF9jb3B5LAoJdmVjdF9nZXRfdmVjX2RlZnMpOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfcmVkdWN0aW9uKTogRG9uJ3QgaGFuZGxlIFNMUCBmb3Igbm93LgoJKHZlY3Rvcml6YWJsZV9jYWxsKTogRG9uJ3QgaGFuZGxlIFNMUCBmb3Igbm93LiBBZGQgYXJndW1lbnQgdG8KCXZlY3RfbW9kZWxfc2ltcGxlX2Nvc3QuCgkodmVjdG9yaXphYmxlX2NvbnZlcnNpb24pOiBIYW5kbGUgU0xQIChjYWxsIHZlY3RfZ2V0X3ZlY19kZWZzIHRvCglnZXQgU0xQZWQgYW5kIHZlY3Rvcml6ZWQgZGVmcykuIEZpeCBpbmRlbnRhdGlvbiBhbmQgc3BhY2luZy4KCSh2ZWN0b3JpemFibGVfYXNzaWdubWVudCk6IEhhbmRsZSBTTFAuCgkodmVjdG9yaXphYmxlX2luZHVjdGlvbik6IERvbid0IGhhbmRsZSBTTFAgZm9yIG5vdy4KCSh2ZWN0b3JpemFibGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX3R5cGVfZGVtb3Rpb24pOiBBZGQgYXJndW1lbnQgdG8KCXZlY3RfbW9kZWxfc2ltcGxlX2Nvc3QuCgkodmVjdG9yaXphYmxlX3R5cGVfcHJvbW90aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX3N0b3JlLCB2ZWN0b3JpemFibGVfbG9hZCk6IEhhbmRsZSBTTFAuCgkodmVjdG9yaXphYmxlX2NvbmRpdGlvbik6IERvbid0IGhhbmRsZSBTTFAgZm9yIG5vdy4KCSh2ZWN0X3RyYW5zZm9ybV9zdG10KTogQWRkIGEgbmV3IGFyZ3VtZW50IGZvciBTTFAuIENoZWNrIHRoYXQgdGhlcmUgaXMKCW5vIFNMUCB0cmFuc2Zvcm1hdGlvbiByZXF1aXJlZCBmb3IgdW5zdXBwb3J0ZWQgY2FzZXMuIEFkZCBTTFAKCWFyZ3VtZW50IGZvciBzdXBwb3J0ZWQgY2FzZXMuCgkodmVjdF9yZW1vdmVfc3RvcmVzKTogTmV3IGZ1bmN0aW9uLgoJKHZlY3Rfc2NoZWR1bGVfc2xwX2luc3RhbmNlLCB2ZWN0X3NjaGVkdWxlX3NscCk6IExpa2V3aXNlLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBTY2hlZHVsZSBTTFAgaW5zdGFuY2VzLgoJKiBNYWtlZmlsZS5pbjogKHRyZWUtdmVjdC1hbmFseXplLm8pOiBEZXBlbmQgb24gcmVjb2cuaC4KCjIwMDctMDktMDkgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogb3B0YWJzLmMgKHNpZ25fZXhwYW5kX2Jpbm9wKTogU2V0IGxpYmNhbGxfZ2VuID0gTlVMTCBpbiB0aGUgZmFrZQoJc2lnbmVkIG9wdGFiLgoKMjAwNy0wOS0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJRGl2aWRlIFJFR19MQUJFTCBub3RlcyBpbnRvIFJFR19MQUJFTF9PUEVSQU5EIGFuZCBSRUdfTEFCRUxfVEFSR0VULgoJKiBkb2MvcnRsLnRleGkgKEluc25zKTogU3BlY2lmeSB3aGVuIGEgbGFiZWxfcmVmIG1ha2VzIGEganVtcF9pbnNuLgoJU2ltaWxhciBmb3Igd2hhdCBsYWJlbF9yZWZzIGNhbiBnbyBpbiB0aGUgSlVNUF9UQVJHRVQgZmllbGQuICBTcGxpdAoJUkVHX0xBQkVMIGRvY3VtZW50YXRpb24gaW50byBSRUdfTEFCRUxfVEFSR0VUIGFuZCBSRUdfTEFCRUxfT1BFUkFORC4KCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IEdlbmVyYXRlIFJFR19MQUJFTF9PUEVSQU5ELCBub3QKCVJFR19MQUJFTCB3aGVuIHJlcGxhY2luZyBhbiBvcGVyYW5kIHdpdGggYSBMQUJFTF9SRUYgZm9yIGEKCW5vbi1qdW1wIGluc24uCgkoc3Vic3RfcmVsb2Fkcyk6IFdoZW4gcmVwbGFjaW5nIGEgTEFCRUxfUkVHIHdpdGggYSByZWdpc3RlciwKCWluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIFJFR19MQUJFTCBub3RlLCBhc3NlcnQgdGhhdCB0aGVyZSBhbHJlYWR5CglpcyBvbmUgb3IgdGhhdCB0aGUgbGFiZWwgaXMgYSBrbm93biB0YXJnZXQgZm9yIHRoZSBpbnNuLgoJKiBydGxhbmFsLmMgKGNvbXB1dGVkX2p1bXBfcCk6IEluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBSRUdfTEFCRUwKCW5vdGUsIGNoZWNrIHRoZSBKVU1QX0xBQkVMIGZpZWxkLiAgUmVtb3ZlICJlbHNlIiBhZnRlciByZXR1cm4uCgkqIHJlb3JnLmMgKGVtaXRfZGVsYXlfc2VxdWVuY2UpOiBSZXBsYWNlIGNhc2UgZm9yIFJFR19MQUJFTCB3aXRoCgljYXNlcyBmb3IgUkVHX0xBQkVMX09QRVJBTkQgYW5kIFJFR19MQUJFTF9UQVJHRVQuCgkoZmlsbF9zbG90c19mcm9tX3RocmVhZCk6IEhhbmRsZSBib3RoIFJFR19MQUJFTF9PUEVSQU5EIGFuZAoJUkVHX0xBQkVMX1RBUkdFVCBub3RlcywgaW5jbHVkaW5nIHRoZSBKVU1QX1RBUkdFVCBmaWVsZCBvbiBKVU1QX1AKCWluc25zLiAgSXRlcmF0ZSBvdmVyIGFsbCBub3RlczsgZG9uJ3QgYXNzdW1lIHRoZXJlJ3Mgb25seSBvbmUuCgkqIGNzZS5jIChyZWNvcmRlZF9sYWJlbF9yZWYpOiBBZGp1c3QgY29tbWVudCB0byByZWZlciB0bwoJUkVHX0xBQkVMX09QRVJBTkQuCgkoY3NlX2V4dGVuZGVkX2Jhc2ljX2Jsb2NrKTogRG8gTEFCRUxfUkVGIGNoZWNrIGZvciBhbGwgSU5TTl9QCglpbnNucywgbm90IGp1c3QgTk9OSlVNUF9JTlNOX1AuCgkoY2hlY2tfZm9yX2xhYmVsX3JlZik6IEZvciBKVU1QX1AgaW5zbnMsIGNoZWNrIHRoYXQgdGhlIExBQkVMX1JFRgoJaXNuJ3QgYSBqdW1wIHRhcmdldC4KCSoganVtcC5jIChyZWJ1aWxkX2p1bXBfbGFiZWxzKTogQWRqdXN0IGhlYWQgY29tbWVudC4KCShpbml0X2xhYmVsX2luZm8pOiBEaXR0by4gIFJlbW92ZSBSRUdfTEFCRUxfT1BFUkFORCBub3RlcyBvbmx5OwoJZG9uJ3QgcmVzZXQgUkVHX0xBQkVMX1RBUkdFVCBub3RlcywgaW5jbHVkaW5nIHRoZSBKVU1QX0xBQkVMIGZpZWxkLgoJKG1hcmtfYWxsX2xhYmVscyk6IEZvciBKVU1QX1AgaW5zbnMgd2l0aG91dCBhIHRhcmdldCwgY2hlY2sgaWYgdGhlCgl0aGUgdGFyZ2V0IGlzIG5vdGVkIG9uIHRoZSBwcmV2aW91cyBub25qdW1wIGluc24uCgkobWFya19qdW1wX2xhYmVsXzEpOiBOZXcgZnVuY3Rpb24sIGd1dHMgZnJvbSBtYXJrX2p1bXBfbGFiZWwuCgk8Y2FzZSBJRl9USEVOX0VMU0U+OiBIYW5kbGUgZmlyc3Qgb3BlcmFuZCBhcyBhIG5vbi10YXJnZXQgd2hlbgoJbWFya2luZyBqdW1wIHRhcmdldCBsYWJlbHMuCgk8Y2FzZSBMQUJFTF9SRUY+OiBBZGp1c3QgZm9yIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYQoJUkVHX0xBQkVMX1RBUkdFVCBvciBhIFJFR19MQUJFTF9PUEVSQU5EIG5vdGUuCglGb3IgJ0UnIGZvcm1hdCBydGwsIGl0ZXJhdGUgaW4gZGVzY2VuZGluZyBlbGVtZW50IG9yZGVyLgoJKGRlbGV0ZV9yZWxhdGVkX2luc25zKTogSGFuZGxlIGJvdGggUkVHX0xBQkVMX1RBUkdFVCBhbmQKCVJFR19MQUJFTF9PUEVSQU5EIG5vdGVzLiAgRm9yIEpVTVBfUCBpbnNucyB3aXRoIGxhYmVscyB3aXRoIHplcm8KCXJlZmVyZW5jZSBjb3VudCwgZGVsZXRlIGFuZCBmYWxsdGhyb3VnaC4gIE1vdmUgZmluZGluZy1uZXh0LQoJbm9uLWRlbGV0ZWQgaW5zbiBsYXN0IGluIHRoZSBmdW5jdGlvbi4gIExvb2sgYXQgYWxsIElOU05fUCBpbnNucwoJZm9yIFJFR19MQUJFTF9PUEVSQU5EIG5vdGVzLgoJKHJlZGlyZWN0X2p1bXBfMik6IEFzc2VydCB0aGF0IE9MQUJFTCBlcXVhbHMgdGhlIG9sZCBKVU1QX0xBQkVMIG9mCglKVU1QLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogRm9yIEpVTVBfUCBpbnNucyBhbmQgYSBub24tTlVMTAoJSlVNUF9MQUJFTCwgb3V0cHV0IHRoZSBJTlNOX1VJRCBvZiBpdC4KCSogZ2NzZS5jOiBBZGp1c3QgY29tbWVudHMgYXMgYXBwcm9wcmlhdGUgdG8gc2F5IFJFR19MQUJFTF9PUEVSQU5ECglhbmQvb3IgUkVHX0xBQkVMX1RBUkdFVC4KCShhZGRfbGFiZWxfbm90ZXMpOiBPbmx5IGFkZCBSRUdfTEFCRUxfT1BFUkFORCBub3Rlcy4gIFB1dCBpbiBsaW5lCgl3aXRoIGp1bXAuYyBjb3B5IGJ5IG9ubHkgYWRkaW5nIG5vdGVzIGZvciBsYWJlbHMgYWN0dWFsbHkKCXJlZmVyZW5jZWQgaW4gdGhlIGluc24uCgkqIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IERvbid0IGFzc3VtZSBvbmx5IE5PTkpVTVBfSU5TTl9QIG5lZWQKCXVzYWdlIGNvdW50IGluY3JlbWVudDsgaGFuZGxlIGFsbCBJTlNOX1AgdHJpYWwgaW5zbnMuCgkoZW1pdF9jb3B5X29mX2luc25fYWZ0ZXIpOiBDaGFuZ2UgdG8gbm90IGNvcHkgUkVHX0xBQkVMX09QRVJBTkQKCW5vdGVzLgoJKiBydGwuaCAoc3RydWN0IHJ0eF9kZWYpIDx2b2xhdGlsPjogQWRqdXN0IHRvIG1lbnRpb24KCVJFR19MQUJFTF9UQVJHRVQgYW5kIFJFR19MQUJFTF9PUEVSQU5ELgoJKExBQkVMX1JFRl9OT05MT0NBTF9QKTogQWxsb3cgUkVHX0xBQkVMX1RBUkdFVCBhbmQKCVJFR19MQUJFTF9PUEVSQU5ELgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBBZGp1c3QgZm9yIFJFR19MQUJFTF9UQVJHRVQgb24KCUpVTVBfUCBpbnNucyBhbmQgUkVHX0xBQkVMX09QRVJBTkQgZXZlcnl3aGVyZS4KCSogc2NoZWQtcmduLmMgKGlzX2NmZ19ub25yZWd1bGFyKTogQ2hlY2sgZm9yIFJFR19MQUJFTF9PUEVSQU5EUwoJb24gYWxsIElOU05fUCBpbnNucy4KCSogcmVnLW5vdGVzLmRlZiAoTEFCRUxfVEFSR0VULCBMQUJFTF9PUEVSQU5EKTogU3BsaXQgZnJvbSBMQUJFTC4KCSogY2ZncnRsLmMgKGRlbGV0ZV9pbnNuKTogQWRqdXN0IHRvIGhhbmRsZSBSRUdfTEFCRUxfVEFSR0VUIGFuZAoJUkVHX0xBQkVMX09QRVJBTkQgbm90ZXMuCgkqIHJlbG9hZDEuYyAoY2FsY3VsYXRlX25lZWRzX2FsbF9pbnNucyk6IEFkanVzdCBjb21tZW50cy4KCShzZXRfbGFiZWxfb2Zmc2V0cyk6IEFkanVzdCB0byBsb29rIGZvciBSRUdfTEFCRUxfT1BFUkFORCBub3Rlcy4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChzcGxpdCBmb3IgbG9hZCBvZiBhbiBhZGRyZXNzIGludG8gYQoJZm91ci1pbnNuIHNlcXVlbmNlIG9uIFVuaWNvcy9Nayk6IEFkanVzdCB0byB1c2UKCVJFR19MQUJFTF9PUEVSQU5ELgoJKiBjb25maWcvc2gvc2gubWQgKHNoX3Jlb3JnLCBmaW5hbF9wcmVzY2FuX2luc24pOiBEaXR0by4KCjIwMDctMDktMDkgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cnluYXMuYml2ZWluaXNAZ21haWwuY29tPgoKCVJldmVydDoKCTIwMDctMDktMDUgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cnluYXMuYml2ZWluaXNAZ21haWwuY29tPgoJKiByZWdyZW5hbWUuYyAoY29weXByb3BfaGFyZHJlZ19mb3J3YXJkXzEpOiBOZXcgdmFyaWFibGUgbmV4dC4gVXNlCglGT1JfQkJfSU5TTlNfU0FGRSBpbnN0ZWFkIG9mIGZvciBsb29wLgoJKiBjc2UuYyAoY3NlX2V4dGVuZGVkX2Jhc2ljX2Jsb2NrKTogTGlrZXdpc2UuCgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NzZV9yZWdzXzEpOiBOZXcgdmFyaWFibGUgbmV4dC4gTWFrZSBzdXJlCgl0aGF0IHRoZSBmb3IgbG9vcCBkb2VzIG5vdCBpbnZva2UgTkVYVF9JTlNOIG9uIGEgZGVsZXRlZCBpbnNuLgoJKiBmdW5jdGlvbi5jIChpbnN0YW50aWF0ZV92aXJ0dWFsX3JlZ3MpOiBMaWtld2lzZS4KCSogbG93ZXItc3VicmVnLmMgKHJlbW92ZV9yZXR2YWxfbm90ZSk6IExpa2V3aXNlLgoJKGRlY29tcG9zZV9tdWx0aXdvcmRfc3VicmVncyk6IFVzZSBGT1JfQkJfSU5TTlNfU0FGRSBpbnN0ZWFkIG9mCglGT1JfQkJfSU5TTlMuCgkqIGVtaXQtcnRsLmMgKHJlbW92ZV9pbnNuKTogU2V0IE5FWFRfSU5TTiBhbmQgUFJFVl9JTlNOIHRvIE5VTEwgb24KCWEgZGVsZXRlZCBpbnNuLgoJKiBjZmdydGwuYyAoZGVsZXRlX2luc24pOiBTZXQgSlVNUF9MQUJFTCB0byBOVUxMIG9uIGEgZGVsZXRlZAoJaW5zbiwgaWYgaXQncyBhIGp1bXAuCgkodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogTmV3IHZhcmlhYmxlIGp1bXBfcC4gQ2FsbAoJdGFibGVqdW1wX3AgYmVmb3JlIGRlbGV0ZV9pbnNuX2NoYWluLgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IE5ldyB2YXJpYWJsZSBuZXh0LiBNYWtlIHN1cmUgdGhhdCB0aGUgZm9yCglsb29wIGRvZXMgbm90IGludm9rZSBORVhUX0lOU04gb24gYSBkZWxldGVkIGluc24uCgkoZml4dXBfZWhfcmVnaW9uX25vdGUpOiBNYWtlIHRoZSBsb29wIHRlcm1pbmF0ZSBpZiBpIGJlY29tZXMgTlVMTC4KCShkZWxldGVfb3V0cHV0X3JlbG9hZCk6IE5ldyB2YXJpYWJsZSBwcmV2LiBNYWtlIHN1cmUgdGhlIHRoZSBmb3IKCWxvb3BzIGRvIG5vdCBpbnZva2UgUFJFVl9JTlNOIG9uIGEgZGVsZXRlZCBpbnNuLgoKMjAwNy0wOS0wOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhL2NvbnN0cmFpbnRzLm1kOiBSZW1vdmUgJ1gnIGZyb20gdW51c2VkIGxldHRlcnMgY29tbWVudC4KCjIwMDctMDktMDggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtdGFpbGNhbGwuYyAoZmluZF90YWlsX2NhbGxzKTogSWYgd2UgZG9uJ3QgaGF2ZSBhbGlhc2VzCgljb21wdXRlZCBjaGVjayBzdG10X2Fubi0+cmVmZXJlbmNlc19tZW1vcnkgaW5zdGVhZCBvZiBjb3VudGluZwoJdmlydHVhbCBvcGVyYW5kcy4KIAoyMDA3LTA5LTA4ICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCgkqIGNzZS5jIChmb2xkX3J0eCk6IFVzZSB2YWxpZGF0ZV91bnNoYXJlX2NoYW5nZSgpIGluc3RlYWQgb2YKCXZhbGlkYXRlX2NoYW5nZSgpIGluIG9uZSBtb3JlIGNhc2UuCgoyMDA3LTA5LTA4ICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjI4MwoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChtYXlfZWxpbWluYXRlX2l2KTogVXNlCgllc3RpbWF0ZWRfbG9vcF9pdGVyYXRpb25zLgoJKGRldGVybWluZV91c2VfaXZfY29zdF9jb25kaXRpb24pOiBEZWNyZWFzZSBjb3N0IG9mIGV4cHJlc3Npb25zCgl1c2VkIGluIGl2IGVsaW1pbmF0aW9uLgoKMjAwNy0wOS0wOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1jZmcuYyAodmVyaWZ5X2dpbXBsZV9leHByKTogQXZvaWQgYnVpbGRpbmcgbmV3Cglwb2ludGVyIHR5cGVzLCB1c2UgVFlQRV9QT0lOVEVSX1RPIGlmIGF2YWlsYWJsZSBpbnN0ZWFkLgoKMjAwNy0wOS0wOCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMzMzMjkKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjY0NDkKCSogY29uZmlnL2kzODYvc3NlLm1kIChtdWx2NHNpMyk6IERvIG5vdCBleHBhbmQgc3NlMiBzZXF1ZW5jZS4KCSgqc3NlMl9tdWx2NHNpMyk6IE5ldyBkZWZpbmVfaW5zbl9hbmRfc3BsaXQgcGF0dGVybi4gU3BsaXQgaW5zbiBpbgoJc3BsaXQxIHBhc3MuCgkobXVsdjE2cWkzKTogSW1wbGVtZW50IGFzIGRlZmluZV9pbnNuX2FuZF9zcGxpdCBwYXR0ZXJuIGluc3RlYWQgb2YKCWRlZmluZV9leHBhbmQuICBTcGxpdCBpbnNuIGluIHNwbGl0MSBwYXNzLgoJKG11bHYyZGkzKTogRGl0dG8uCgoyMDA3LTA5LTA4ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzMzAxCgkqIHRyZWUtdmVjdC1hbmFseXplIChhbmFseXplX29wZXJhdGlvbnMpOiBMb29rIGF0IHRoZSB0eXBlIG9mIHRoZSByaHMKCXdoZW4gcmVsZXZhbnQuCgoyMDA3LTA5LTA3ICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjE4MwoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2EtcmVhc3NvYy5vKTogQWxzbyBkZXBlbmQgb24gJChDRkdMT09QX0gpLgoKCSogdHJlZS1zc2EtcmVhc3NvYy5jOiBJbmNsdWRlIGNmZ2xvb3AuaC4KCShpc19yZWFzc29jaWFibGVfb3ApOiBBZGQgYSBsb29wIGFyZ3VtZW50IGFuZCByZXR1cm4gdHJ1ZSBvbmx5Cglmb3IgaW5zaWRlIGxvb3AuCgkobGluZWFyaXplX2V4cHIpOiBVcGRhdGVkLgoJKHNob3VsZF9icmVha191cF9zdWJ0cmFjdCk6IExpa2V3aXNlLgoJKGxpbmVhcml6ZV9leHByX3RyZWUpOiBMaWtld2lzZS4KCShpbml0X3JlYXNzb2MpOiBDYWxsIGxvb3Bfb3B0aW1pemVyX2luaXQgd2l0aAoJQVZPSURfQ0ZHX01PRElGSUNBVElPTlMuICBSZW1vdmUgY2FsY3VsYXRlX2RvbWluYW5jZV9pbmZvIGNhbGwKCXdpdGggQ0RJX0RPTUlOQVRPUlMuCgkoZmluaV9yZWFzc29jKTogQ2FsbCBsb29wX29wdGltaXplcl9maW5hbGl6ZS4KCjIwMDctMDktMDcgIFN0ZXJsaW5nIEF1Z3VzdGluZSAgPHN0ZXJsaW5nQHRlbnNpbGljYS5jb20+CgoJKiBjb25maWcveHRlbnNhL2xpYjJmdW5jcy5TIChfX3h0ZW5zYV9zeW5jX2NhY2hlcyk6IFVzZSBhbiBJU1lOQyBldmVuCglpZiB0aGVyZSBpcyBubyBpLWNhY2hlLgoKMjAwNy0wOS0wNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVJlYXBwbHkKCTIwMDctMDktMDYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjU4NgoJKiB0cmVlLXNzYS1zY2N2bi5jIChzaW1wbGlmeV9iaW5hcnlfZXhwcmVzc2lvbik6IEF2b2lkCglmb2xkaW5nIGlmIG5vdGhpbmcgY2hhbmdlZC4KCShzaW1wbGlmeV91bmFyeV9leHByZXNzaW9uKTogTmV3IGZ1bmN0aW9uLiAgRG8gdHJlZSBjb21iaW5pbmcKCW9uIGNvbnZlcnNpb24gbGlrZSBjb2Rlcy4KCSh0cnlfdG9fc2ltcGxpZnkpOiBDYWxsIGl0LgoKMjAwNy0wOS0wNyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0YXJnZXQvMzMyODYKCSogZ3Roci1wb3NpeC5oIChfX2d0aHJlYWRfYWN0aXZlX3ApOiBBZGQgaW1wbGVtZW50YXRpb24gZm9yIGhwcGEtaHB1eC4KCShfX2d0aHJlYWRfYWN0aXZlLF9fZ3RocmVhZF9zdGFydCwgX19ndGhyZWFkX2FjdGl2ZV9pbml0KTogTmV3LgoJKiBndGhyLXBvc2l4OTUuaDogTGlrZXdpc2UuCgoyMDA3LTA5LTA3ICBSb21hbiBaaXBwZWwgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IFJlbmFtZSBjYWxsc191bndpbmRfaW5pdAoJdG8gc2F2ZXNfYWxsX3JlZ2lzdGVycy4KCShjdXJyZW50X2Z1bmN0aW9uX3NhdmVzX2FsbF9yZWdpc3RlcnMpOiBSZW5hbWVkIGZyb20KCWN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfdW53aW5kX2luaXQuCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fc2F2ZXNfYWxsX3JlZ2lzdGVycy4KCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Vud2luZF9pbml0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19zYXZlX3JlZyk6IFVzZQoJY3VycmVudF9mdW5jdGlvbl9zYXZlc19hbGxfcmVnaXN0ZXJzIHRvIHNhdmUgcGljIHJlZ2lzdGVyLgoKMjAwNy0wOS0wNyAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJY29uZmlnL202OGsvbTY4ay5jIChmbG9hdGluZ19leGFjdF9sb2cyKTogVXBkYXRlIGNhbGwgdG8gcmVhbF8yZXhwTi4KCWNvbmZpZy9zMzkwL3MzOTAubWQgKGZpeHVuc190cnVuYzxCRlA6bW9kZT48R1BSOm1vZGU+Mik6IERpdHRvLgoKCVJlYXBwbHkgcmV2ZXJ0ZWQgY2hhbmdlczoKCiAJMjAwNy0wOS0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgogCgkqIGNvbmZpZy9pMzg2LmMgKGl4ODZfZXhwYW5kX2xyb3VuZCwgaXg4Nl9leHBhbmRfcm91bmQpOiBVcGRhdGUgY2FsbAoJb2YgcmVhbF8yZXhwTi4KCgkyMDA3LTA5LTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGZpeHVuc190cnVuY2Rmc2kyLCBmaXh1bnNfdHJ1bmNkZmRpMikKCShmaXh1bnNfdHJ1bmNzZnNpMiwgZml4dW5zX3RydW5jc2ZkaTIpOiBVcGRhdGUgY2FsbHMgdG8gcmVhbF8yZXhwTi4KCgkyMDA3LTA5LTA1ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfZmxvYXQpOiBDb252ZXJ0IHVuc2lnbmVkIGludGVnZXIgYXMgc2lnbmVkIG9ubHkKCWlmIGl0IHByb3ZpZGVzIHN1ZmZpY2llbnQgYWNjdXJhY3k7IGFkZCBtb2RlIGFyZ3VtZW50IHRvIHJlYWxfMmV4cE4uCgkoZXhwYW5kX2ZpeCk6IEZpeCBjb21tZW50IHR5cG9zOyBleHRlbmQgYmluYXJ5IGZsb2F0IGludG8gbW9kZQoJd2lkZXIgdGhhbiBkZXN0aW5hdGlvbiBmb3IgY29udmVyaW9uIHRvIHVuc2lnbmVkIGludGVnZXI7IGFkZCBtb2RlCglhcmd1bWVudCB0byByZWFsXzJleHBOLgoJKiByZWFsLmMgKHJlYWxfMmV4cE4pOiBBZGQgbW9kZSBhcmd1bWVudCB0byBzcGVjaWFsLWNhc2UgZGVjaW1hbAoJZmxvYXQgdmFsdWVzLgoJKiByZWFsLmggKHJlYWxfMmV4cE4pOiBEaXR0by4KCSogZml4ZWQtdmFsdWUuYyAoY2hlY2tfcmVhbF9mb3JfZml4ZWRfbW9kZSk6IEFkZCBtb2RlIGFyZ3VtZW50IHRvCglyZWFsXzJleHBOLgoJKGZpeGVkX2Zyb21fc3RyaW5nKTogRGl0dG8uCgkoZml4ZWRfdG9fZGVjaW1hbCk6IERpdHRvLgoJKGZpeGVkX2NvbnZlcnRfZnJvbV9yZWFsKTogRGl0dG8uCgkocmVhbF9jb252ZXJ0X2Zyb21fZml4ZWQpOiBEaXR0by4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKEZQKTogSW5jbHVkZSBERCBhbmQgVEQgbW9kZXMuCgkqIGNvbmZpZy9yczYwMDAvZGZwLm1kIChleHRlbmRkZHRkMiwgYWRkZGQzLCBhZGR0ZDMsIHN1YmRkMywgc3VidGQzLAoJbXVsZGQzLCBtdWx0ZDMsIGRpdmRkMywgZGl2dGQzLCBjbXBkZF9pbnRlcm5hbDEsIGNtcHRkX2ludGVybmFsMSwKCWZsb2F0ZGl0ZDIsIGZ0cnVuY2RkMiwgZml4ZGRkaTIsIGZ0cnVuY3RkMiwgZml4ZGRpMik6IE5ldy4KCjIwMDctMDktMDcgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0Bnb29nbGUuY29tPgoKCSogdHJlZS1mbG93LmggKGNvbnN0X2Jsb2NrX3N0bXRfaXRlcmF0b3IpOiBSZW1vdmUuCglVcGRhdGUgYWxsIHVzZXJzIHRvIHVzZSBibG9ja19zdG10X2l0ZXJhdG9yLgoJKiB0cmVlLWl0ZXJhdG9yLmggKGNvbnN0X3RyZWVfc3RtdF9pdGVyYXRvcik6IFJlbW92ZS4KCVVwZGF0ZSBhbGwgdXNlcnMgdG8gdXNlIHRyZWVfc3RtdF9pdGVyYXRvci4KCjIwMDctMDktMDcgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zZXRfY3VycmVudF9mdW5jdGlvbik6IFRlbXBvcmFyaWx5CgltYWtlIHRoaXMgYSBuby1vcCB0byBmaXggYm9vdHN0cmFwIGVycm9ycywgcGVuZGluZyByZXdyaXRlLgoKMjAwNy0wOS0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVvcmcuYyAoZGJyX3NjaGVkdWxlKTogTW92ZSBjb2RlIHJlbW92aW5nIHBsYWNlaG9sZGVyIFVTRXMgbGF0ZXIKCWluIHRoZSBwYXNzLgoKMjAwNy0wOS0wNyAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzI5OQoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfY3JlYXRlX2VwaWxvZ19mb3JfcmVkdWN0aW9uKTogVXBkYXRlCgl1c2VzIGZvciBhbGwgcmVsZXZhbnQgbG9vcC1leGl0IHBoaXMsIG5vdCBqdXN0IHRoZSBmaXJzdC4KCjIwMDctMDktMDcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMzMzMwCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFjY2Vzc19jYW5fdG91Y2hfdmFyaWFibGUpOiBBbiBhY2Nlc3MKCW9mIHRoZSBmb3JtICgqcClbMF0gY2FuIHRvdWNoIGEgdmFyaWFibGUgb2Ygc2FtZSBzaXplLgoKMjAwNy0wOS0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBzaW1wbGUgZGNlIGFuZCBhZGRyZXNzYWJsZQoJcGFzc2VzLgoJKiB0cmVlLXNzYS5jIChleGVjdXRlX3VwZGF0ZV9hZGRyZXNzZXNfdGFrZW4pOiBOZXcgZnVuY3Rpb24uCgkocGFzc191cGRhdGVfYWRkcmVzc190YWtlbik6IE5ldy4KCSogdHJlZS1zc2EtZHNlLmMgKGV4ZWN1dGVfc2ltcGxlX2RzZSk6IE5ldyBmdW5jdGlvbi4KCShwYXNzX3NpbXBsZV9kc2UpOiBOZXcuCgkqIHRyZWUtcGFzcy5oIChwYXNzX3NpbXBsZV9kc2UsIHBhc3NfdXBkYXRlX2FkZHJlc3NfdGFrZW4pOiBEZWNsYXJlLgoKMjAwNy0wOS0wNyAgVG9iaWFzIEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KCglQUiBtaWRkbGUtZW5kLzMzMzIxCgkqIGRvYy9pbnZva2UudGV4aTogRml4IC1Xc3RyaWN0LW92ZXJmbG93PSB0YWJsZS4KCjIwMDctMDktMDcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglSZXZlcnQKCTIwMDctMDktMDYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjU4NgoJKiB0cmVlLXNzYS1zY2N2bi5jIChzaW1wbGlmeV9iaW5hcnlfZXhwcmVzc2lvbik6IEF2b2lkCglmb2xkaW5nIGlmIG5vdGhpbmcgY2hhbmdlZC4KCShzaW1wbGlmeV91bmFyeV9leHByZXNzaW9uKTogTmV3IGZ1bmN0aW9uLiAgRG8gdHJlZSBjb21iaW5pbmcKCW9uIGNvbnZlcnNpb24gbGlrZSBjb2Rlcy4KCSh0cnlfdG9fc2ltcGxpZnkpOiBDYWxsIGl0LgoKMjAwNy0wOS0wNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJICAgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI4MjEKCSogdHJlZV9pZl9jb252LmMgKGNvbWJpbmVfYmxvY2tzKTogVXNlIGFsbG9jX3N0bXRfbGlzdCBpbnN0ZWFkIG9mCglOVUxMIGluIHRoZSBjYWxsIHRvIHNldF9iYl9zdG10X2xpc3QuCgoyMDA3LTA5LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IEVtaXQgYWxsIGRpcmVjdAoJZmxvYXQgY2FsbHMgaGVyZSwgcmF0aGVyIHRoYW4gbGVhdmluZyBzb21lIHRvIHRoZSBjYWxsZXIuCglVc2UgY2FsbF9pbnRlcm5hbF9kaXJlY3QgYW5kIGNhbGxfdmFsdWVfaW50ZXJuYWxfZGlyZWN0LgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjYWxsX2ludGVybmFsX2RpcmVjdCk6IE5ldyBwYXR0ZXJuLgoJKGNhbGxfdmFsdWVfaW50ZXJuYWxfZGlyZWN0KTogTGlrZXdpc2UuCgoyMDA3LTA5LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19iYXNlX21vdmVfbG9vcF9pbnZhcmlhbnRzKTogTmV3IHZhcmlhYmxlLgoJKG1pcHNfc2V0X21pcHMxNl9tb2RlKTogUmVzdG9yZSBmbGFnX21vdmVfbG9vcF9pbnZhcmlhbnRzLCB0aGVuIHNldAoJdG8gMCBmb3IgTUlQUzE2LgoJKG92ZXJyaWRlX29wdGlvbnMpOiBTZXQgbWlwc19iYXNlX21vdmVfbG9vcF9pbnZhcmlhbnRzLgoKMjAwNy0wOS0wNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobWNvZGUtcmVhZGFibGU9KTogTW92ZSB0byBrZWVwIGxpc3QKCWFscGhhYmV0aWNhbC4KCjIwMDctMDktMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCB0aGUgTUlQUyAtbWxvY2FsLXNkYXRhLCAtbWV4dGVybi1zZGF0YQoJYW5kIC1tZ3BvcHQgb3B0aW9ucy4gIEFkanVzdCB0aGUgLUcgZG9jdW1lbnRhdGlvbiB0byBtYXRjaC4KCSogY29uZmlnL21pcHMvbWlwcy5vcHQgKG1leHRlcm4tZGF0YSwgbWdwb3B0LCBtbG9jYWwtZGF0YSk6IE5ldy4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3J0eF9jb25zdGFudF9pbl9zbWFsbF9kYXRhX3ApOiBOZXcKCWZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSBtaXBzX2NsYXNzaWZ5X3N5bWJvbC4gIFJldHVybiBmYWxzZSBmb3IKCSFUQVJHRVRfTE9DQUxfU0RBVEEuCgkobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBDYWxsIG1pcHNfcnR4X2NvbnN0YW50X2luX3NtYWxsX2RhdGFfcC4KCU9ubHkgdXNlIEdQLXJlbGF0aXZlIGFjY2Vzc2VzIGZvciBub24tcG9vbCBzeW1ib2xzIGlmIFRBUkdFVF9HUE9QVC4KCShvdmVycmlkZV9vcHRpb25zKTogQ2hlY2sgd2hldGhlciB0aGUgLW1ncG9wdCBzZXR0aW5nIGlzIGNvbnNpc3RlbnQKCXdpdGggdGhlIG90aGVyIGZsYWdzLgoJKHN5bWJvbGljX2V4cHJlc3Npb25fcCk6IERlbGV0ZS4KCShtaXBzX3NlbGVjdF9ydHhfc2VjdGlvbik6IFVzZSBtaXBzX3J0eF9jb25zdGFudF9pbl9zbWFsbF9kYXRhX3AKCWFuZCBkZWZhdWx0X2VsZl9zZWxlY3RfcnR4X3NlY3Rpb24uCgkobWlwc19pbl9zbWFsbF9kYXRhX3ApOiBIb25vciBzZWN0aW9uIGF0dHJpYnV0ZXMgZm9yIE1JUFMxNiB0b28uCglSZXR1cm4gZmFsc2UgZm9yIGxvY2FsIGRhdGEgdW5sZXNzIFRBUkdFVF9MT0NBTF9TREFUQS4gIExpa2V3aXNlCglleHRlcm5hbCBkYXRhIGFuZCBUQVJHRVRfRVhURVJOX1NEQVRBLgoKMjAwNy0wOS0wNyAgVG9iaWFzIEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KCglQUiBmb3J0cmFuLzMzMzAzCgkqIGRvYy9jcHAudGV4aSAoQ29tbW9uIFByZWRlZmluZWQgTWFjcm9zKTogQWRkIF9fR0ZPUlRSQU5fXy4KCjIwMDctMDktMDUgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cnluYXMuYml2ZWluaXNAZ21haWwuY29tPgoKCSogcmVncmVuYW1lLmMgKGNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZF8xKTogTmV3IHZhcmlhYmxlIG5leHQuIFVzZQoJRk9SX0JCX0lOU05TX1NBRkUgaW5zdGVhZCBvZiBmb3IgbG9vcC4KCSogY3NlLmMgKGNzZV9leHRlbmRlZF9iYXNpY19ibG9jayk6IExpa2V3aXNlLgoJKiBwb3N0cmVsb2FkLmMgKHJlbG9hZF9jc2VfcmVnc18xKTogTmV3IHZhcmlhYmxlIG5leHQuIE1ha2Ugc3VyZQoJdGhhdCB0aGUgZm9yIGxvb3AgZG9lcyBub3QgaW52b2tlIE5FWFRfSU5TTiBvbiBhIGRlbGV0ZWQgaW5zbi4KCSogZnVuY3Rpb24uYyAoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzKTogTGlrZXdpc2UuCgkqIGxvd2VyLXN1YnJlZy5jIChyZW1vdmVfcmV0dmFsX25vdGUpOiBMaWtld2lzZS4KCShkZWNvbXBvc2VfbXVsdGl3b3JkX3N1YnJlZ3MpOiBVc2UgRk9SX0JCX0lOU05TX1NBRkUgaW5zdGVhZCBvZgoJRk9SX0JCX0lOU05TLgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfaW5zbik6IFNldCBORVhUX0lOU04gYW5kIFBSRVZfSU5TTiB0byBOVUxMIG9uCglhIGRlbGV0ZWQgaW5zbi4KCSogY2ZncnRsLmMgKGRlbGV0ZV9pbnNuKTogU2V0IEpVTVBfTEFCRUwgdG8gTlVMTCBvbiBhIGRlbGV0ZWQKCWluc24sIGlmIGl0J3MgYSBqdW1wLgoJKHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6IE5ldyB2YXJpYWJsZSBqdW1wX3AuIENhbGwKCXRhYmxlanVtcF9wIGJlZm9yZSBkZWxldGVfaW5zbl9jaGFpbi4KCSogcmVsb2FkMS5jIChyZWxvYWQpOiBOZXcgdmFyaWFibGUgbmV4dC4gTWFrZSBzdXJlIHRoYXQgdGhlIGZvcgoJbG9vcCBkb2VzIG5vdCBpbnZva2UgTkVYVF9JTlNOIG9uIGEgZGVsZXRlZCBpbnNuLgoJKGZpeHVwX2VoX3JlZ2lvbl9ub3RlKTogTWFrZSB0aGUgbG9vcCB0ZXJtaW5hdGUgaWYgaSBiZWNvbWVzIE5VTEwuCgkoZGVsZXRlX291dHB1dF9yZWxvYWQpOiBOZXcgdmFyaWFibGUgcHJldi4gTWFrZSBzdXJlIHRoZSB0aGUgZm9yCglsb29wcyBkbyBub3QgaW52b2tlIFBSRVZfSU5TTiBvbiBhIGRlbGV0ZWQgaW5zbi4KCjIwMDctMDktMDYgIFpkZW5layBEdm9yYWsgIDxvb2tAdWN3LmN6PgoKCSogY2dyYXBoYnVpbGQuYyAocmVidWlsZF9jZ3JhcGhfZWRnZXMpOiBFeHBvcnQuCgkqIGNncmFwaC5oIChyZWJ1aWxkX2NncmFwaF9lZGdlcyk6IERlY2xhcmUuCgkqIHRyZWUtcGFzcy5oIChwYXNzX2V4cGFuZF9vbXBfc3NhKTogTmV3LgoJKiBvbXAtbG93LmMgKGZpbmRfb21wX2NsYXVzZSk6IEV4cG9ydC4KCShjb3B5X3Zhcl9kZWNsKTogU3BsaXQgZnJvbSBvbXBfY29weV9kZWNsXzIuCgkoYnVpbGRfb21wX2JhcnJpZXIpOiBSZXR1cm4gdGhlIGNhbGwgdG8gZW1pdCBpbnN0ZWFkIG9mIGVtaXR0aW5nCglpdCBkaXJlY3RseS4KCShsb3dlcl9yZWNfaW5wdXRfY2xhdXNlcywgZXhwYW5kX29tcF9zaW5nbGUpOiBHaW1wbGlmeSB0aGUgcmVzdWx0IG9mCglidWlsZF9vbXBfYmFycmllci4KCShleHRyYWN0X29tcF9mb3JfZGF0YSwgZXhwYW5kX3BhcmFsbGVsX2NhbGwsIGV4cGFuZF9vbXBfcGFyYWxsZWwsCglleHBhbmRfb21wX2Zvcl9nZW5lcmljLCBleHBhbmRfb21wX2Zvcl9zdGF0aWNfbm9jaHVuaywKCWV4cGFuZF9vbXBfZm9yX3N0YXRpY19jaHVuaywgZXhwYW5kX29tcF9mb3IsIGV4cGFuZF9vbXBfc2VjdGlvbnMpOgoJQWRhcHRlZCB0byB3b3JrIG9uIFNTQSBmb3JtLgoJKGV4ZWN1dGVfZXhwYW5kX29tcCk6IERvIG5vdCBpbnZhbGlkYXRlIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCShnYXRlX2V4cGFuZF9vbXApOiBEbyBub3QgcnVuIHdpdGggLWZvcGVubXAtc3NhIGZsYWcuCgkoZ2F0ZV9leHBhbmRfb21wX3NzYSwgcGFzc19leHBhbmRfb21wX3NzYSk6IE5ldy4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfb21wX2Zvcik6IEVuc3VyZSB0aGF0IHRoZSBjb250cm9sIHZhcmlhYmxlIGlzCglhIGdpbXBsZV9yZWcuCgkoZm9yY2VfZ2ltcGxlX29wZXJhbmQpOiBBbGxvdyBnaW1wbGlmeWluZyBjb2RlIGV4cHJlc3Npb25zIHdpdGhvdXQKCXZhbHVlLgoJKiB0cmVlLXByZWRjb20uYyAobWFya192aXJ0dWFsX29wc19mb3JfcmVuYW1pbmcpOiBIYW5kbGUgcGhpIG5vZGVzLgoJKiBjb21tb24ub3B0IChmb3Blbm1wLXNzYSk6IE5ldy4KCSogdHJlZS1mbG93LmggKGZpbmRfb21wX2NsYXVzZSwgY29weV92YXJfZGVjbCk6IERlY2xhcmUuCgkqIE1ha2VmaWxlLmluICh0cmVlLWNmZy5vKTogQWRkIFRSRUVfSU5MSU5FX0ggZGVwZW5kZW5jeS4KCSogdHJlZS1jZmcuYzogSW5jbHVkZSB0cmVlLWlubGluZS5oLgoJKHN0cnVjdCBtb3ZlX3N0bXRfZCk6IFJlcGxhY2UgdmFyc190b19yZW1vdmUgYnkgdmFyc19tYXAgZmllbGQuCgkocmVwbGFjZV9ieV9kdXBsaWNhdGVfZGVjbCwgcmVwbGFjZV9zc2FfbmFtZSwKCW1hcmtfdmlydHVhbF9vcHNfaW5fcmVnaW9uKTogTmV3IGZ1bmN0aW9ucy4KCShtb3ZlX3N0bXRfciwgbW92ZV9ibG9ja190b19mbiwgbW92ZV9zZXNlX3JlZ2lvbl90b19mbik6IEFkYXB0ZWQKCXRvIHdvcmsgb24gU1NBIGZvcm0uCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBBZGQgcGFzc19leHBhbmRfb21wX3NzYSBwYXNzLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IEhhbmRsZSBvcGVyYW5kcyBvZiBPTVAKCWNvbnN0cnVjdHMuCgoyMDA3LTA5LTA2ICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJ5bmFzLmJpdmVpbmlzQGdtYWlsLmNvbT4KCgkqIHRyZWUtbG9vcC1saW5lYXIuYzogSW5jbHVkZSBvYnN0YWNrLmguCgkobGluZWFyX3RyYW5zZm9ybV9sb29wcyk6IE5ldyBvYnN0YWNrIGxhbWJkYV9vYnN0YWNrLgoJSW5pdGlhbGl6ZSBpdCwgcGFzcyBpdCB0byBnY2NfbG9vcG5lc3RfdG9fbGFtYmRhX2xvb3BuZXN0LAoJbGFtYmRhX2xvb3BuZXN0X3RyYW5zZm9ybSwgbGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCBjYWxscwoJYW5kIGZyZWUgYWZ0ZXJ3YXJkcy4KCSogbGFtYmRhLmggKHN0cnVjdCBvYnN0YWNrKTogTmV3IGZvcndhcmQgZGVjbGFyYXRpb24uCgkobGFtYmRhX2xpbmVhcl9leHByZXNzaW9uX25ldyk6IE5ldyBwYXJhbWV0ZXIgb2YgdHlwZSBzdHJ1Y3QKCW9ic3RhY2sgKi4KCShsYW1iZGFfbG9vcG5lc3RfbmV3KTogTGlrZXdpc2UuCgkobGFtYmRhX2xvb3BuZXN0X3RyYW5zZm9ybSk6IExpa2V3aXNlLgoJKGxhbWJkYV9ib2R5X3ZlY3Rvcl9uZXcpOiBMaWtld2lzZS4KCShsYW1iZGFfYm9keV92ZWN0b3JfY29tcHV0ZV9uZXcpOiBMaWtld2lzZS4KCShnY2NfbG9vcG5lc3RfdG9fbGFtYmRhX2xvb3BuZXN0KTogTGlrZXdpc2UuCgkobGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCk6IExpa2V3aXNlLgoJKiBsYW1iZGEtY29kZS5jOiBJbmNsdWRlIG9ic3RhY2suaC4KCShsYW1iZGFfbGF0dGljZV9uZXcpOiBOZXcgcGFyYW1ldGVyIGxhbWJkYV9vYnN0YWNrLiAgVXNlIGl0IGZvcgoJYWxsb2NhdGlvbiBvZiByZXQuCgkobGFtYmRhX2JvZHlfdmVjdG9yX25ldyk6IExpa2V3aXNlLgoJKGxhbWJkYV9saW5lYXJfZXhwcmVzc2lvbl9uZXcpOiBMaWtld2lzZS4KCShsYW1iZGFfbGF0dGljZV9uZXcpOiBMaWtld2lzZS4KCShsYW1iZGFfbG9vcG5lc3RfbmV3KTogTGlrZXdpc2UuICBBZGRpdGlvbmFsbHkgdXNlIG9ic3RhY2sgdG8KCWFsbG9jYXRlIExOX0xPT1BTKHJldCkuCgkobGFtYmRhX2xhdHRpY2VfY29tcHV0ZV9iYXNlKTogTmV3IHBhcmFtZXRlciBsYW1iZGFfb2JzdGFjay4gIFBhc3MKCWl0IHRvIGxhbWJkYV9sYXR0aWNlX25ldy4KCShsYW1iZGFfYm9keV92ZWN0b3JfY29tcHV0ZV9uZXcpOiBOZXcgcGFyYW1ldGVyIGxhbWJkYV9vYnN0YWNrLgoJUGFzcyBpdCB0byBsYW1iZGFfYm9keV92ZWN0b3JfbmV3LgoJKGxhbWJkYV9sYXR0aWNlX2NvbXB1dGVfYmFzZSk6IE5ldyBwYXJhbWF0ZXIgbGFtYmRhX29ic3RhY2suICBQYXNzCglpdCB0byBsYW1iZGFfbGF0dGljZV9uZXcuCgkoY29tcHV0ZV9uZXN0X3VzaW5nX2ZvdXJpZXJfbW90emtpbik6IE5ldyBwYXJhbWV0ZXIgbGFtYmRhX29ic3RhY2suCglQYXNzIGl0IHRvIGxhbWJkYV9sb29wbmVzdF9uZXcsIGxhbWJkYV9saW5lYXJfZXhwcmVzc2lvbl9uZXcuCgkobGFtYmRhX2NvbXB1dGVfdGFyZ2V0X3NwYWNlKTogTGlrZXdpc2UuCgkobGFtYmRhX2NvbXB1dGVfYXV4aWxsYXJ5X3NwYWNlKTogTmV3IHBhcmFtZXRlciBsYW1iZGFfb2JzdGFjay4KCVBhc3MgaXQgdG8gbGFtYmRhX2xhdHRpY2VfY29tcHV0ZV9iYXNlIGFuZAoJY29tcHV0ZV9uZXN0X3VzaW5nX2ZvdXJpZWVyX21vdHpraW4uCgkobGFtYmRhX2xvb3BuZXN0X3RyYW5zZm9ybSk6IE5ldyBwYXJhbWV0ZXIgbGFtYmRhX29ic3RhY2suICBQYXNzCglpdCB0byBsYW1iZGFfbGF0dGljZV9jb21wdXRlX2Jhc2UsIGxhbWJkYV9sYXR0aWNlX2F1eGlsbGFyeV9zcGFjZQoJYW5kIGxhbWJkYV9sYXR0aWNlX2NvbXB1dGVfdGFyZ2V0X3NwYWNlLgoJKGdjY190cmVlX3RvX2xpbmVhcl9leHByZXNzaW9uKTogTmV4IHBhcmFtZXRlciBsYW1iZGFfb2JzdGFjay4KCVBhc3MgaXQgdG8gbGFtYmRhX2xpbmVhcl9leHByZXNzaW9uX25ldy4KCShnY2NfbG9vcF90b19sYW1iZGFfbG9vcCk6IE5ldyBwYXJhbWV0ZXIgbGFtYmRhX29ic3RhY2suICBQYXNzIGl0Cgl0byBnY2NfdHJlZV90b19saW5lYXJfZXhwcmVzc2lvbi4KCShnY2NfbG9vcG5lc3RfdG9fbGFtYmRhX2xvb3BuZXN0KTogTmV3IHBhcmFtZXRlciBsYW1iZGFfb2JzdGFjay4KCVBhc3MgaXQgdG8gZ2NjX2xvb3BfdG9fbGFtYmRhX2xvb3AgYW5kIGxhbWJkYV9sb29wbmVzdF9uZXcuCgkobGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCk6IE5ldyBwYXJhbWV0ZXIgbGFtYmRhX29ic3RhY2suCglQYXNzIGl0IHRvIGxhbWJkYV9ib2R5X3ZlY3Rvcl9uZXcgYW5kCglsYW1iZGFfYm9keV92ZWN0b3JfY29tcHV0ZV9uZXcuCgkqIE1ha2VmaWxlLmluICh0cmVlLWxvb3AtbGluZWFyLm8pOiBBZGQgJChPQlNUQUNLX0gpIGRlcGVuZGVuY3kuCgkobGFtYmRhLWNvZGUubyk6IExpa2V3aXNlLgoKMjAwNy0wOS0wNiAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgoJKiBnaW5jbHVkZS9zdGRmaXguaDogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChVU0VSX0gpOiBBZGQgJChzcmNkaXIpL2dpbmNsdWRlL3N0ZGZpeC5oLgoJKGNvbnZlcnQubyk6IEFkZCBkZXBlbmRlbmNlIG9uIGZpeGVkLXZhbHVlLmguCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogU3VwcG9ydCBGSVhFRF9QT0lOVF9UWVBFLgoJKiBjLWNwcGJ1aWx0aW4uYyAoYnVpbHRpbl9kZWZpbmVfZml4ZWRfcG9pbnRfY29uc3RhbnRzKTogTmV3IGZ1bmN0aW9uCgl0byBkZWZpbmUgZml4ZWQtcG9pbnQgY29uc3RhbnRzLgoJKGNfY3BwX2J1aWx0aW5zKTogRGVmaW5lIGZpeGVkLXBvaW50IGNvbnN0YW50cy4KCSogY29udmVydC5jIChmaXhlZC12YWx1ZS5oKTogTmV3IGluY2x1ZGUuCgkoY29udmVydF90b19yZWFsKTogVXBkYXRlIGNvbW1lbnQgdG8gaW5jbHVkZSBmaXhlZC1wb2ludC4KCVN1cHBvcnQgRklYRURfUE9JTlRfVFlQRS4KCShjb252ZXJ0X3RvX2ludGVnZXIpOiBVcGRhdGUgY29tbWVudCB0byBpbmNsdWRlIGZpeGVkLXBvaW50LgoJU3VwcG9ydCBGSVhFRF9QT0lOVF9UWVBFLgoJKGNvbnZlcnRfdG9fY29tcGxleCk6IFN1cHBvcnQgRklYRURfUE9JTlRfVFlQRS4KCShjb252ZXJ0X3RvX2ZpeGVkKTogTmV3IGZ1bmN0aW9uLgoJKiBjb252ZXJ0LmggKGNvbnZlcnRfdG9fZml4ZWQpOiBEZWNsYXJlLgoJKiBnZW5vcGluaXQuYzogQWRkIGNvbW1lbnQgYWJvdXQgJFEgZm9yIG9ubHkgZml4ZWQtcG9pbnQgbW9kZXMuCgkob3B0YWJzKTogQWRkIGZyYWN0X29wdGFiLCBmcmFjdHVuc19vcHRhYiwgc2F0ZnJhY3Rfb3B0YWIsCglzYXRmcmFjdHVuc19vcHRhYiwgYWRkX29wdGFiLCBzc2FkZF9vcHRhYiwgdXNhZGRfb3B0YWIsIHN1Yl9vcHRhYiwKCXNzc3ViX29wdGFiLCB1c3N1Yl9vcHRhYiwgc211bF9vcHRhYiwgc3NtdWxfb3B0YWIsIHVzbXVsX29wdGFiLAoJc3NtYWRkX3dpZGVuX29wdGFiLCB1c21hZGRfd2lkZW5fb3B0YWIsIHNzZGl2X29wdGFiLCB1ZGl2X29wdGFiLAoJdXNkaXZfb3B0YWIsIHNzYXNobF9vcHRhYiwgdXNhc2hsX29wdGFiLCBuZWdfb3B0YWIsIHNzbmVnX29wdGFiLAoJdXNuZWdfb3B0YWIgZm9yIGZpeGVkLXBvaW50IG1vZGVzLgoJKGdlbl9pbnNuKTogQWRkIGZvcmNlX2ZpeGVkIHRvIHRyYWNrIHRoZSAkUSBmb3JtYXQgZm9yIGFsbCBmaXhlZC1wb2ludAoJbW9kZXMuCgkqIG9wdGFicy5jIChvcHRhYl9mb3JfdHJlZV9jb2RlKTogRm9yICpESVZfRVhQUiwgTFNISUZUX0VYUFIsCglQTFVTX0VYUFIsIE1JTlVTX0VYUFIsIE1VTFRfRVhQUiwgTkVHQVRFX0VYUFIsIHJldHVybiBzaWduZWQgb3IKCXVuc2lnbmVkIHNhdHVyYXRpb24gb3B0YWJzLCB3aGVuIHR5cGUgaXMgc2F0dXJhdGluZy4KCShzaGlmdF9vcHRhYl9wKTogUmV0dXJuIHRydWUgZm9yIFNTX0FTSElGVCBvciBVU19BU0hJRlQuCgkoZXhwYW5kX2ZpeGVkX2NvbnZlcnQpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuX2ZpeGVkX2xpYmZ1bmMsIGdlbl9zaWduZWRfZml4ZWRfbGliZnVuYywKCWdlbl91bnNpZ25lZF9maXhlZF9saWJmdW5jLCBnZW5faW50X2ZwX2ZpeGVkX2xpYmZ1bmMsCglnZW5faW50X2ZwX3NpZ25lZF9maXhlZF9saWJmdW5jLCBnZW5faW50X2ZpeGVkX2xpYmZ1bmMsCglnZW5faW50X3NpZ25lZF9maXhlZF9saWJmdW5jLCBnZW5faW50X3Vuc2lnbmVkX2ZpeGVkX2xpYmZ1bmMsCglnZW5fZnJhY3RfY29udl9saWJmdW5jLCBnZW5fZnJhY3R1bnNfY29udl9saWJmdW5jLAoJZ2VuX3NhdGZyYWN0X2NvbnZfbGliZnVuYywgZ2VuX3NhdGZyYWN0dW5zX2NvbnZfbGliZnVuYyk6IE5ldwoJZnVuY3Rpb25zLgoJKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBzc2FkZF9vcHRhYiwgdXNhZGRfb3B0YWIsIHNzc3ViX29wdGFiLAoJdXNzdWJfb3B0YWIsIHNzbXVsX29wdGFiLCB1c211bF9vcHRhYiwgc3NtYWRkX3dpZGVuX29wdGFiLAoJdXNtYWRkX3dpZGVuX29wdGFiLCBzc21zdWJfd2lkZW5fb3B0YWIsIHVzbXN1Yl93aWRlbl9vcHRhYiwKCXNzZGl2X29wdGFiLCB1c2Rpdl9vcHRhYiwgc3Nhc2hsX29wdGFiLCB1c2FzaGxfb3B0YWIsIHNzbmVnX29wdGFiLAoJdXNuZWdfb3B0YWIsIGZyYWN0X29wdGFiLCBmcmFjdHVuc19vcHRhYiwgc2F0ZnJhY3Rfb3B0YWIsCglzYXRmcmFjdHVuc19vcHRhYi4KCUluaXRpYWxpemUgZml4ZWQtcG9pbnQgbGlicmFyaWVzLCBpbmNsdWRpbmcgYWRkLCBzc2FkZCwgdXNhZGQsIHN1YiwKCXNzc3ViLCB1c3N1YiwgbXVsLCBzc211bCwgdXNtdWwsIGRpdiwgc3NkaXYsIHVkaXYsIHVzZGl2LCBhc2hsLAoJc3Nhc2hsLCB1c2FzaGwsIGFzaHIsIGxzaHIsIG5lZywgc3NuZWcsIHVzbmVnLCBjbXAsIGZyYWN0LCBzYXRmcmFjdCwKCWZyYWN0dW5zLCBzYXRmcmFjdHVucy4KCSogb3B0YWJzLmggKGVudW0gb3B0YWJfaW5kZXgpOiBBZGQgT1RJX3NzYWRkLCBPVElfdXNhZGQsIE9USV9zc3N1YiwKCU9USV91c3N1YiwgT1RJX3NzbXVsLCBPVElfdXNtdWwsIE9USV9zc2RpdiwgT1RJX3VzZGl2LCBPVElfc3NuZWcsCglPVElfdXNuZWcsIE9USV9zc2FzaGwsIE9USV91c2FzaGwsIE9USV9zc21hZGRfd2lkZW4sIE9USV91c21hZGRfd2lkZW4sCglPVElfc3Ntc3ViX3dpZGVuLCAgT1RJX3VzbXN1Yl93aWRlbi4KCShzc2FkZF9vcHRhYiwgdXNhZGRfb3B0YWIsIHNzc3ViX29wdGFiLCB1c3N1Yl9vcHRhYiwgc3NtdWxfb3B0YWIsCgl1c211bF9vcHRhYiwgc3NkaXZfb3B0YWIsIHVzZGl2X29wdGFiLCBzc25lZ19vcHRhYiwgdXNuZWdfb3B0YWIsCglzc2FzaGxfb3B0YWIsIHVzYXNobF9vcHRhYiwgc3NtYWRkX3dpZGVuX29wdGFiLCB1c21hZGRfd2lkZW5fb3B0YWIsCgl1bXN1Yl93aWRlbl9vcHRhYiwgdXNtc3ViX3dpZGVuX29wdGFiKTogRGVmaW5lLgoJKGVudW0gY29udmVydF9vcHRhYl9pbmRleCk6IEFkZCBDT0lfZnJhY3QsIENPSV9mcmFjdHVucywgQ09JX3NhdGZyYWN0LAoJQ09JX3NhdGZyYWN0dW5zLgoJKGZyYWN0X29wdGFiLCBmcmFjdHVuc19vcHRhYiwgc2F0ZnJhY3Rfb3B0YWIsIHNhdGZyYWN0dW5zX29wdGFiKToKCURlZmluZS4KCShleHBhbmRfZml4ZWRfY29udmVydCk6IERlY2xhcmUuCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogU3VwcG9ydCB0aGUgbW92ZSBvZiBmaXhlZC1wb2ludCBtb2Rlcy4KCShlbWl0X21vdmVfaW5zbl8xKTogSGFuZGxlIGZpeGVkLXBvaW50IG1vZGUgdG8gbW92ZSB2aWEgaW50ZWdlci4KCShjYXRlZ29yaXplX2N0b3JfZWxlbWVudHNfMSk6IEhhbmRsZSBGSVhFRF9DU1QuCgkoY291bnRfdHlwZV9lbGVtZW50cyk6IEhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLgoJKGV4cGFuZF9leHByX3JlYWxfMSk6IEZvciBWRUNUT1JfQ1NULCBjaGVjayBNT0RFX1ZFQ1RPUl9GUkFDVCwKCU1PREVfVkVDVE9SX1VGUkFDVCwgTU9ERV9WRUNUT1JfQUNDVU0sIE1PREVfVkVDVE9SX1VBQ0NVTS4KCVN1cHBvcnQgRklYRURfQ1NULgoJRm9yIFBMVVNfRVhQUiBhbmQgTUlOVVNfRVhQUiwgc3VwcG9ydCBzYXR1cmF0aW5nIGFuZCBub24tc2F0dXJhdGluZwoJbXVsdGlwbHkgYW5kIGFkZC9zdWJ0cmFjdCBmb3IgZml4ZWQtcG9pbnQgdHlwZXMuCglGb3IgTVVMVF9FWFBSLCAqRElWX0VYUFIsICpTSElGVF9FWFBSLCBpZiB0aGUgbW9kZSBpZiBhIGZpeGVkLXBvaW50Cgltb2RlLCB3ZSBqdW1wIHRvIGJpbm9wIGRpcmVjdGx5LgoJU3VwcG9ydCBGSVhFRF9DT05WRVJUX0VYUFIuCgkoZG9fc3RvcmVfZmxhZyk6IENoZWNrIEZJWEVEX0NTVCB0byBwdXQgYSBjb25zdGFudCBzZWNvbmQuCgkodmVjdG9yX21vZGVfdmFsaWRfcCk6IEhhbmRsZSBNT0RFX1ZFQ1RPUl9GUkFDVCwKCU1PREVfVkVDVE9SX1VGUkFDVCwgTU9ERV9WRUNUT1JfQUNDVU0sIE1PREVfVkVDVE9SX1VBQ0NVTS4KCShjb25zdF92ZWN0b3JfZnJvbV90cmVlKTogU3VwcG9ydCBGSVhFRF9DU1QuCgkqIGRvYy9leHRlbmQudGV4aSAoRml4ZWQtUG9pbnQpOiBOZXcgbm9kZS4KCSogZG9jL21kLnRleGkgKHNzYWRkLCB1c2FkZCwgc3NzdWIsIHVzc3ViLCBzc211bCwgdXNtdWwsIHNzZGl2LCB1c2RpdiwKCXNzbWFkZCwgdXNtYWRkLCBzc21zdWIsIHVzbXN1Yiwgc3Nhc2hsLCB1c2FzaGwsIHNzbmVnLCB1c25lZywgZnJhY3QsCglzYXRmcmFjdCwgZnJhY3R1bnMsIHNhdGZyYWN0dW5zKTogRG9jdW1lbnQgdGhlbS4KCjIwMDctMDktMDcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBEb24ndCByZWxvYWQgYXV0b2luYwoJYWRkcmVzc2VzIGludG8gSSByZWdpc3RlcnMuCgoyMDA3LTA5LTA2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6Lm9yZz4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfaW5kaXJlY3RfZGF0YV9yZWZlcmVuY2UpOiBBdm9pZCBpbnZhbGlkCglzaGFyaW5nLgoJKG1hY2hvcGljX2xlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCjIwMDctMDktMDYgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoJICAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbmZpZy9zcHUvc3B1Lm1kIChmbG9hdHNpZGYyKTogVXNlIGNvbnZlcnRfb3B0YWJfbGliZnVuYwoJaW5zdGVhZCBvZiB1ZmxvYXRfb3B0YWItPmhhbmRsZXJzIGRpcmVjdGx5LgoJKGZsb2F0ZGlkZjIpOiBMaWtld2lzZS4KCjIwMDctMDktMDYgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYzogIEluY2x1ZGUgZGlhZ25vc3RpYy5oLgoJKG1pcHNfc2V0X2N1cnJlbnRfZnVuY3Rpb24pOiBDaGVjayBlcnJvcmNvdW50IGFuZCBzb3JyeWNvdW50IAoJYmVmb3JlIGdlbmVyYXRpbmcgUlRMLgoKMjAwNy0wOS0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzMzMjU2CgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2xpY19leHByZXNzaW9uKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfY2xhc3NpZnlfYWRkcmVzcyk6IFVzZSBpdCBpbnN0ZWFkIG9mIG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcC4KCShwcmludF9vcGVyYW5kX3JlbG9jKTogTGlrZXdpc2UuCgoyMDA3LTA5LTA2ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCglSZXZlcnQ6CgogCTIwMDctMDktMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KIAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2xyb3VuZCwgaXg4Nl9leHBhbmRfcm91bmQpOgoJVXBkYXRlIGNhbGwgb2YgcmVhbF8yZXhwTi4KCgkyMDA3LTA5LTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGZpeHVuc190cnVuY2Rmc2kyLCBmaXh1bnNfdHJ1bmNkZmRpMikKCShmaXh1bnNfdHJ1bmNzZnNpMiwgZml4dW5zX3RydW5jc2ZkaTIpOiBVcGRhdGUgY2FsbHMgdG8gcmVhbF8yZXhwTi4KCgkyMDA3LTA5LTA1ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfZmxvYXQpOiBDb252ZXJ0IHVuc2lnbmVkIGludGVnZXIgYXMgc2lnbmVkIG9ubHkKCWlmIGl0IHByb3ZpZGVzIHN1ZmZpY2llbnQgYWNjdXJhY3k7IGFkZCBtb2RlIGFyZ3VtZW50IHRvIHJlYWxfMmV4cE4uCgkoZXhwYW5kX2ZpeCk6IEZpeCBjb21tZW50IHR5cG9zOyBleHRlbmQgYmluYXJ5IGZsb2F0IGludG8gbW9kZQoJd2lkZXIgdGhhbiBkZXN0aW5hdGlvbiBmb3IgY29udmVyaW9uIHRvIHVuc2lnbmVkIGludGVnZXI7IGFkZCBtb2RlCglhcmd1bWVudCB0byByZWFsXzJleHBOLgoJKiByZWFsLmMgKHJlYWxfMmV4cE4pOiBBZGQgbW9kZSBhcmd1bWVudCB0byBzcGVjaWFsLWNhc2UgZGVjaW1hbAoJZmxvYXQgdmFsdWVzLgoJKiByZWFsLmggKHJlYWxfMmV4cE4pOiBEaXR0by4KCSogZml4ZWQtdmFsdWUuYyAoY2hlY2tfcmVhbF9mb3JfZml4ZWRfbW9kZSk6IEFkZCBtb2RlIGFyZ3VtZW50IHRvCglyZWFsXzJleHBOLgoJKGZpeGVkX2Zyb21fc3RyaW5nKTogRGl0dG8uCgkoZml4ZWRfdG9fZGVjaW1hbCk6IERpdHRvLgoJKGZpeGVkX2NvbnZlcnRfZnJvbV9yZWFsKTogRGl0dG8uCgkocmVhbF9jb252ZXJ0X2Zyb21fZml4ZWQpOiBEaXR0by4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKEZQKTogSW5jbHVkZSBERCBhbmQgVEQgbW9kZXMuCgkqIGNvbmZpZy9yczYwMDAvZGZwLm1kIChleHRlbmRkZHRkMiwgYWRkZGQzLCBhZGR0ZDMsIHN1YmRkMywgc3VidGQzLAoJbXVsZGQzLCBtdWx0ZDMsIGRpdmRkMywgZGl2dGQzLCBjbXBkZF9pbnRlcm5hbDEsIGNtcHRkX2ludGVybmFsMSwKCWZsb2F0ZGl0ZDIsIGZ0cnVuY2RkMiwgZml4ZGRkaTIsIGZ0cnVuY3RkMiwgZml4ZGRpMik6IE5ldy4KCjIwMDctMDktMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHRyZWUtY2ZnLmMgKHJlbW92ZV9iYik6IE9ubHkgd2FybiBpZiBsaW5lIGlzIG5vbi16ZXJvLgoJKiBjLXBjaC5jIChjX2NvbW1vbl9yZWFkX3BjaCk6IFJlc3RvcmUgY3VycmVudCBsb2NhdGlvbiBhZnRlcgoJcmVhZGluZyBQQ0ggZmlsZS4KCSogdHJlZS5jIChleHBhbmRfbG9jYXRpb24pOiBVcGRhdGUuCgkoZXhwcl9maWxlbmFtZSk6IENoYW5nZWQgcmV0dXJuIHR5cGUuICBVbmlmaWVkIHRoZSB0d28gY2FzZXMuCgkoZXhwcl9saW5lbm8pOiBMaWtld2lzZS4KCShhbm5vdGF0ZV93aXRoX2ZpbGVfbGluZSk6IERvbid0IHVzZSBFWFBSX0xJTkVOTyBhbmQgRVhQUl9GSUxFTkFNRQoJYXMgbHZhbHVlcy4KCSogdG9wbGV2LmMgKGxpbmVfdGFibGUpOiBDaGFuZ2VkIHR5cGUuCgkoZ2VuZXJhbF9pbml0KTogVXBkYXRlLgoJKHJlYWxsb2NfZm9yX2xpbmVfbWFwKTogTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYWxfaW5pdCk6IEFsbG9jYXRlIGxpbmVfdGFibGUgdXNpbmcgR0MuCgkqIGZpeC1oZWFkZXIuYyAobGluZV90YWJsZSk6IENoYW5nZWQgdHlwZS4KCShyZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZS4KCShyZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZS4KCSogYy1wcG91dHB1dC5jIChtYXliZV9wcmludF9saW5lKTogVXBkYXRlLgoJKHByaW50X2xpbmUpOiBVcGRhdGUuCgkoY2JfbGluZV9jaGFuZ2UpOiBVcGRhdGUuCgkoY2JfZGVmaW5lKTogVXBkYXRlLgoJKHBwX2ZpbGVfY2hhbmdlKTogVXBkYXRlLgoJKiBjLW9wdHMuYyAoY19jb21tb25faW5pdF9vcHRpb25zKTogVXBkYXRlLgoJKGZpbmlzaF9vcHRpb25zKTogVXBkYXRlLgoJKHB1c2hfY29tbWFuZF9saW5lX2luY2x1ZGUpOiBVcGRhdGUuCgkqIGMtbGV4LmMgKGNiX2xpbmVfY2hhbmdlKTogVXBkYXRlLgoJKGNiX2RlZl9wcmFnbWEpOiBVcGRhdGUuCgkoY2JfZGVmaW5lKTogVXBkYXRlLgoJKGNiX3VuZGVmKTogVXBkYXRlLgoJKGNfbGV4X3dpdGhfZmxhZ3MpOiBVc2UgY3BwX2dldF90b2tlbl93aXRoX2xvY2F0aW9uLgoJKiBpbnB1dC5oIChsaW5lX3RhYmxlKTogQ2hhbmdlZCB0eXBlLgoJKGxvY2F0aW9uX2Zyb21fbG9jdXMpOiBOZXcgbWFjcm8uCgkqIHRyZWUuaCAoRVhQUl9GSUxFTkFNRSk6IE5vIGxvbmdlciBhbiBsdmFsdWUuCgkoRVhQUl9MSU5FTk8pOiBMaWtld2lzZS4KCShleHByX2xvY3VzLCBzZXRfZXhwcl9sb2N1cyk6IERlY2xhcmUgc2VwYXJhdGVseSBmb3IKCVVTRV9NQVBQRURfTE9DQVRJT04uCgkoZXhwcl9maWxlbmFtZSwgZXhwcl9saW5lbm8pOiBDaGFuZ2VkIHJldHVybiB0eXBlLgoJKiBnaW1wbGlmeS5jICh0cmVlX3RvX2dpbXBsZV90dXBsZSk6IFVzZSBTRVRfRVhQUl9MT0NVUy4KCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfY29uZF9leHByKTogVXNlIGxvY2F0aW9uX2Zyb21fbG9jdXMuCgkoZXhwYW5kX2dpbXBsZV9iYXNpY19ibG9jayk6IExpa2V3aXNlLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBVc2UgZXhwYW5kZWRfbG9jYXRpb24uCgoyMDA3LTA5LTA2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI1ODYKCSogdHJlZS1zc2Etc2Njdm4uYyAoc2ltcGxpZnlfYmluYXJ5X2V4cHJlc3Npb24pOiBBdm9pZAoJZm9sZGluZyBpZiBub3RoaW5nIGNoYW5nZWQuCgkoc2ltcGxpZnlfdW5hcnlfZXhwcmVzc2lvbik6IE5ldyBmdW5jdGlvbi4gIERvIHRyZWUgY29tYmluaW5nCglvbiBjb252ZXJzaW9uIGxpa2UgY29kZXMuCgkodHJ5X3RvX3NpbXBsaWZ5KTogQ2FsbCBpdC4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2NleHApOiBGb2xkIHRoZSBidWlsdCBleHByZXNzaW9ucy4KCSogZm9sZC1jb25zdC5jIChmb2xkX3VuYXJ5KTogVGVzdCByZXN1bHQgb2YgZ2V0X2NhbGxlZV9mbmRlY2woKS4KCjIwMDctMDktMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvMzMzMTgKCSogY3NlLmMgKGZvbGRfcnR4KTogQXZvaWQgaW52YWxpZCBzaGFyaW5nLgoKMjAwNy0wOS0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChmaXh1bnNfdHJ1bmNkZnNpMiwgZml4dW5zX3RydW5jZGZkaTIpCgkoZml4dW5zX3RydW5jc2ZzaTIsIGZpeHVuc190cnVuY3NmZGkyKTogVXBkYXRlIGNhbGxzIHRvIHJlYWxfMmV4cE4uCgoyMDA3LTA5LTA2ICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wKToKCUZpeCBvZmZzZXR0YWJsZSBtZW1vcnkgcmVmZXJlbmNlIGZvciA3NTBDTC4KCjIwMDctMDktMDYgIFBhdCBIYXVnZW4gIDxwdGhhdWdlbkB1cy5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEpOiBUcnkgdG8gcHJlc2VydmUgb3JpZ2luYWwKCWJhc2UvaW5kZXggcmVnY2xhc3Mgb2Ygb3BlcmFuZHMuCgkqIHJlZ3JlbmFtZS5jIChzY2FuX3J0eF9hZGRyZXNzKTogTGlrZXdpc2UuCgkocmVwbGFjZV9vbGRlc3RfdmFsdWVfYWRkcik6IExpa2V3aXNlLgoKMjAwNy0wOS0wNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzMzAyCgkqIGRvbXdhbGsuYyAod2Fsa19kb21pbmF0b3JfdHJlZSk6IFRoZSBleGl0IGJsb2NrIGlzCglpbnRlcmVzdGluZyBldmVuIGlmIGl0IGlzIG5vdCByZWFjaGFibGUuCgoyMDA3LTA5LTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMzMzA2CgkqIG9wdGFicy5jIChhdm9pZF9leHBlbnNpdmVfY29uc3RhbnQpOiBEbyBub3RoaW5nIGlmIE1PREUgaXMgVk9JRG1vZGUuCgoyMDA3LTA5LTA2ICBCYXNpbGUgU3Rhcnlua2V2aXRjaCAgPGJhc2lsZUBzdGFyeW5rZXZpdGNoLm5ldD4KCgkqIGNmZy5jIChkdW1wX2JiX2luZm8sIGR1bXBfZWRnZV9pbmZvKTogQWRkZWQgY2Z1biB0ZXN0IGZvciAKCXJvYnVzdG5lc3MuCgoyMDA3LTA5LTA1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9kZWNsX25hbWUpOiBDYXN0IExBQkVMX0RFQ0xfVUlEIHRvIGludAoJd2hlbiBwcmludGluZy4KCShkdW1wX2dlbmVyaWNfbm9kZSk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfZGVjbF9uYW1lKTogTGlrZXdpc2UuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZV9icmllZik6IExpa2V3aXNlLgoJKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW4gKFJUTF9CQVNFX0gpOiBBZGQgYWxpYXMuaC4KCShUUkVFX0gpOiBMaWtld2lzZS4KCjIwMDctMDktMDYgIEplc3BlciBOaWxzc29uICA8amVzcGVyLm5pbHNzb25AYXhpcy5jb20+CgoJKiBsb25nbG9uZy5oIFtfX0NSSVNfYXJjaF92ZXJzaW9uID49IDhdIChjb3VudF90cmFpbGluZ196ZXJvcyk6CglEZWZpbmVkLgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kIChjdHpzaTIsIGNyaXNfc3dhcF9iaXRzKTogSW1wbGVtZW50ZWQuCgkqIGNvbmZpZy9jcmlzL2NyaXMuaCAoQ1RaX0RFRklORURfVkFMVUVfQVRfWkVSTyk6IERlZmluZWQuCgoyMDA3LTA5LTA2ICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy5nY2MgKHRtX2ZpbGUpOiBBZGQgbGludXguaCBmb3IgYmZpbiotdWNsaW51eCouCgkodG1fZGVmaW5lcyk6IERlZmluZSBVQ0xJQkNfREVGQVVMVCB0byAxLgoJKGV4dHJhX29wdGlvbnMpOiBBZGQgbGludXgub3B0LgoJKiBjb25maWcvYmZpbi9saW51eC5oIChDUExVU1BMVVNfQ1BQX1NQRUMpOiBEb24ndCBkZWZpbmUuCgkoQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKTogTGlrZXdpc2UuCgkoTk9fSU1QTElDSVRfRVhURVJOX0MpOiBMaWtld2lzZS4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIGFzIExJTlVYX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMuCgkqIGNvbmZpZy9iZmluL2VsZi5oIChPQkpFQ1RfRk9STUFUX0VMRik6IERvbid0IGRlZmluZS4KCSogY29uZmlnL2JmaW4vdWNsaW51eC5oIChDUExVU1BMVVNfQ1BQX1NQRUMpOiBEb24ndCBkZWZpbmUuCgkoRU5ERklMRV9TUEVDKTogRG9uJ3QgZGVmaW5lLgoJKExJQl9TUEVDKTogTGlrZXdpc2UuCgkoQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKTogTGlrZXdpc2UuCgkoTk9fSU1QTElDSVRfRVhURVJOX0MpOiBMaWtld2lzZS4KCShMSU5VWF9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTGlrZXdpc2UuCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZSBhcyBMSU5VWF9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TLgoKMjAwNy0wOS0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9scm91bmQsIGl4ODZfZXhwYW5kX3JvdW5kKToKCVVwZGF0ZSBjYWxsIG9mIHJlYWxfMmV4cE4uCgoyMDA3LTA5LTA2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogRW5hYmxlIGlubGluaW5nIGZ1bmN0aW9ucyBmb3IKCS1mcHJvZmlsZS1nZW5lcmF0ZS4KCjIwMDctMDktMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbi1hdHRycy5kZWYgKEFUVFJfTk9OTlVMTF8zKTogTmV3LgoJKERFRl9GT1JNQVRfQVRUUklCVVRFKTogVXNlIGp1c3QgQVRUUl9OT05OVUxMXyMjRkEgaW5zdGVhZCBvZgoJQVRUUl9OT1RIUk9XX05PTk5VTExfIyNGQS4KCShERUZfRk9STUFUX0FUVFJJQlVURV9OT1RIUk9XLCBERUZfRk9STUFUX0FUVFJJQlVURV9CT1RIKTogTmV3IG1hY3Jvcy4KCShBVFRSX0ZPUk1BVF9QUklOVEZfTk9USFJPV18yXzAsIEFUVFJfUFJJTlRGX05PVEhST1dfMl8zLAoJQVRUUl9GT1JNQVRfUFJJTlRGX05PVEhST1dfM18wLCBBVFRSX0ZPUk1BVF9QUklOVEZfTk9USFJPV18zXzQsCglBVFRSX0ZPUk1BVF9QUklOVEZfTk9USFJPV180XzAsIEFUVFJfUFJJTlRGX05PVEhST1dfNF81LAoJQVRUUl9GT1JNQVRfUFJJTlRGX05PVEhST1dfNV8wLCBBVFRSX0ZPUk1BVF9QUklOVEZfTk9USFJPV181XzYsCglBVFRSX0ZPUk1BVF9TQ0FORl9OT1RIUk9XXzJfMCwgQVRUUl9GT1JNQVRfU0NBTkZfTk9USFJPV18yXzMsCglBVFRSX0ZPUk1BVF9TVFJGVElNRV9OT1RIUk9XXzNfMCwgQVRUUl9GT1JNQVRfU1RSRk1PTl9OT1RIUk9XXzNfNCk6CglOZXcuCgkoQVRUUl9GT1JNQVRfUFJJTlRGXzRfMCwgQVRUUl9QUklOVEZfNF81LCBBVFRSX0ZPUk1BVF9QUklOVEZfNV8wLAoJQVRUUl9GT1JNQVRfUFJJTlRGXzVfNiwgQVRUUl9GT1JNQVRfU1RSRlRJTUVfM18wLAoJQVRUUl9GT1JNQVRfTk9USFJPV18zXzQpOiBSZW1vdmUuCgkqIGJ1aWx0aW5zLmRlZiAoc25wcmludGYsIHNwcmludGYsIHNzY2FuZiwgdnNucHJpbnRmLCB2c3ByaW50ZiwKCXZzc2NhbmYsIHN0cmZtb24sIHN0cmZ0aW1lLCBfX3NucHJpbnRmX2NoaywgX19zcHJpbnRmX2NoaywKCV9fdnNucHJpbnRmX2NoaywgX192c3ByaW50Zl9jaGspOiBVc2UgQVRUUl9GT1JNQVRfKl9OT1RIUk9XXyoKCWluc3RlYWQgb2YgQVRUUl9GT1JNQVRfKl8qLgoKMjAwNy0wOS0wNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfZW1pdF9tb3ZlbV9zdG9yZSk6IENhbGwgY29weV9ydHggb24KCXBhcnRzIHJlLXVzZWQgZm9yIFJFR19GUkFNRV9SRUxBVEVEX0VYUFIuCgoyMDA3LTA5LTA1ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfZmxvYXQpOiBDb252ZXJ0IHVuc2lnbmVkIGludGVnZXIgYXMgc2lnbmVkIG9ubHkKCWlmIGl0IHByb3ZpZGVzIHN1ZmZpY2llbnQgYWNjdXJhY3k7IGFkZCBtb2RlIGFyZ3VtZW50IHRvIHJlYWxfMmV4cE4uCgkoZXhwYW5kX2ZpeCk6IEZpeCBjb21tZW50IHR5cG9zOyBleHRlbmQgYmluYXJ5IGZsb2F0IGludG8gbW9kZQoJd2lkZXIgdGhhbiBkZXN0aW5hdGlvbiBmb3IgY29udmVyaW9uIHRvIHVuc2lnbmVkIGludGVnZXI7IGFkZCBtb2RlCglhcmd1bWVudCB0byByZWFsXzJleHBOLgoJKiByZWFsLmMgKHJlYWxfMmV4cE4pOiBBZGQgbW9kZSBhcmd1bWVudCB0byBzcGVjaWFsLWNhc2UgZGVjaW1hbAoJZmxvYXQgdmFsdWVzLgoJKiByZWFsLmggKHJlYWxfMmV4cE4pOiBEaXR0by4KCSogZml4ZWQtdmFsdWUuYyAoY2hlY2tfcmVhbF9mb3JfZml4ZWRfbW9kZSk6IEFkZCBtb2RlIGFyZ3VtZW50IHRvCglyZWFsXzJleHBOLgoJKGZpeGVkX2Zyb21fc3RyaW5nKTogRGl0dG8uCgkoZml4ZWRfdG9fZGVjaW1hbCk6IERpdHRvLgoJKGZpeGVkX2NvbnZlcnRfZnJvbV9yZWFsKTogRGl0dG8uCgkocmVhbF9jb252ZXJ0X2Zyb21fZml4ZWQpOiBEaXR0by4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKEZQKTogSW5jbHVkZSBERCBhbmQgVEQgbW9kZXMuCgkqIGNvbmZpZy9yczYwMDAvZGZwLm1kIChleHRlbmRkZHRkMiwgYWRkZGQzLCBhZGR0ZDMsIHN1YmRkMywgc3VidGQzLAoJbXVsZGQzLCBtdWx0ZDMsIGRpdmRkMywgZGl2dGQzLCBjbXBkZF9pbnRlcm5hbDEsIGNtcHRkX2ludGVybmFsMSwKCWZsb2F0ZGl0ZDIsIGZ0cnVuY2RkMiwgZml4ZGRkaTIsIGZ0cnVuY3RkMiwgZml4ZGRpMik6IE5ldy4KCjIwMDctMDktMDUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBpbml0LXJlZ3MuYyAoaW5pdGlhbGl6ZV91bmluaXRpYWxpemVkX3JlZ3MpOiBDYWxsCgllbWl0X2luc25fYmVmb3JlIHJhdGhlciB0aGFuIGFkZF9pbnNuX2JlZm9yZS4KCjIwMDctMDktMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9WQV9BUkdfUEFDSyk6IE5ldyBidWlsdC1pbi4KCSogdHJlZS5oIChDQUxMX0VYUFJfVkFfQVJHX1BBQ0spOiBEZWZpbmUuCgkqIHRyZWUtaW5saW5lLmggKGNvcHlfYm9keV9kYXRhKTogQWRkIGNhbGxfZXhwciBmaWVsZC4KCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogSW5pdGlhbGl6ZSBjYWxsX2V4cHIuCgkoY29weV9iYik6IEFwcGVuZCBhbm9ueW1vdXMgaW5saW5lIGZuIGFyZ3VtZW50cyB0byBhcmd1bWVudHMKCXdoZW4gaW5saW5pbmcgYSBDQUxMX0VYUFJfVkFfQVJHX1BBQ0sgY2FsbC4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBJc3N1ZSBhbiBlcnJvciBpZgoJQlVJTFRfSU5fVkFfQVJHX1BBQ0sgaXMgc2VlbiBkdXJpbmcgZXhwYW5kLgoJKGZvbGRfY2FsbF9leHByLCBmb2xkX2J1aWx0aW5fY2FsbF9hcnJheSk6IERvbid0IGZvbGQKCUNBTExfRVhQUl9WQV9BUkdfUEFDSyBDQUxMX0VYUFJzIG9yIGNhbGxzIHdpdGgKCV9fYnVpbHRpbl92YV9hcmdfcGFjayAoKSBjYWxsIGFzIGxhc3QgYXJndW1lbnQuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NhbGxfZXhwcik6IElmIGxhc3QgYXJndW1lbnQgdG8gYSB2YXJhcmcKCWZ1bmN0aW9uIGlzIF9fYnVpbHRpbl92YV9hcmdfcGFjayAoKSwgZGVjcmVhc2UgbnVtYmVyIG9mIGNhbGwKCWFyZ3VtZW50cyBhbmQgaW5zdGVhZCBzZXQgQ0FMTF9FWFBSX1ZBX0FSR19QQUNLIG9uIHRoZSBDQUxMX0VYUFIuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogSXNzdWUgYW4gZXJyb3IgaWYKCUNBTExfRVhQUl9WQV9BUkdfUEFDSyBDQUxMX0VYUFIgaXMgc2VlbiBkdXJpbmcgZXhwYW5kLgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IEhhbmRsZSBwcmludGluZwoJQ0FMTF9FWFBSX1ZBX0FSR19QQUNLIGJpdCBvbiBDQUxMX0VYUFJzLgoJKiBkb2MvZXh0ZW5kLnRleGkgKF9fYnVpbHRpbl92YV9hcmdfcGFjayk6IERvY3VtZW50LgoKMjAwNy0wOS0wNSAgQWRhbSBOZW1ldCAgPGFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjE1MTMKCSogYnVpbHRpbnMuYyAoYnVpbGRfYnVpbHRpbl9leHBlY3RfcHJlZGljYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGZvbGRfYnVpbHRpbl9leHBlY3QpOiBBZGQgYXJndW1lbnQgZm9yIGV4cGVjdGVkIHZhbHVlLgoJRGlzdHJpYnV0ZSBfX2J1aWx0aW5fZXhwZWN0IG92ZXIgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb25zLgoJRm9sZCBuZXN0ZWQgYnVpbHRpbl9leHBlY3RzLgoJKGZvbGRfYnVpbHRpbl8yKTogQWRqdXN0IGNhbGwgdG8gZm9sZF9idWlsdGluX2V4cGVjdC4KCjIwMDctMDktMDUgIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCglQUiB3ZWIvMzI5NjUKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzEzNzU2CgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW9ucyBUaGF0IENvbnRyb2wgT3B0aW1pemF0aW9uKTogRG9jdW1lbnQKCS1mdHJlZS1kc2UuCgoyMDA3LTA5LTA1ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvY3B1aWQuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L2RyaXZlci1pMzg2LmM6IEluY2x1ZGUgY3B1aWQuaC4KCShkZXNjcmliZV9jYWNoZSk6IFNocmluayBzaXplIGFuZCBsaW5lIHN0cmluZ3MgdG8gMTAwIGJ5dGVzLgoJKGRldGVjdF9jYWNoZXNfYW1kKTogUmV0dXJuICIiIGZvciB1bnN1cHBvcnRlZCBtYXhfZXh0X2xldmVsLgoJVXNlIF9fY3B1aWQgZnVuY3Rpb24uCgkoZGV0ZWN0X2NhY2hlc19pbnRlbCk6IFJldHVybiAiIiBmb3IgdW5zdXBwb3J0ZWQgbWF4X2xldmVsLgoJVXNlIF9fY3B1aWQgZnVuY3Rpb24uCgkoaG9zdF9kZXRlY3RfbG9jYWxfY3B1KTogQ2hhbmdlIGZlYXR1cmUgZmxhZyB2YXJpYWJsZXMgdG8KCXVuc2lnbmVkIGludC4gIEluaXRpYWxpemUgb25seSBleHRlbmRlZCBmZWF0dXJlIGZsYWcgdmFyaWFibGVzLgoJVXNlIF9fZ2V0X2NwdWlkX21heCB0byBkZXRlcm1pbmUgbWF4IHN1cHBvcnRlZCBjcHVpZCBsZXZlbC4KCVVzZSBfX2NwdWlkIGZ1bmN0aW9uIHRvIGRldGVybWluZSBzdXBwb3J0ZWQgZmVhdHVyZXMuICBGaXgKCWNhbGN1bGF0aW9uIG9mIGZhbWlseSBpZC4gIFJlbW92ZSBpc19hbWQgYW5kIGNoZWNrIHNpZ25hdHVyZQoJZGlyZWN0bHkuICBDaGVjayBmb3IgR2VvZGUgc2lnbmF0dXJlLiAgSGFuZGxlIGZhbWlseSA0IGlkLgoJW1BST0NFU1NPUl9HRU5FUklDMzJdOiBOZXcgZGVmYXVsdCBmb3IgdW5rbm93biBmYW1pbHkgaWQuICBNb3ZlCgljcHUgZGlzY292ZXJ5IGNvZGUgdG8gbG93ZXIgcGFydCBvZiB0aGUgZnVuY3Rpb24uCglbUFJPQ0VTU09SX1BFTlRJVU0sIFBST0NFU1NPUl9LNiwgUFJPQ0VTU09SX0FUSExPTl06IERvIG5vdCB0dW5lCglmb3Igc3ViLWFyY2hpdGVjdHVyZS4KCVtQUk9DRVNTT1JfUEVOVElVTVBST106IFNpbXBsaWZ5IGNwdSBkaXNjb3ZlcnkgY29kZS4KCVtQUk9DRVNTT1JfSzhdOiBBZGQgazgtc3NlMyBhcmNoaXRlY3R1cmUuCglbUFJPQ0VTU09SX05PQ09OQV06IFJlbW92ZS4KCVtQUk9DRVNTT1JfR0VORVJJQzY0XTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L3gtaTM4NiAoZHJpdmVyLWkzODYubyk6IERlcGVuZCBvbiBjcHVpZC5oLgoJKiBjb25maWcvaTM4Ni9jcnRmYXN0bWF0aC5jOiBJbmNsdWRlIGNwdWlkLmguICBVc2UgX19nZXRfY3B1aWQKCXRvIGNoZWNrIGZvciBTU0UgYW5kIEZYU0FWRSBzdXBwb3J0LgoJKiBjb25maWcvaTM4Ni90LWNydGZtIChjcnRmYXN0bWF0aC5vKTogRGVwZW5kIG9uIGNwdWlkLmguCglBZGQgLW1pbmxpbmUtYWxsLXN0cmluZ29wcy4KCSogY29uZmlnLmdjYyAoaVszNDU2N104Ni0qLSopOiBBZGQgY3B1aWQuaCB0byBleHRyYV9oZWFkZXJzLgoJKHg4Nl82NC0qLSopOiBEaXR0by4KCjIwMDctMDktMDUgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vbGludXgtdW53aW5kLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvYmZpbi9saW51eC5oIChNRF9VTldJTkRfU1VQUE9SVCk6IERlZmluZS4KCSogY29uZmlnL2JmaW4vdWNsaW51eC5oIChNRF9VTldJTkRfU1VQUE9SVCk6IERlZmluZS4KCjIwMDctMDktMDUgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cnluYXMuYml2ZWluaXNAZ21haWwuY29tPgoKCSogTWFrZWZpbGUuaW4gKHN0bXQubyk6IEFkZCBhbGxvYy1wb29sLmggZGVwZW5kZW5jeS4KCSogc3RtdC5jOiBJbmNsdWRlIGFsbG9jLXBvb2wuaC4KCShzdHJ1Y3QgY2FzZV9ub2RlKTogUmVtb3ZlIEdUWSBtYXJrZXIuCgkoYWRkX2Nhc2Vfbm9kZSk6IE5ldyBwYXJhbWV0ZXIgY2FzZV9ub2RlX3Bvb2wuICBVc2UgaXQgZm9yCglhbGxvY2F0aW9uIG9mIHIuCgkoZXhwYW5kX2Nhc2UpOiBOZXcgYWxsb2NhdGlvbiBwb29sIGNhc2Vfbm9kZV9wb29sLiAgSW5pdGlhbGl6ZSBpdCwKCXBhc3MgdG8gYWRkX2Nhc2Vfbm9kZSBhbmQgZnJlZSBpdC4KCjIwMDctMDktMDUgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBEYXZpZCBVbmcgIDxkYXZpZHVAbWlwcy5jb20+CgkgICAgTmlnZWwgU3RlcGhlbnMgPG5pZ2VsQG1pcHMuY29tPgoKCUFkZCBtaXBzMTYvbm9taXBzMTYgZnVuY3Rpb24gYXR0cmlidXRlcyBhbmQgLW1mbGlwLW1pcHMxNiBvcHRpb24KCWZvciB0ZXN0aW5nIG1peGVkLW1vZGUgY29tcGlsYXRpb24uCgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobWZsaXAtbWlwczE2KTogTmV3LgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChTWU1CT0xfRkxBR19NSVBTMTZfRlVOQyk6IERlZmluZS4KCShTWU1CT0xfRkxBR19NSVBTMTZfRlVOQ19QKTogRGVmaW5lLgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2Jhc2VfdGFyZ2V0X2ZsYWdzKTogTmV3LgoJKG1pcHNfYmFzZV9taXBzMTYpOiBOZXcuCgkobWlwc19iYXNlX3NjaGVkdWxlX2luc25zKTogTmV3LgoJKG1pcHNfYmFzZV9yZW9yZGVyX2Jsb2Nrc19hbmRfcGFydGl0aW9uKTogTmV3LgoJKG1pcHNfYmFzZV9hbGlnbl9sb29wcyk6IE5ldy4KCShtaXBzX2Jhc2VfYWxpZ25fanVtcHMpOiBOZXcuCgkobWlwc19iYXNlX2FsaWduX2Z1bmN0aW9ucyk6IE5ldy4KCShtaXBzMTZfZmxpcHBlcik6IE5ldy4KCShtaXBzX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCAibWlwczE2IiBhbmQgIm5vbWlwczE2IiBlbnRyaWVzLgoJKFRBUkdFVF9TRVRfQ1VSUkVOVF9GVU5DVElPTik6IERlZmluZS4KCShtaXBzX21pcHMxNl90eXBlX3AsIG1pcHNfbm9taXBzMTZfdHlwZV9wKTogTmV3LgoJKG1pcHNfY29tcF90eXBlX2F0dHJpYnV0ZXMpOiBDaGVjayBtaXBzMTYvbm9taXBzMTYgYXR0cmlidXRlcy4KCShtaXBzX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogTWFrZSBpdCBkZWFsIHdpdGggZnVuY3Rpb25zIHdpdGgKCW1pcHMxNiBhdHRyaWJ1dGVzLgoJKG1pcHNfaW5pdF9zcGxpdF9hZGRyZXNzZXMpOiBOZXcsIHNwbGl0IG91dCBmcm9tIG92ZXJyaWRlX29wdGlvbnMuCgkobWlwc19pbml0X3JlbG9jcyk6IE5ldywgc3BsaXQgb3V0IGZyb20gb3ZlcnJpZGVfb3B0aW9ucy4KCSh3YXNfbWlwczE2X3ApOiBOZXcuCgkobWlwc19zZXRfbWlwczE2X21vZGUpOiBOZXcsIHNwbGl0IG91dCBmcm9tIG92ZXJyaWRlX29wdGlvbnMuCgkobWlwc19zZXRfY3VycmVudF9mdW5jdGlvbik6IE5ldy4KCShvdmVycmlkZV9vcHRpb25zKTogQWRkIHNvcnJ5IGZvciB1bnN1cHBvcnRlZCBtaXBzMTYvcGljCgljb21iaW5hdGlvbi4gIFJlbW92ZSBlcnJvciBmb3IgbWlwczE2L2RzcCBjb21iaW5hdGlvbi4JU2F2ZQoJYmFzZSBvcHRpb24gc2V0dGluZ3MuICAKCShtaXBzX2ZpbGVfc3RhcnQpOiBNb3ZlIG1pcHMxNiBtb2RlIHNldHRpbmcgb3V0cHV0IGZyb20gaGVyZS4uLi4KCShtaXBzX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IC4uLi50byBoZXJlLgoJKG1pcHNfb3V0cHV0X21pX3RodW5rKTogQ2hlY2sgZm9yIG1pcHMxNiBmdW5jdGlvbi4KCShidWlsZF9taXBzMTZfZnVuY3Rpb25fc3R1Yik6IERvbid0IHNldCAubWlwczE2IGhlcmUuCgkoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IExpa2V3aXNlLgoJKG1pcHNfZXhwYW5kX2J1aWx0aW4pOiBFcnJvciBpbiBtaXBzMTYgbW9kZS4KCShtaXBzX3VzZV9taXBzMTZfbW9kZV9wKTogTmV3LgoJKG1pcHNfZW5jb2RlX3NlY3Rpb25faW5mbyk6IENoZWNrIGZvciBtaXBzMTYgZnVuY3Rpb24sIGFuZCBzZXQKCVNZTUJPTF9SRUZfRkxBR1MgYWNjb3JkaW5nbHkuCgoJKiBkb2MvZXh0ZW5kLnRleGkgKEZ1bmN0aW9uIEF0dHJpYnV0ZXMpOiBEb2N1bWVudCBuZXcKCW1pcHMxNi9ub21pcHMxNiBhdHRyaWJ1dGVzLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5KTogQWRkIC1tZmxpcC1taXBzMTYuCgkoTUlQUyBPcHRpb25zKTogRG9jdW1lbnQgLW1mbGlwLW1pcHMxNi4KCjIwMDctMDktMDUgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19sZWdpdGltaXplX3Rsc19hZGRyZXNzKTogQ2FsbCBzb3JyeQoJaWYgd2UgZW5jb3VudGVyIFRMUyBhZGRyZXNzIGluIE1JUFMxNiBtb2RlLgoJKG1pcHNfbGVnaXRpbWl6ZV9jb25zdF9tb3ZlKTogQ2hlY2sgY2Fubm90X2ZvcmNlX2NvbnN0X21lbSBmb3IKCXRoZSAoY29uc3QgKHBsdXMgc3ltYm9sIG9mZnNldCkpIGNhc2U7IHRoaXMgZm9yY2VzIGludmFsaWQgVExTCglhZGRyZXNzIGluIE1JUFMxNiBtb2RlIHRvIGJlIGNhdWdodCBieSB0aGUgYWJvdmUgY2FsbCB0byBzb3JyeS4KCShvdmVycmlkZV9vcHRpb25zKTogRG9uJ3QgcmVzZXQgdGFyZ2V0bS5oYXZlX3RscyBpbiBNSVBTMTYgbW9kZSwKCWJlY2F1c2UgdGhhdCBub3cgZW5hYmxlcyBlbXV0bHMsIHdoaWNoIGlzIG5vdCBBQkkgY29tcGF0aWJsZQoJd2l0aCBuYXRpdmUgVExTIGluIG5vbi1NSVBTMTYgbW9kZS4KCjIwMDctMDktMDUgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCglBZGQgdGFyZ2V0IGhvb2sgaW52b2tlZCB3aGVuIGNmdW4gY2hhbmdlcy4KCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfU0VUX0NVUlJFTlRfRlVOQ1RJT04pOiBEb2N1bWVudC4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIHNldF9jdXJyZW50X2Z1bmN0aW9uLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9TRVRfQ1VSUkVOVF9GVU5DVElPTik6IERlZmluZS4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBBZGQgaW5pdGlhbGl6ZXIgZm9yIHNldF9jdXJyZW50X2Z1bmN0aW9uLgoJKiB0cmVlLmggKHB1c2hfc3RydWN0X2Z1bmN0aW9uKTogTmV3LgoJKiB0cmVlLWlubGluZS5oIChwdXNoX2NmdW4sIHBvcF9jZnVuKTogTW92ZSBkZWNsYXJhdGlvbnMgdG8uLi4KCSogZnVuY3Rpb24uaDogSGVyZS4KCShzZXRfY2Z1bik6IERlY2xhcmUuCgkqIHRyZWUtaW5saW5lLmMgKGNmdW5fc3RhY2ssIHB1c2hfY2Z1biwgcG9wX2NmdW4pOiBNb3ZlZCB0by4uLgoJKiBmdW5jdGlvbi5jOiBIZXJlLgoJKHB1c2hfZnVuY3Rpb25fY29udGV4dF90byk6IFVzZSBhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24KCXRvIGNyZWF0ZSBudWxsIGNvbnRleHQsIG5vdCBpbml0X2R1bW15X2Z1bmN0aW9uX3N0YXJ0LiAgVXNlIHNldF9jZnVuLgoJKHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20pOiBVc2Ugc2V0X2NmdW4uCgkoaW5fZHVtbXlfZnVuY3Rpb24pOiBOZXcuCgkoaW52b2tlX3NldF9jdXJyZW50X2Z1bmN0aW9uX2hvb2spOiBOZXcuCgkoc2V0X2NmdW4pOiBOZXcuCgkocHVzaF9jZnVuLCBwb3BfY2Z1bik6IFVzZSBzZXRfY2Z1bi4KCShwdXNoX3N0cnVjdF9mdW5jdGlvbik6IE5ldy4KCShhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24pOiBDYWxsIGludm9rZV9zZXRfY3VycmVudF9mdW5jdGlvbl9ob29rCgliZWZvcmUgcmV0dXJuaW5nLgoJKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQpOiBEb24ndCBzZXQgY2Z1biBoZXJlLiAgUmVtb3ZlIHVudXNlZAoJYXJndW1lbnQ7IGZpeCBhbGwgY2FsbGVycy4KCShpbml0X2R1bW15X2Z1bmN0aW9uX3N0YXJ0KTogRmlkZGxlIHdpdGggaW5fZHVtbXlfZnVuY3Rpb24uICBDYWxsCglwdXNoX3N0cnVjdF9mdW5jdGlvbi4KCShpbml0X2Z1bmN0aW9uX3N0YXJ0KTogU2V0IGNmdW4gaGVyZS4KCShleHBhbmRfZHVtbXlfZnVuY3Rpb25fZW5kKTogRmlkZGxlIHdpdGggaW5fZHVtbXlfZnVuY3Rpb24uICBQb3AgY2Z1bi4KCSogb21wLWxvdy5jIChjcmVhdGVfb21wX2NoaWxkX2Z1bmN0aW9uKTogVXNlIHB1c2hfc3RydWN0X2Z1bmN0aW9uCglhbmQgcG9wX2NmdW4gdG8gc2F2ZS9yZXN0b3JlIHN0YXRlLgoJKGV4cGFuZF9vbXBfcGFyYWxsZWwpOiBSZW1vdmUgdW51c2VkIHNhdmVkX2NmdW4gdmFyaWFibGUuCgkqIGNncmFwaHVuaXQuYyAoaXBhX3Bhc3Nlcyk6IFVzZSBzZXRfY2Z1bi4KCSogZ2ltcGxlLWxvdy5jIChyZWNvcmRfdmFyc19pbnRvKTogVXNlIHB1c2hfY2Z1bi9wb3BfY2Z1biBoZXJlLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2Fic3RyYWN0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIG1hdHJpeC1yZW9yZy5jICh0cmFuc2Zvcm1fYWxsb2NhdGlvbl9zaXRlcyk6IExpa2V3aXNlLgoJKG1hdHJpeF9yZW9yZyk6IFVzZSBzZXRfY2Z1bi4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfZnVuY3Rpb25fdHJlZSk6IFVzZSBwdXNoX2NmdW4vcG9wX2NmdW4gaGVyZS4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBSZW1vdmUgb25lIHJlZHVuZGFudAoJYXNzaWdubWVudCB0byBjZnVuOyB1c2Ugc2V0X2NmdW4gZm9yIHRoZSBvdGhlci4KCSogdHJlZS1jZmcuYyAobW92ZV9zZXNlX3JlZ2lvbl90b19mbik6IFVzZSBzZXRfY2Z1bi4KCShkdW1wX2Z1bmN0aW9uX3RvX2ZpbGUpOiBVc2UgcHVzaF9jZnVuL3BvcF9jZnVuIGhlcmUuCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVc2Ugc2V0X2NmdW4uCgoyMDA3LTA5LTA1ICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCSogcmVncmVuYW1lLmMgKHJlcmVuYW1lX29wdGltaXplKTogVXNlIGRlZmVycmVkIHJlc2Nhbm5pbmcgYW5kCglpbnNlcnQgZXhwbGljaXQgY2FsbHMgdG8gcmVzY2FuIGluc25zIHdoZW4gY2hhbmdlZC4KCQoyMDA3LTA5LTA1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBvcHRhYnMuYyAobGliZnVuY19lbnRyeSk6IENoYW5nZSBvcHRhYiB0byBpbnRlZ2VyLgoJKGhhc2hfbGliZnVuYywgY29udmVydF9vcHRhYl9saWJmdW5jLCBvcHRhYl9saWJmdW5jLAoJc2V0X29wdGFiX2xpYmZ1bmMsIHNldF9jb252X2xpYmZ1bmMpOiBVc2Ugb3B0YWJsZSBpbmRleGVzIGluc3RlYWQKCW9mIHBvaW50ZXJzIGZvciBoYXNoaW5nLgoKMjAwNy0wOS0wNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVncmVuYW1lLmMgKHBhc3NfcmVncmVuYW1lLCBwYXNzX2Nwcm9wX2hhcmRyZWcpOiBBZGQgUlRMIHNoYXJpbmcKCXZlcmlmaWVyLgoJKiBmd3Byb3AuYyAocGFzc19ydGxfZndwcm9wLCBwYXNzX3J0bF9md3Byb3BfYWRkKTogTGlrZXdpc2UuCgkqIHNlZS5jIChwYXNzX3NlZSk6IExpa2V3aXNlLgoJKiB0cmFjZXIuYyAocGFzc190cmFjZXIpOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC1nY3NlLmMgKHBhc3NfZ2NzZTIpOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC5jIChwYXNzX3Bvc3RyZWxvYWRfY3NlKTogTGlrZXdpc2UuCgkqIG1vZGUtc3dpdGNoaW5nLmMgKHBhc3NfbW9kZV9zd2l0Y2hpbmcpOiBMaWtld2lzZS4KCSogbW9kdWxvLXNjaGVkLmMgKHBhc3Nfc21zKTogTGlrZXdpc2UuCgkqIGNzZS5jIChjc2VfaW5zbik6IExpa2V3aXNlLgoJKiB3ZWIuYyAocGFzc193ZWIpOiBMaWt3ZWlzZS4KCSogY29tYmluZS1zdGFjay1hZGouYyAocGFzc19zdGFja19hZGp1c3RtZW50cyk6IExpa2V3aXNlLgoJKiBkY2UuYyAocGFzc191ZF9ydGxfZGNlLCBwYXNzX2Zhc3RfcnRsX2RjZSk6IExpa2V3aXNlLgoJKiBsb29wLWluaXQuYyAocGFzc19ydGxfbG9vcF9pbml0KTogTGlrZXdpc2UuCgkocGFzc19ydGxfbG9vcF9kb25lLCBwYXNzX3J0bF9tb3ZlX2xvb3BfLCBwYXNzX3J0bF91bnN3aXRjaCwKCXBhc3NfcnRsX3Vucm9sbF9hbmQsIHBhc3NfcnRsX2RvbG9vcCk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAocGFzc19nbG9iYWxfYWxsb2MpOiBMaWtld2lzZS4KCSogaWZjdnQuYyAocGFzc19ydGxfaWZjdnQsIHBhc3NfaWZfYWZ0ZXJfY29tYmluZSwKCXBhc3NfaWZfYWZ0ZXJfcmVsb2FkKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChwYXNzX3BlZXBob2xlMiwgcGFzc19zcGxpdF9mb3Jfc2hvcmVuX2JyYW5jaGVzKTogTGlrZXdpc2UuCgkqIGRzZS5jIChwYXNzX3J0bF9kc2UxLCBwYXNzX3J0bF9kc2UyKTogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYyAocGFzc19yZWdtb3ZlKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHBhc3NfdGhyZWFkX3Byb2xvZ3VndWVzX2VwaWxvZ3Vlcyk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKHBhc3NfZ2NzZSk6IExpa2V3aXNlLgoJKiBydGwtZmFjdG9yaW5nLmMgKHBhc3NfcnRsX3NlcWFic3RyKTogTGlrZXdpc2UuCgkqIGxvd2VyLXN1YnJlZy5jIChwYXNzX2xvd2VyX3N1YnJlZzIpOiBMaWtld2lzZS4KCSogYnQtbG9hZC5jIChwYXNzX2JyYW5jaF90YXJnZXRfbG9hZCk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChwYXNzX3Vuc2hhcmVfYWxsX3J0bCk6IExpa2V3aXNlLgoJKiBjZmdjbGVhbnVwLmMgKHBhc3NfanVtcCwgcGFzc19qdW1wMik6IExpa2V3aXNlLgoJKiBjb21iaW5lLmMgKHBhc3NfY29tYmluZSk6IExpa2V3aXNlLgoJKiBiYi1yZW9yZGVyLmMgKHBhc3NfZHVwbGljYXRlX2NvbXAsIHBhc3NfcmVvcmRlcl9ibG9ja3MpOiBMaWtld2lzZS4KCShwYXNzX3BhcnRpdGlvbl9ibG9ja3MpOiBMaWtld2lzZS4KCSogdmFyLXRyYWNraW5nLmMgKHBhc3NfdmFyaWFibGVfdHJhY2spOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmMgKHBhc3Nfc3RhY2tfcmVnc19ydW4pOiBMaWtld2lzZS4KCSogc2NoZWQtcmduLmMgKHBhc3Nfc2NoZWQsIHBhc3Nfc2NoZWQyKTogTGlrZXdpc2UuCgkqIHBhc3Nlcy5jIChwYXNzX3Bvc3RyZWxvYWQpOiBMaWtld2lzZS4KCShleGVjdXRlX2Z1bmN0aW9uX3RvZG8pOiBBZGQgVE9ET192ZXJpZnlfcnRsX3NoYXJpbmcgaGFuZGxpbmcgY29kZS4KCSogdHJlZS1wYXNzLmggKFRPRE9fdmVyaWZ5X3J0bF9zaGFyaW5nKTogTmV3LgoJKFRPRE9fdXBkYXRlX3NzYSwgVE9ET191cGRhdGVfc3NhX25vX3BoaSwgVE9ET191cGRhdGVfc3NhX2Z1bGxfcGhpLAoJVE9ET191cGRhdGVfc3NhX29ubHlfdmlydHVhbHMsIFRPRE9fcmVtb3ZlX3VudXNlZF9sb2NhbHMsCglUT0RPX3NldF9wcm9wcywgVE9ET19kZl9maW5pc2gsIFRPRE9fZGZfdmVyaWZ5LAoJVE9ET19tYXJrX2ZpcnN0X2luc3RhbmNlLCBUT0RPX3JlYnVpbGRfYWxpYXMpOiBSZW51bWJlci4KCjIwMDctMDktMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoYWxsX29uZXNfbWFza19wLCBzaWduX2JpdF9wLCBzaW1wbGVfb3BlcmFuZF9wLAoJZm9sZF9yZWFsX3plcm9fYWRkaXRpb25fcCwgcmVvcmRlcl9vcGVyYW5kc19wLAoJZGl2X2lmX3plcm9fcmVtYWluZGVyLCBmb2xkX3VuZGVmZXJfb3ZlcmZsb3dfd2FybmluZ3MsCglpbnRfYmlub3BfdHlwZXNfbWF0Y2hfcCwgZm9sZF9jb252ZXJ0X2NvbnN0X2ludF9mcm9tX2ludCwKCWZvbGRfY29udmVydF9jb25zdF9pbnRfZnJvbV9yZWFsLAoJZm9sZF9jb252ZXJ0X2NvbnN0X2ludF9mcm9tX2ZpeGVkLAoJZm9sZF9jb252ZXJ0X2NvbnN0X3JlYWxfZnJvbV9yZWFsLAoJZm9sZF9jb252ZXJ0X2NvbnN0X3JlYWxfZnJvbV9maXhlZCwKCWZvbGRfY29udmVydF9jb25zdF9maXhlZF9mcm9tX2ZpeGVkLAoJZm9sZF9jb252ZXJ0X2NvbnN0X2ZpeGVkX2Zyb21faW50LAoJZm9sZF9jb252ZXJ0X2NvbnN0X2ZpeGVkX2Zyb21fcmVhbCwgbWF5YmVfbHZhbHVlX3AsCglmb2xkX2NoZWNrc3VtX3RyZWUsIGZvbGRfY2hlY2tfZmFpbGVkLCBwcmludF9mb2xkX2NoZWNrc3VtLAoJZGVidWdfZm9sZF9jaGVja3N1bSwgbXVsdGlwbGVfb2ZfcCk6IENvbnN0aWZ5LgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGdldF9saW5lbm8pOiBMaWtld2lzZS4KCSogdHJlZS1mbG93LmggKGdldF9saW5lbm8pOiBMaWtld2lzZS4KCSogdHJlZS1vYmplY3Qtc2l6ZS5jIChjb21wdXRlX29iamVjdF9vZmZzZXQsIGFkZHJfb2JqZWN0X3NpemUsCglhbGxvY19vYmplY3Rfc2l6ZSwgcGFzc190aHJvdWdoX2NhbGwpOiBMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAob3Bfc3ltYm9sLCBwcmludF9jYWxsX25hbWUsCglwcmludF9zdHJ1Y3RfZGVjbCwgZG9fbml5KTogTGlrZXdpc2UuCgkqIHRyZWUuaCAoZm9sZF91bmRlZmVyX292ZXJmbG93X3dhcm5pbmdzLCBtdWx0aXBsZV9vZl9wLAoJZGVidWdfZm9sZF9jaGVja3N1bSk6IExpa2V3aXNlLgoKMjAwNy0wOS0wNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIG1pZGRsZS1lbmQvMzMwMjkKCSogbG93ZXItc3VicmVnLmMgKHJlc29sdmVfY2xvYmJlcik6IElmIHdlIHJlbW92ZSBhIFJFR19MSUJDQUxMCglub3RlLCByZW1vdmUgdGhlIGFzc29jaWF0ZWQgUkVHX1JFVFZBTCBub3RlLgoKMjAwNy0wOS0wNCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJKiBjb25maWcuZ2NjIChwb3dlcnBjKi0qLSopOiBJbnN0YWxsCglzcHUydm14LmgsIHZlY190eXBlcy5oLCBhbmQgc2kydm14LmggaGVhZGVycy4KCSogY29uZmlnL3JzNjAwMC9zcHUydm14Lmg6IE5ldyBoZWFkZXIuCgkqIGNvbmZpZy9yczYwMDAvc2kydm14Lmg6IE5ldyBoZWFkZXIuCgkqIGNvbmZpZy9yczYwMDAvdmVjX3R5cGVzLmg6IE5ldyBoZWFkZXIuCgoyMDA3LTA5LTA1ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHZhcmFzbS5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogRml4IGNvbW1lbnQgdHlwby4KCjIwMDctMDktMDUgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9wcHVfaW50cmluc2ljcy5oIChfX2xkYXJ4KTogVXNlIGBaJyBjb25zdHJhaW50LAoJbm90IGBtJyBmb3IgKnB0cnAuCgkoX19zdGRjeCk6IE1ha2UgYXNtIHZvbGF0aWxlLgoJKF9fc3R3Y3gsIF9fc3RkY3gpOiBSZXR1cm4gb25seSAwIG9yIDEuCgoyMDA3LTA5LTA1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUmV2ZXJ0OgoKCTIwMDctMDktMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSogdHJlZS10YWlsY2FsbC5jIChlbGltaW5hdGVfdGFpbF9jYWxsKTogRXhwZWN0IHVucmVuYW1lZCByZXR1cm4gdmFsdWUuCgoJMjAwNy0wOS0wNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmlydHVhbF9vcGVyYW5kKTogT25seSBtYXJrCglzdG9yZXMgYXMgaGFzX3ZvbGF0aWxlX29wcyBpZiBhbGlhcyBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlLgoKMjAwNy0wOS0wNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3RyYW1wLmFzbTogSW5jbHVkZSBjb25maWcuaC4KCUNoZWNrIF9fUElDX18gb3IgX19waWNfXyBtYWNybyBpbnN0ZWFkIG9mIFNIQVJFRC4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyMzAwCgkqIHNlZS5jIChzZWVfY29weV9pbnNuKTogTmV3IGZ1bmN0aW9uLgoJKHNlZV9kZWZfZXh0ZW5zaW9uX25vdF9tZXJnZWQsIHNlZV9tZXJnZV9vbmVfdXNlX2V4dGVuc2lvbiwKCXNlZV9tZXJnZV9vbmVfZGVmX2V4dGVuc2lvbik6IFVzZSBpdC4gIEF2b2lkIGNoYW5naW5nCglQUkVWX0lOU04vTkVYVF9JTlNOIGNoYWlucyBkaXJlY3RseSwgaW5zdGVkIGVtaXQgaW5zbnMKCWludG8gc2VxdWVuY2VzLiAgQ2FsbCBkZl9pbnNuX2RlbGV0ZSBvbiB0ZW1wb3JhcnkgaW5zbnMKCXRoYXQgd29uJ3QgYmUgZW1pdHRlZCBpbnRvIHRoZSBpbnNuIHN0cmVhbS4KCShyZXN0X29mX2hhbmRsZV9zZWUpOiBUdXJuIG9mZiBERl9ERUZFUl9JTlNOX1JFU0NBTgoJYW5kIHJ1biBkZl9wcm9jZXNzX2RlZmVycmVkX3Jlc2NhbnMgKCkgYmVmb3JlIHJ1bl9mYXN0X2RjZS4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzAxNwoJKiB0cmVlLWRhdGEtcmVmLmMgKHNwbGl0X2NvbnN0YW50X29mZnNldCkgPGNhc2UgU1NBX05BTUU+OiBEb24ndAoJcmVjdXJzZSBmb3IgcHVyZSBvciBjb25zdCBmdW5jdGlvbiBjYWxscy4KCjIwMDctMDktMDQgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cnluYXMuYml2ZWluaXNAZ21haWwuY29tPgoKCSogYy1mb3JtYXQuYzogSW5jbHVkZSBhbGxvYy1wb29sLmguCgkoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IE5ldyBhcmd1bWVudCBmd3RfYWxsb2MuICBVc2UgYWxsb2NhdGlvbgoJcG9vbCBpbnN0ZWFkIG9mIEdDLiAgUmVtb3ZlIEdDIGRlYWxsb2NhdGlvbiBjb2RlLgoJKGNoZWNrX2Zvcm1hdF9hcmcpOiBDcmVhdGUgYWxsb2NhdGlvbiBwb29sLCBwYXNzIGl0IHRvCgljaGVja19mb3JtYXRfaW5mb19tYWluIGFuZCBmcmVlIGl0IGFmdGVyd2FyZHMuCgkqIE1ha2VmaWxlLmluIChjLWZvcm1hdC5vKTogQWRkIGFsbG9jLXBvb2wuaCBkZXBlbmRlbmN5LgoKMjAwNy0wOS0wNSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3BwdV9pbnRyaW5zaWNzLmggKF9fcHJvdGVjdGVkX3N0cmVhbV9jb3VudCk6CglSZW5hbWUgY291bnQgbWFjcm8gYXJ1Z21lbnQgZm9yIGNsYXJpdHkuCgkoX19wcm90ZWN0ZWRfdW5saW1pdGVkX3N0cmVhbV9zZXQpOiBQYXNzIFVHPTEgdG8gX19kY2J0X1RIMTAwMC4KCShfX3Byb3RlY3RlZF9zdHJlYW1fc2V0KTogTGlrZXdpc2UsIHBhc3MgMC4KCjIwMDctMDktMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtdGFpbGNhbGwuYyAoZWxpbWluYXRlX3RhaWxfY2FsbCk6IEV4cGVjdCB1bnJlbmFtZWQgcmV0dXJuIHZhbHVlLgoKMjAwNy0wOS0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaW52b2tlLnRleGkgKC1maW5saW5lLXNtYWxsLWZ1bmN0aW9ucyk6IERvY3VtZW50LgoJKiBpcGEtaW5saW5lLmMgKGNncmFwaF9kZWZhdWx0X2lubGluZV9wKTogRG8gbm90IHVzZSBERUNMX0lOTElORQoJd2hlbiBkZWNpZGluZyB3aGF0IGlzIGlubGluYWJsZS4KCShjZ3JhcGhfZGVjaWRlX3JlY3Vyc2l2ZV9pbmxpbmluZyk6IEhhbmRsZSBmbGFnX2lubGluZV9mdW5jdGlvbnMuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19vZl9zbWFsbF9mdW5jdGlvbik6IEhhbmRsZSBuZXcgZmxhZ3MuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19pbmNyZW1lbnRhbGx5KTogTGlrZXdpc2UuCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBFbmFibGUgZmxhZ19pbmxpbmVfc21hbGxfZnVuY3Rpb25zIGF0IC1PMgoJKiBjb21tb24ub3B0IChmaW5saW5lLXNtYWxsLWZ1bmN0aW9ucyk6IE5ldy4KCSogTWFrZWZpbGUuaW4gKGJ1aWxkL2dlbmd0eXBlLm8td2Fybik6IFdvcmsgYXJvdW5kIFBSMjk0NzgKCjIwMDctMDktMDQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF92aXJ0dWFsX29wZXJhbmQpOiBPbmx5IG1hcmsKCXN0b3JlcyBhcyBoYXNfdm9sYXRpbGVfb3BzIGlmIGFsaWFzIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUuCgoyMDA3LTA5LTA0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vbGliZ2NjLWJwYWJpLnZlcjogQWRkIF9VbndpbmRfQmFja3RyYWNlIGFzIEdDQ180LjMuMC4KCjIwMDctMDktMDQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9saWJ1bndpbmQuUyAoVU5XSU5EX1dSQVBQRVIgX1Vud2luZF9CYWNrdHJhY2UpOiBOZXcuCgkqIGNvbmZpZy9hcm0vdW53aW5kLWFybS5oIChfX2dudV9VbndpbmRfQmFja3RyYWNlKTogTmV3LgoJKiBjb25maWcvYXJtL3Vud2luZC1hcm0uYyAoX19nbnVfVW53aW5kX0JhY2t0cmFjZSk6IE5ldy4KCjIwMDctMDktMDQgIEVtbWFudWVsIFRob21lICA8RW1tYW51ZWwuVGhvbWVAaW5yaWEuZnI+CgoJUFIgYysrLzE0MTc4CgkqIGNvbW1vbi5vcHQ6IE1lbnRpb24gQUJJIHZlcnNpb24gMiBpbiBjb21tZW50LgoKMjAwNy0wOS0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogb3B0YWJzLmMgKGRlYnVnX29wdGFiX2xpYmZ1bmMpOiBVcGRhdGU7IG1ha2UgYXZhaWxhYmxlIHRvIGdkYi4KCShsaWJmdW5jX2VudHJ5KTogTmV3IHN0cnVjdHVyZS4KCShsaWJmdW5jX2hhc2gpOiBOZXcgaGFzaHRhYmxlLgoJKGhhc2hfbGliZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShlcV9saWJmdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGNvbnZlcnRfb3B0YWJfbGliZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShvcHRhYl9saWJmdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9iaW5vcCwgc2lnbl9leHBhbmRfYmlub3AsIGV4cGFuZF90d292YWxfYmlub3BfbGliZnVuYywKCWV4cGFuZF91bm9wLCBwcmVwYXJlX2NtcF9pbnNuLCBwcmVwYXJlX2Zsb2F0X2luc24sIGdlbl9hZGQyX2luc24sCglleHBhbmRfZmxvYXQsIGV4cGFuZF9maXgsIG5ld19vcHRhYiwgbmV3X2NvbnZlcnRfb3B0YWIpOgoJIFVwZGF0ZSBmb3IgbmV3IGxpYmZ1bmMgQVBJLgoJKGluaXRfbGliZnVuYywgaW5pdF9pbnRlZ3JhbF9saWJmdW5jcywKCWluaXRfZmxvYXRpbmdfbGliZnVuY3MsIGluaXRfaW50ZXJjbGFzc19jb252X2xpYmZ1bmNzCglpbml0X2ludHJhY2xhc3NfY29udl9saWJmdW5jcyk6IFJlbW92ZTsgcmVvcmdhbml6ZSBhbGwgbG9naWMgdG86CgkoZ2VuX2xpYmZ1bmMsIGdlbl9pbnRfbGliZnVuYywgZ2VuX2ZwX2xpYmZ1bmMsIGdlbl9pbnRfZnBfbGliZnVuYywKCWdlbl9pbnR2X2ZwX2xpYmZ1bmMsIGdlbl9pbnRlcmNsYXNzX2NvbnZfbGliZnVuYywKCWdlbl9pbnRfdG9fZnBfY29udl9saWJmdW5jLCBnZW5fdWZsb2F0X2NvbnZfbGliZnVuYywKCWdlbl9pbnRfdG9fZnBfbm9uZGVjaW1hbF9jb252X2xpYmZ1bmMsIGdlbl9mcF90b19pbnRfY29udl9saWJmdW5jLAoJZ2VuX2ludHJhY2xhc3NfY29udl9saWJmdW5jLCBnZW5fdHJ1bmNfY29udl9saWJmdW5jLAoJZ2VuX2V4dGVuZF9jb252X2xpYmZ1bmMpOiBOZXcuCgkoaW5pdF9vbmVfbGliZnVuYyk6IFJldmFtcCBmb3IgaGFzaHRhYmxlcy4KCShzZXRfY29udl9saWJmdW5jKTogTGlrZXdpc2UuCgkoaW5pdF9vcHRhYnMpOiBJbml0aWFsaXplIGhhc2h0YWJsZTsgdXNlIGxhenkgaW5pdGlhbGl6YXRpb24gd2hlcmUKCXBvc3NpYmxlLgoJKiBvcHRhYnMuaCAob3B0YWJfaGFuZGxlcnMpOiBNb3ZlIG91dCBvZiBHR0MuCgkob3B0YWIsIGNvbnZlcnRfb3B0YWIpOiBNb3ZlIG91dCBvZiBHR0M7IGFkZCBsYXp5IGdlbiBpbmZvLgoJKGNvZGVfdG9fb3B0YWIsIGNvbnZlcnRfb3B0YWJfdGFibGUsIG9wdGFiX3RhYmxlKTogTW92ZSBvdXQgb2YgR0dDLgoJKG9wdGFiX2xpYmZ1bmMsIGNvbnZlcnRfb3B0YWJfbGliZnVuYyk6IE5ldy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fcG93aSk6IFVwZGF0ZSBmb3IgbmV3IEFQSS4KCSogZXhwci5jIChjb252ZXJ0X21vdmUpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKGV4cGFuZF9kaXZtb2QpOiBMaWtld2lzZS4KCjIwMDctMDktMDQgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IEFsbG9jYXRlIHNwYWNlIGZvciB0aGUKCUdPVCBwb2ludGVyIG9ubHkgaWYgdGhlcmUgaXMgYSBjb25zdGFudCBwb29sLiAgVXNlIHRoZSBhbGxvY2F0ZWQgc3BhY2UKCWZvciBTUEUgYWxzby4KCjIwMDctMDktMDQgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LXVud2luZC5oIChwcGNfZmFsbGJhY2tfZnJhbWVfc3RhdGUpOiBDb3JyZWN0Cgl0eXBvIGZvciBBbHRpVmVjLgoKMjAwNy0wOS0wNCAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoJICAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCSAgICBSLiBDbGludCBXaGFsZXkgIDx3aGFsZXlAY3MudXRzYS5lZHU+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1mYXNzb2NpYXRpdmUtbWF0aCwgLWZyZWNpcHJvY2FsLW1hdGgpOgoJRG9jdW1lbnQgbmV3IGZsYWdzLgoJKiB0cmVlLXRhaWxjYWxsLmMgKHByb2Nlc3NfYXNzaWdubWVudCk6IFVzZSAtZmFzc29jaWF0aXZlLW1hdGgKCXdoZW4gcmVvZGVyaW5nIG9wZXJhbmRzIG9mIGZsb2F0aW5nLXBvaW50IHR5cGUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb21wYXJpc29uLCBmb2xkX2JpbmFyeSk6IFVzZQoJLWZhc3NvY2lhdGl2ZS1tYXRoIGFuZCAtZnJlY2lwcm9jYWwtbWF0aCBpbnN0ZWFkIG9mCgktZnVuc2FmZS1tYXRoLW9wdGltaXphdGlvbiBmbGFnLgoJKiB0b3BsZXYuaCAoc2V0X3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnNfZmxhZ3MpOiBEZWNsYXJlIGZ1bmN0aW9uLgoJKiB0cmVlLXNzYS1tYXRoLW9wdHMuYyAoZ2F0ZV9jc2VfcmVjaXByb2NhbHMpOiBVc2UKCS1mcmVjaXByb2NhbC1tYXRoIGluc3RlYWQgb2YgLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25zLgoJKiBvcHRzLmMgKHNldF9mYXN0X21hdGhfZmxhZ3MpOiBTZXQgLWZyZWNpcHJvY2FsLW1hdGggYW5kCgktZmFzc29jaWF0aXZlLW1hdGggd2hlbiAtZmZhc3QtbWF0aCBpcyBzZXQuCgkoc2V0X3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnNfZmxhZ3MpOiBOZXcgRnVuY3Rpb24KCXRvIHNldCAtZnJlY2lwcm9jYWwtbWF0aCBhbmQgLWZhc3NvY2lhdGl2ZS1tYXRoIHdoZW4KCS1mdW5zYWZlLW1hdGgtb3B0aW1pemF0aW9ucyBpcyBzZXQuCgkoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBDYWxsIGl0LgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9pc19zaW1wbGVfcmVkdWN0aW9uKTogVXNlCgktZmFzc29jaWF0aXZlLW1hdGggd2hlbiBkb2luZyByZWR1Y3Rpb24gb24gZmxvYXRzLgoJKiBsb29wLXVucm9sbC5jIChhbmFseXplX2luc25fdG9fZXhwYW5kX3Zhcik6IFVzZQoJLWZhc3NvY2lhdGl2ZS1tYXRoIHdoZW4gZXhwYW5kaW5nIGFuIGFjY3VtdWxhdG9yIG9mIHR5cGUgZmxvYXQuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpOiBVc2UKCS1mYXNzb2NpYXRpdmUtbWF0aCBhbmQgLWZyZWNpcHJvY2FsLW1hdGggd2hlbiByZW9yZGVpbmcgb3BlcmFuZHMKCW9mIGZsb2F0aW5nLXBvaW50IHR5cGUuCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtcmVhc3NvYy5jIChicmVha191cF9zdWJ0cmFjdF9iYiwgcmVhc3NvY2lhdGVfYmIpOgoJTGlrZXdpc2UuCgkqIGNvbW1vbi5vcHQgKC1mYXNzb2NpYXRpdmUtbWF0aCwgLWZyZWNpcHJvY2FsLW1hdGgpOiBOZXcgZmxhZ3MuCgoyMDA3LTA5LTA0ICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCglQUiBjKysvMTg2MDgKCSogZG9jL2luc3RhbGwudGV4aSAoLS1lbmFibGUtX19jeGFfYXRleGl0KTogRml4IHR5cG8uCgoyMDA3LTA5LTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWdyZW5hbWUuYyhjb3B5cHJvcF9oYXJkcmVnX2ZvcndhcmRfMSk6IFVuc2hhcmUgd2hlbiBkb2luZyBjb3B5cHJvcC4KCjIwMDctMDktMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZ3JlbmFtZS5jIChidWlsZF9kZWZfdXNlKTogRG9uJ3Qgc2hhcmUgUlRMIGJldHdlZW4gTUFUQ0hfT1BFUkFUT1IKCWFuZCBjb3JyZXNwb25kaW5nIE1BVENIX0RVUC4KCjIwMDctMDktMDQgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMzE4NwoJKiBjb21iaW5lLmMgKHN1YnN0KTogRG8gbm90IHRyeSB0byBzaW1wbGlmeSBYIGlmIGl0IHJlcHJlc2VudHMgbG9hZAoJb2YgRlAgY29uc3RhbnQgZnJvbSB0aGUgY29uc3RhbnQgcG9vbCB2aWEgZmxvYXQgZXh0ZW5zaW9uLgoKMjAwNy0wOS0wNCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjLW9wdHMuYzogSW5jbHVkZSAidG1fcC5oIi4KCSogTWFrZWZpbGUuaW4gKGMtb3B0cy5vKTogQWRkICQoVE1fUF9IKSBhcyBhIGRlcGVuZGVuY3kuCgoyMDA3LTA5LTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMyOTEKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBEdW1wIGFsbAoJcXVhbGlmaWVycyBmb3IgcG9pbnRlciB0eXBlcywgbm90IG9ubHkgZmlyc3QuICBEdW1wCglxdWFsaWZpZXJzIGZvciBhZ2dyZWdhdGUgdHlwZXMgYXMgd2VsbC4KCSogdHJlZS1zc2EtY2NwLmMgKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2FycmF5X3JlZik6IEFsd2F5cwoJdXNlIHRoZSBjYW5vbmljYWwgdHlwZSBmb3IgYnVpbGRpbmcgQVJSQVlfUkVGcy4KCSogZ2ltcGxpZnkuYyAoY2Fub25pY2FsaXplX2FkZHJfZXhwcik6IENsZWFuIHVwLiAgVGhlCgljb3JyZWN0IHZhbGlkbmVzcyBjaGVjayBpcyBjb21wYXRpYmlsaXR5IG9mIHRoZSBwb2ludGVyCgl0eXBlcy4gIEFsd2F5cyB1c2UgdGhlIGNhbm9uaWNhbCB0eXBlIGZvciBidWlsZGluZwoJQVJSQVlfUkVGcyBhbmQgQUREUl9FWFBScy4KCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAoZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByKTogUmV2ZXJ0CgljaGFuZ2UgdGhhdCBkaXNhYmxlZCBwcm9wYWdhdGlvbiBvZiBBRERSX0VYUFJzIGludG8gc3RhdGVtZW50cwoJd2l0aCB2b2xhdGlsZSBvcHMuCgoyMDA3LTA5LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKG11bHNpZGkzLCB1bXVsc2lkaTMsIG11bHNpM19oaWdocGFydCkKCSh1bXVsc2kzX2hpZ2hwYXJ0KTogTWFrZSBpbnRvIGV4cGFuZGVyczsgZXhpc3RpbmcgaW5zbnMgYXJlCglub3cgbmFtZWQgKltpbnNuXV9ub3Y2LiAgQWRkIHN0YXJzIHRvIGV4aXN0aW5nIFtpbnNuXV92NgoJY291bnRlcnBhcnRzJyBuYW1lcy4KCjIwMDctMDktMDMgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoRFJJVkVSX0RFRklORVMsIGdjYy5vLCBnY2NzcGVjLm8sIHByb3RvaXplLm8pCgkodW5wcm90b2l6ZS5vKTogUmVtb3ZlIFNITElCX01VTFRJTElCLgoKMjAwNy0wOS0wMyAgRXJpYyBXZWRkaW5ndG9uICA8ZXdlZGRpbmd0b25AY3NvLmF0bWVsLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgcHJvZ21lbSBhdHRyaWJ1dGUgZm9yIEFWUi4KCjIwMDctMDktMDMgIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCglQUiB0YXJnZXQvMjg5MDIKIAkqIGNvbmZpZy9hdnIvYXZyLmggKFRBUkdFVF9WVEFCTEVfRU5UUllfQUxJR04pOiBEZWZpbmUuCgoyMDA3LTA5LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0YWJzLmMgKGV4cGFuZF9mZnMpOiBJbml0aWFsaXplIHZhbCBhbmQgZGVmaW5lZF9hdF96ZXJvCgl0byBhdm9pZCB3YXJuaW5ncy4KCgkqIG9wdGFicy5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCgkoZXhwYW5kX3Vub3BfZGlyZWN0KTogTmV3LCBicm9rZW4gb3V0IG9mIGV4cGFuZF91bm9wLgoJKGV4cGFuZF9kb3VibGV3b3JkX2Nseik6IE5ldy4KCShleHBhbmRfY3R6KTogTW92ZSBhYm92ZSBleHBhbmRfZmZzLiAgVXNlCglzdGFydF9zZXF1ZW5jZSwgZW5kX3NlcXVlbmNlLCBhZGRfZXF1YWxfbm90ZSwgYW5kCglleHBhbmRfdW5vcF9kaXJlY3QuICBBZGQgbW9yZSBjb21tZW50YXJ5LgoJKGV4cGFuZF9mZnMpOiBUcnkgYm90aCBjdHogb3B0YWIgYW5kIGV4cGFuZF9jdHouCglHZW5lcmF0ZSBhIHRlc3QgYW5kIGJyYW5jaCBpZiB0aGUgaGFyZHdhcmUgZG9lc24ndCBnaXZlIHVzCglhIHVzZWZ1bCB2YWx1ZSBmb3IgaW5wdXQgemVyby4gIFN0eWxlIGltcHJvdmVtZW50cyBzaW1pbGFyIHRvCglleHBhbmRfY3R6LgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGZmc3NpMiwgY3R6c2kyKTogRGVsZXRlLgoKMjAwNy0wOS0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6IERlbGV0ZSBzdGFuemEgZm9yIGFybS1zZW1pLWFvZiBhbmQKCWFybWVsLXNlbWktYW9mIHRhcmdldHMuCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oCgkqIGNvbmZpZy9hcm0vYXJtLmMKCSogY29uZmlnL2FybS9hcm0uaDogRGVsZXRlIGFsbCAjaWZkZWYgQU9GX0FTU0VNQkxFUiBibG9ja3M7CgltYWtlIGFsbCAjaWZuZGVmIEFPRl9BU1NFTUJMRVIgYmxvY2tzIHVuY29uZGl0aW9uYWwuICBBbHNvCglkZWxldGUgYW9mX3BpY19sYWJlbCBhbmQgcmVtb3ZlIG1lbnRpb24gb2YgQU9GIGluIGNvbW1lbnRzLgoJKiBjb25maWcvYXJtL2FybS5tZDogRGVsZXRlIHBhdHRlcm5zIHVzZWQgb25seSBmb3IgQU9GIGFzc2VtYmx5LgoJKiBjb25maWcvYXJtL2FvZi5oCgkqIGNvbmZpZy9hcm0vc2VtaWFvZi5oCgkqIGNvbmZpZy9hcm0vdC1zZW1pOiBEZWxldGUgZmlsZS4KCjIwMDctMDktMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5c3RlbS5oIChDT05TVF9DQVNUMiwgQ09OU1RfQ0FTVF9UUkVFLCBDT05TVF9DQVNUX1JUWCwKCUNPTlNUX0NBU1RfQkIpOiBOZXcgbWFjcm9zIGZvciB0eXBlLXNwZWNpZmljIGNhc3RzLgoJKENPTlNUX0NBU1QpOiBBZGQgYSBUWVBFIHBhcmFtZXRlciBhbmQgZGVmaW5lIGl0IGluIHRlcm1zIG9mCglDT05TVF9DQVNUMi4KCgkqIGMtZGVjbC5jIChjX21ha2VfZm5hbWVfZGVjbCk6IFN1cHBseSBhIFRZUEUgZm9yIENPTlNUX0NBU1QuCgkqIGMtbGV4LmMgKGNiX2lkZW50LCBsZXhfc3RyaW5nKTogTGlrZXdpc2UsCgkqIGMtdHlwZWNrLmMgKGZyZWVfYWxsX3RhZ2dlZF90dV9zZWVuX3VwX3RvKTogTGlrZXdpc2UsCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9mdW5jdGlvbl9yZWdwYXJtLAoJaXg4Nl9mdW5jdGlvbl9zc2VyZWdwYXJtKTogVXNlIENPTlNUX0NBU1RfVFJFRS4KCSogY29uZmlnL21taXgvbW1peC5jIChtbWl4X2VuY29kZV9zZWN0aW9uX2luZm8pOiBTdXBwbHkgYSBUWVBFIGZvcgoJQ09OU1RfQ0FTVC4KCSogZ2NjLmMgKHNldF9zcGVjLCByZWFkX3NwZWNzLCBmb3JfZWFjaF9wYXRoLCBleGVjdXRlLCBkb19zcGVjXzEsCglnaXZlX3N3aXRjaCwgc2V0X211bHRpbGliX2Rpcik6IExpa2V3aXNlLAoJKiBnZW5ndHlwZS1wYXJzZS5jIChzdHJpbmdfc2VxLCB0eXBlZGVmX25hbWUpOiBMaWtld2lzZSwKCSogZ2ltcGxlLWxvdy5jIChibG9ja19tYXlfZmFsbHRocnUpOiBVc2UgQ09OU1RfQ0FTVF9UUkVFLgoJKiBqdW1wLmMgKHJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cyk6IFVzZSBDT05TVF9DQVNUX1JUWC4KCSogcGFzc2VzLmMgKGV4ZWN1dGVfb25lX3Bhc3MpOiBTdXBwbHkgYSBUWVBFIGZvciBDT05TVF9DQVNULgoJKiBwcmVmaXguYyAodXBkYXRlX3BhdGgpOiBMaWtld2lzZSwKCSogcHJldHR5LXByaW50LmMgKHBwX2Jhc2VfZGVzdHJveV9wcmVmaXgpOiBMaWtld2lzZSwKCSogcnRsYW5hbC5jIChrZWVwX3dpdGhfY2FsbF9wKTogVXNlIENPTlNUX0NBU1RfUlRYLgoJKiB0cmVlLWNmZy5jICh0cmVlX2Nhbl9tZXJnZV9ibG9ja3NfcCwKCXRyZWVfYmxvY2tfZW5kc193aXRoX2NvbmRqdW1wX3ApOiBVc2UgQ09OU1RfQ0FTVF9CQi4KCSogdHJlZS1laC5jIChsb29rdXBfc3RtdF9laF9yZWdpb25fZm4pOiBVU2UgQ09OU1RfQ0FTVF9UUkVFLgoJKiB0cmVlLmMgKGJ1aWxkX3N0cmluZyk6IFN1cHBseSBhIFRZUEUgZm9yIENPTlNUX0NBU1QuCgkoYXR0cmlidXRlX2xpc3RfY29udGFpbmVkKTogVXNlIENPTlNUX0NBU1RfVFJFRS4KCjIwMDctMDktMDMgIEtyaXN0ZXIgV2FsZnJpZHNzb24gIDxjYXRvQGRmLmx0aC5zZT4KCgkqIGNvbmZpZy9uZXRic2QtZWxmLmggKFVTRV9MRF9BU19ORUVERUQpOiBEZWZpbmUuCgoyMDA3LTA5LTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMzMjkwCgkqIG9wdGFicy5jIChhdm9pZF9leHBlbnNpdmVfY29uc3RhbnQpOiBDYW5vbmljYWxpemUgQ09OU1RfSU5UcwoJYmVmb3JlIGZvcmNpbmcgdGhlbSBpbnRvIGEgcmVnaXN0ZXIuCgoyMDA3LTA5LTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGZldGNob3BfYml0KTogVXNlIGRlZmluZV9jb2RlX2l0ZXJhdG9yCglyYXRoZXIgdGhhbiBkZWZpbmVfY29kZV9tYWNyby4KCjIwMDctMDktMDMgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Znhjb3VkZXJ0QGdjYy5nbnUub3JnPgoKCSogZ2NjLmMgKHhwdXRlbnYpOiBOZXcgZnVuY3Rpb24uCgkocHV0ZW52X2Zyb21fcHJlZml4ZXMpOiBVc2UgeHB1dGVudiBpbnN0ZWFkIG9mIHB1dGVudi4KCShwcm9jZXNzX2NvbW1hbmQpOiBVc2UgeHB1dGVudiBpbnN0ZWFkIG9mIHB1dGVudi4KCShzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyk6IFVzZSB4cHV0ZW52IGluc3RlYWQgb2YgcHV0ZW52LgoJKG1haW4pOiBVc2UgeHB1dGVudiBpbnN0ZWFkIG9mIHB1dGVudi4KCjIwMDctMDktMDMgIEplc3BlciBOaWxzc29uICA8amVzcGVyLm5pbHNzb25AYXhpcy5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKFRBUkdFVF9IQVNfU1dBUCk6IERlZmluZWQgdG8gZGVzY3JpYmUKCWF2YWlsYWJpbGl0eSBvZiBzd2FwIGluc3RydWN0aW9uLgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kIChic3dhcHNpMik6IEltcGxlbWVudCB1c2luZyBzd2FwIGluc3RydWN0aW9uLgoKMjAwNy0wOS0wMyAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtZm1vZHVsby1zY2hlZC1hbGxvdy1yZWdtb3Zlcyk6IFVwZGF0ZQoJRG9jdW1lbnRhdGlvbi4KCjIwMDctMDktMDMgIFZsYWRpbWlyIFlhbm92c2t5ICA8eWFub3ZAaWwuaWJtLmNvbT4KCSAgICBBeWFsIFpha3MgIDx6YWtzQGlsLmlibS5jb20+CgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogbW9kdWxvLXNjaGVkLmMgKHBzX2luc2VydF9lbXB0eV9yb3csIHZlcmlmeV9wYXJ0aWFsX3NjaGVkdWxlLAoJY29tcHV0ZV9zcGxpdF9yb3cpOiBOZXcgZnVuY3Rpb25zLgoJKHBzX3Vuc2NoZWR1bGVfbm9kZSk6IFJlbW92ZS4KCShub3JtYWxpemVfc2NoZWRfdGltZXMpOiBJdGVyYXRlIG92ZXIgdGhlIGFscmVhZHkgc2NoZWR1bGVkCglpbnNucyBpbnN0ZWFkIG9mIHRoZSBudW1iZXIgb2Ygbm9kZXMuCgkoTUFYX1NQTElUX05VTSk6IE5ldyBkZWZpbml0aW9uLgoJKHNtc19zY2hlZHVsZV9ieV9vcmRlcik6IENoYW5nZSB0aGUgc2NoZWR1bGluZyBoZXVyaXN0aWMgdG8KCWF2b2lkIHVzZWxlc3MgaW5jcmVhc2VzIG9mIGluaXRpYXRpb24gaW50ZXJ2YWwgaWkuCgkoZ2V0X3NjaGVkX3dpbmRvdyk6IEFkZCBkdW1wIHByaW50b3V0cy4KCjIwMDctMDktMDIgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChVTlNQRUNfQ09NUEFSRV9BTkRfU1dBUCwgVU5TUEVDX1NZTkNfT0xEX09QLAoJVU5TUEVDX1NZTkNfTkVXX09QLCBVTlNQRUNfU1lOQ19FWENIQU5HRSk6IE5ldyBkZWZpbmVfY29uc3RhbnRzLgoJKG9wdGFiLCBpbnNuKTogQWRkIG1vcmUgYXR0cmlidXRlcy4KCShmZXRjaG9wX2JpdCk6IE5ldyBjb2RlIG1hY3JvLgoJKGltbWVkaWF0ZV9pbnNuKTogTmV3IGNvZGUgbWFjcm8gYXR0cmlidXRlLgoJKHN5bmMpOiBDaGFuZ2UgY29uZGl0aW9uIHRvIElTQV9IQVNfU1lOQy4KCShyZGh3cik6IENoYW5nZSBwcmVkaWNhdGUgZm9yIG9wZXJhbmQgMCB0byByZWdpc3Rlcl9vcGVyYW5kLgoJKG1lbW9yeV9iYXJyaWVyKTogTmV3IGV4cGFuZC4KCShzeW5jX2NvbXBhcmVfYW5kX3N3YXA8bW9kZT4sIHN5bmNfYWRkPG1vZGU+LCBzeW5jX3N1Yjxtb2RlPiwKCXN5bmNfb2xkX2FkZDxtb2RlPiwgc3luY19vbGRfc3ViPG1vZGU+LCBzeW5jX25ld19hZGQ8bW9kZT4sCglzeW5jX25ld19zdWI8bW9kZT4sIHN5bmNfPG9wdGFiPjxtb2RlPiwJc3luY19vbGRfPG9wdGFiPjxtb2RlPiwKCXN5bmNfbmV3XzxvcHRhYj48bW9kZT4sIHN5bmNfbmFuZDxtb2RlPiwgc3luY19vbGRfbmFuZDxtb2RlPiwKCXN5bmNfbmV3X25hbmQ8bW9kZT4sIHN5bmNfbG9ja190ZXN0X2FuZF9zZXQ8bW9kZT4pOiBOZXcgaW5zbnMuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19TWU5DLCBJU0FfSEFTX0xMX1NDKTogTmV3IElTQSBwcmVkaWNhdGVzLgoJKE1JUFNfQ09NUEFSRV9BTkRfU1dBUCwgTUlQU19TWU5DX09QLCBNSVBTX1NZTkNfT0xEX09QLAoJTUlQU19TWU5DX05FV19PUCwgTUlQU19TWU5DX05BTkQsIE1JUFNfU1lOQ19PTERfTkFORCwKCU1JUFNfU1lOQ19ORVdfTkFORCwgTUlQU19TWU5DX0VYQ0hBTkdFKTogTmV3IE1hY3Jvcy4KCQoyMDA3LTA5LTAzICBKZXNwZXIgTmlsc3NvbiAgPGplc3Blci5uaWxzc29uQGF4aXMuY29tPgoJICAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL2NyaXMvY3Jpcy5oIChUQVJHRVRfSEFTX0xaLCBDTFpfREVGSU5FRF9WQUxVRV9BVF9aRVJPKToKCURlZmluZWQgdG8gZGVzY3JpYmUgYXZhaWxhYmlsaXR5IGFuZCBiZWhhdmlvciBvZiBDTFouCgkqIGNvbmZpZy9jcmlzL2NyaXMubWQgKGNsenNpMik6IEltcGxlbWVudCB1c2luZyBseiBpbnN0cnVjdGlvbi4KCSogY29uZmlnL2NyaXMvY3Jpcy5vcHQ6IFR3ZWFrIGNvbW1lbnQgZm9yICItbWV0cmF4NCIuCgkqIGNvbmZpZy9jcmlzL2FyaXQuYyAoTFopOiBXaGVuIGRlZmluZWQsIGRlZmluZSBhcyBfX2J1aWx0aW5fY2x6LgoJKiBsb25nbG9uZy5oIFtfX0NSSVNfXyAmJiBfX0NSSVNfYXJjaF92ZXJzaW9uID49IDNdCgkoY291bnRfbGVhZGluZ196ZXJvcyk6IERlZmluZS4KCjIwMDctMDktMDEgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cnluYXMuYml2ZWluaXNAZ21haWwuY29tPgoKCSogZ2djLXBhZ2UuYyAoZ2djX3BjaF9yZWFkKTogQ2FsbCB2YWxpZGF0ZV9mcmVlX29iamVjdHMuCgoyMDA3LTA5LTAyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzI5MjM3CglQUiBtaWRkbGUtZW5kLzMzMjcyCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFwcGx5IHF1YWxpZmllcnMgdG8gdHlwZSBvZiBwYXJhbWV0ZXIKCWRlY2F5ZWQgZnJvbSBhcnJheS4KCjIwMDctMDktMDEgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYywgY29uZmlnL3JzNjAwMC9wcHVfaW50cmluc2ljcy5oLAoJY29uZmlnL3NwdS9zcHUuYywgZGYtc2Nhbi5jLCBmaXhlZC12YWx1ZS5jLCBmb2xkLWNvbnN0LmMsCglnaW5jbHVkZS90Z21hdGguaCwgaGFpZmEtc2NoZWQuYywgb3B0YWJzLmMsIHJlY29nLmMsCglzY2hlZC1kZXBzLmMsIHNjaGVkLWludC5oLCBzeXN0ZW0uaCwgdGFyZ2V0LmgsCgl0cmVlLXNzYS1saXZlLmMsIHRyZWUtdmVjdC10cmFuc2Zvcm0uYywgdHJlZS12ZWN0b3JpemVyLmMsCgl0cmVlLmRlZjogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA3LTA5LTAxICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoVEFSR0VUX0RFRkFVTFRfVEFSR0VUX0ZMQUdTKTogUmVtb3ZlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBUdXJuIG9uIC1tc3RyaWN0LWFsaWduIG9uIG5vbi1Db2xkRmlyZQoJdGFyZ2V0cy4KCSogY29uZmlnL202OGsvbTY4ay5oIChCSUdHRVNUX0FMSUdOTUVOVCk6IFVwZGF0ZSBhIGNvbW1lbnQuCgoyMDA3LTA5LTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jIChjb25zdF9zdHJpcF9hcnJheV90eXBlcyk6IERlbGV0ZS4KCSogYy1jb21tb24uaCAoY29uc3Rfc3RyaXBfYXJyYXlfdHlwZXMpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoY29uc3RfbmV4dF9pbnNuLCBjb25zdF9wcmV2aW91c19pbnNuLAoJY29uc3RfbmV4dF9ub25ub3RlX2luc24sIGNvbnN0X3ByZXZfbm9ubm90ZV9pbnNuLAoJY29uc3RfbmV4dF9yZWFsX2luc24sIGNvbnN0X3ByZXZfcmVhbF9pbnNuLAoJY29uc3RfbmV4dF9hY3RpdmVfaW5zbiwgY29uc3RfcHJldl9hY3RpdmVfaW5zbiwgY29uc3RfbmV4dF9sYWJlbCwKCWNvbnN0X3ByZXZfbGFiZWwpOiBEZWxldGUuCgkqIGdpbXBsZS1sb3cuYyAoYmxvY2tfbWF5X2ZhbGx0aHJ1KTogVXNlIGV4cHJfbGFzdC4KCSoganVtcC5jIChyZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMpOiBVc2UgcHJldl9ub25ub3RlX2luc24uCgkqIHJ0bC5oIChjb25zdF9wcmV2aW91c19pbnNuLCBjb25zdF9uZXh0X2luc24sCgljb25zdF9wcmV2X25vbm5vdGVfaW5zbiwgY29uc3RfbmV4dF9ub25ub3RlX2luc24sCgljb25zdF9wcmV2X3JlYWxfaW5zbiwgY29uc3RfbmV4dF9yZWFsX2luc24sCgljb25zdF9wcmV2X2FjdGl2ZV9pbnNuLCBjb25zdF9uZXh0X2FjdGl2ZV9pbnNuLCBjb25zdF9wcmV2X2xhYmVsLAoJY29uc3RfbmV4dF9sYWJlbCk6IERlbGV0ZS4KCSogcnRsYW5hbC5jIChrZWVwX3dpdGhfY2FsbF9wKTogVXNlIG5leHRfbm9ubm90ZV9pbnNuLgoJKiBzeXN0ZW0uaCAoQ09OU1RfQ0FTVCk6IFVwZGF0ZSBjb21tZW50LgoJKiB0cmVlLWNmZy5jICh0cmVlX2Nhbl9tZXJnZV9ibG9ja3NfcCk6IFVzZSBsYXN0X3N0bXQuCgkoY29uc3RfZmlyc3Rfc3RtdCwgY29uc3RfbGFzdF9zdG10KTogRGVsZXRlLgoJKHRyZWVfYmxvY2tfZW5kc193aXRoX2NvbmRqdW1wX3ApOiBVc2UgbGFzdF9zdG10LgoJKiB0cmVlLWZsb3cuaCAoY29uc3RfZmlyc3Rfc3RtdCwgY29uc3RfbGFzdF9zdG10KTogRGVsZXRlLgoJKiB0cmVlLWl0ZXJhdG9yLmMgKGNvbnN0X2V4cHJfZmlyc3QsIGNvbnN0X2V4cHJfbGFzdCwKCWNvbnN0X2V4cHJfb25seSk6IERlbGV0ZS4KCSogdHJlZS5jIChjb25zdF9sb29rdXBfYXR0cmlidXRlKTogTGlrZXdpc2UuCgkoYXR0cmlidXRlX2xpc3RfY29udGFpbmVkKTogVXNlIGxvb2t1cF9hdHRyaWJ1dGUuCgkqIHRyZWUuaCAoY29uc3RfbG9va3VwX2F0dHJpYnV0ZSwgY29uc3RfZXhwcl9maXJzdCwKCWNvbnN0X2V4cHJfbGFzdCwgY29uc3RfZXhwcl9vbmx5KTogRGVsZXRlLgoKMjAwNy0wOS0wMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAoY3JlYXRlX25hbWVfdGFncyk6IFVzZSBUWVBFX1ZPTEFUSUxFCglpbnN0ZWFkIG9mIFRSRUVfVEhJU19WT0xBVElMRS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYWRkX3ZpcnR1YWxfb3BlcmFuZCk6IERvIG5vdCBzZXQKCWhhc192b2xhdGlsZV9vcHMuICBEbyBub3QgY2hlY2sgc19hbm4gZm9yIE5VTEwuCgkoZ2V0X2luZGlyZWN0X3JlZl9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKGdldF9leHByX29wZXJhbmRzKTogTGlrZXdpc2UuICBGb3IgYWxsIHJlZmVyZW5jZSB0cmVlcwoJc2V0IGhhc192b2xhdGlsZV9vcHMgYmFzZWQgb24gVFJFRV9USElTX1ZPTEFUSUxFLiAgQWxzbwoJY2hlY2sgYmFzZSBvZiByZWZlcmVuY2UgZm9yIFRSRUVfVEhJU19WT0xBVElMRS4KCjIwMDctMDktMDEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9naW1wbGVfZXhwcik6IEZpeCBjaGVjayBmb3IgY29udmVyc2lvbnMKCWJldHdlZW4gaW50ZWdyYWwgdHlwZXMuICBBbHNvIGFsbG93IGNvbnZlcnNpb25zIGJldHdlZW4KCXBvaW50ZXIgdHlwZXMuCgoyMDA3LTA4LTMxICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCgkqIG9wdGFicy5jIChwcmVwYXJlX2Zsb2F0X2xpYl9jbXApOiBVc2UKCWxpYmdjY19jbXBfcmV0dXJuX21vZGUgaW5zdGVhZCBvZiB3b3JkX21vZGUuCgkqIGNvbmZpZy9kZnAtYml0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvZnAtYml0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvc3B1L3NwdS5jIChzcHVfbGliZ2NjX2NtcF9yZXR1cm5fbW9kZSk6CglOZXcgZnVuY3Rpb24uCgkoc3B1X2xpYmdjY19zaGlmdF9jb3VudF9tb2RlKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9MSUJHQ0NfQ01QX1JFVFVSTl9NT0RFKTogRGVmaW5lLgoJKFRBUkdFVF9MSUJHQ0NfU0hJRlRfQ09VTlRfTU9ERSk6IERlZmluZS4KCjIwMDctMDgtMzEgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYzogSW5jbHVkZSBvdXRwdXQuaC4KCShkdW1wX2RlY2xfbmFtZSwgZHVtcF9nZW5lcmljX25vZGUpOiBVc2UgJXdkIHdpdGggcHBfcHJpbnRmLCBub3QKCUhPU1RfV0lERV9JTlRfUFJJTlRfREVDLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1wcmV0dHktcHJpbnQubyk6IEFkZCBkZXBlbmRlbmN5IG9uIG91dHB1dC5oLgoKMjAwNy0wOC0zMSAgWmRlbmVrIER2b3JhayAgPG9va0B1Y3cuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMzIyNAoJKiBsb29wLWl2LmMgKGxhdGNoX2RvbWluYXRpbmdfZGVmKTogQ2hlY2sgdGhhdCB0aGUgZGVmaW5pdGlvbiBiZWxvbmdzCgl0byB0aGUgYW5hbHlzZWQgcmVnaW9uLgoKMjAwNy0wOC0zMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZnVuY3Rpb24uYyAoYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uKTogRG8gbm90IHNldAoJY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX3BvaW50ZXIuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCB2YXJfcmVmc19xdWV1ZSk6IFJlbW92ZS4KCShzdHJ1Y3Qgc2ltcGxlX29ic3RhY2tfc3RhY2spOiBMaWtld2lzZS4KCShzdHJ1Y3QgZnVuY3Rpb24pOiBSZW1vdmUgZml4dXBfdmFyX3JlZnNfcXVldWUgbWVtYmVyLgoJUmVtb3ZlIHJldHVybnNfcG9pbnRlciBmbGFnLgoJKGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuc19wb2ludGVyKTogUmVtb3ZlIGRlZmluZS4KCjIwMDctMDgtMzEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1jb2FsZXNjZS5jIChjb21wYXJlX3BhaXJzKTogVXNlIHRoZSBlbGVtZW50cyBhcwoJc2Vjb25kYXJ5IGtleXMgaW4gb3JkZXIgdG8gb2J0YWluIGEgc3RhYmxlIHNvcnQuCgoyMDA3LTA4LTMxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zMzEzMgoJKiBjb25maWcvbTMyci9jb25zdHJhaW50cy5tZDogQWRkIFcgY29uc3RyYWludCBmb3IgaW50ZWdlciB6ZXJvLgoJKiBjb25maWcvbTMyci9tMzJyLm1kIChnZXRfcGMpOiBVc2UgVyBhbmQgaSBjb25zdHJhaW50cy4KCUZpeCBsZW5ndGggY2FsY3VsYXRpb24gYnkgdXNpbmcgYWx0ZXJuYXRpdmVzLgoKMjAwNy0wOC0zMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvcHRhYnMuYyAoc2hpZnRfb3B0YWJfcCwgY29tbXV0YXRpdmVfb3B0YWJfcCk6IE5ldyBmdW5jdGlvbnMsCglzcGxpdCBvdXQgZnJvbSBleHBhbmRfYmlub3AuCgkoYXZvaWRfZXhwZW5zaXZlX2NvbnN0YW50KTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9iaW5vcF9kaXJlY3RseSk6IFJlbW92ZSBjb21tdXRhdGl2ZV9vcCBhcmd1bWVudCBhbmQKCShleHBhbmRfYmlub3BfZGlyZWN0bHkpOiBSZW1vdmUgY29tbXV0YXRpdmVfb3AgYXJndW1lbnQgYW5kCgljYWxsIGN1bW11dGF0aXZlX29wdGFiX3AgaW5zdGVhZC4gIERvIG5vdCBjaGFuZ2Ugb3AwIG9yIG9wMQoJd2hlbiBzd2FwcGluZyB4b3AwIGFuZCB4b3AxLiAgQXBwbHkgYXZvaWRfZXhwZW5zaXZlX2NvbnN0YW50Cgl0byBlYWNoIGFyZ3VtZW50IGFmdGVyIHBvdGVudGlhbCBzd2FwcGluZy4gIEVuZm9yY2UgdGhlCgljYW5vbmljYWwgb3JkZXIgb2YgY29tbXV0YXRpdmUgb3BlcmFuZHMuCgkoZXhwYW5kX2Jpbm9wKTogVXNlIHNoaWZ0X29wdGFiX3AgYW5kIGNvbW11dGF0aXZlX29wdGFiX3AuCglVcGRhdGUgdGhlIGNhbGxzIHRvIGV4cGFuZF9iaW5vcF9kaXJlY3RseS4gIE9ubHkgZm9yY2UgY29uc3RhbnRzCglpbnRvIHJlZ2lzdGVycyB3aGVuIHdpZGVuaW5nIGFuIG9wZXJhdGlvbi4gIE9ubHkgc3dhcCBvcGVyYW5kcwoJb25jZSBhIGRpcmVjdCBleHBhbnNpb24gaGFzIGJlZW4gcmVqZWN0ZWQuCgkoZXhwYW5kX3R3b3ZhbF9iaW5vcCk6IE9ubHkgZm9yY2UgY29uc3RhbnRzIGludG8gcmVnaXN0ZXJzIHdoZW4KCXVzaW5nIGEgZGlyZWN0IGV4cGFuc2lvbi4KCjIwMDctMDgtMzEgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNjaGVkLWRlcHMuYyAodXBkYXRlX2RlcCk6IE1hcmsgYXJndW1lbnRzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShzY2hlZF9hbmFseXplX2luc24pOiBEb24ndCBwb3N0cHJvY2VzcyBzcGVjdWxhdGl2ZSBkZXBlbmRlbmNpZXMgd2hlbgoJdGFyZ2V0IGhhcyBubyBzY2hlZHVsaW5nLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMpOiBGaXgKCSd1bmluaXRpYWxpemVkJyB3YXJuaW5nLgoKMjAwNy0wOC0zMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS5jIChidWlsZF9jb21wbGV4X3R5cGUpOiBBbHdheXMgc2V0IFRZUEVfTkFNRSBmb3IKCWNvbXBsZXMgdHlwZXMuCgoyMDA3LTA4LTMxICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogY29uZmlnL3JzNjAwMC94Y29mZi5oIChYQ09GRl9DU0VDVF9ERUZBVUxUX0FMSUdOTUVOVF9TVFIpOiBOZXcKCWludGVybmFsIG1hY3JvLiBEZWZhdWx0IGFsaWdubWVudCBmYWN0b3IgZm9yIGNzZWN0IGRpcmVjdGl2ZXMsIGNob3NlbgoJdG8gbWF0Y2ggd2hhdCBCSUdHRVNUX0FMSUdOTUVOVCBhbGxvd3MuCgkoREFUQV9TRUNUSU9OX0FTTV9PUCk6IFVzZSBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYwoJKHJzNjAwMF94Y29mZl9vdXRwdXRfcmVhZG9ubHlfc2VjdGlvbl9hc21fb3ApOgoJVXNlIFhDT0ZGX0NTRUNUX0RFRkFVTFRfQUxJR05NRU5UX1NUUi4KCShyczYwMDBfeGNvZmZfb3V0cHV0X3JlYWR3cml0ZV9zZWN0aW9uX2FzbV9vcCk6IExpa2V3aXNlLgoJCjIwMDctMDgtMzEgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2Jsb2NrKTogTW92ZSBkZWNsYXJhdGlvbiB3aXRoaW4gdGhlIGZpcnN0CgkjaWYgZGVmaW5lZCAoREJYX0RFQlVHR0lOR19JTkZPKSBibG9jay4gIFJlYXJyYW5nZSBhbm90aGVyIHN1Y2gKCWJsb2NrIHRvIGluY2x1ZGUgdGhlIGRlZmluaXRpb24sIHRvZ2V0aGVyIHdpdGggdGhlIGFzc29jaWF0ZWQKCWhlbHBlcnMuCgoyMDA3LTA4LTMxICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtbXBhaXJlZCk6IERvY3VtZW50IGZsYWcuCgkqIGNvbmZpZy5nY2M6IEluY2x1ZGUgcGFpcmVkLmggaW4gcG93ZXJwYyBleHRyYV9oZWFkZXJzIGFuZAoJNzUwY2wuaCBpbiBwb3dlcnBjLSotbGludXgqcGFpcmVkKi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0ICgtbXBhaXJlZCk6IE5ldyBmbGFnLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwYWlyZWRfaW5pdF9idWlsdGlucywKCXBhaXJlZF9leHBhbmRfYnVpbHRpbiwgcGFpcmVkX2V4cGFuZF9sdl9idWlsdGluLAoJcGFpcmVkX2V4cGFuZF9zdHZfYnVpbHRpbiwgcGFpcmVkX2V4cGFuZF9wcmVkaWNhdGVfYnVpbHRpbik6CglOZXcgZnVuY3Rpb25zIHRvIHN1cHBvcnQgdGhlIHBhaXJlZCBzaW5nbGUgYnVpbHRpbiBmdW5jdGlvbnMuCgkocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayk6IEhhbmRsZSBQQUlSRURfVkVDVE9SX01PREUuCgkoZGVmX2J1aWx0aW4sIGJkZXNjXzNhcmcsIGJkZXNjXzJhcmcsIGJkZXNjXzFhcmcpOiBBZGQgcGFpcmVkCglzaW5nbGUgYnVpbHRpbnMuCgkoYmRlc2NfcGFpcmVkX3ByZWRzKTogTmV3IHN0cnVjdHVyZSBmb3IgcGFpcmVkIHByZWRpY2F0ZQoJaW5zdHJ1Y3Rpb25zLgoJKHJzNjAwMF9leHBhbmRfYnVpbHRpbik6IEV4cGFuZCBwYWlyZWQgc2luZ2xlIGJ1aWx0aW5zLgoJKHJzNjAwMF9pbml0X2J1aWx0aW5zKTogSW5pdCBwYWlyZWQgc2luZ2xlIGJ1aWx0aW5zLgoJKHJzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyk6IEFkZCB2MnNmX2Z0eXBlX3Yyc2ZfdjJzZl92MnNmLgoJUmVuYW1lIHYyc2ZfZnR5cGVfdjJzZl92MnNmIHRvIHYyc2ZfZnR5cGVfdjJzZl92MnNmX3NwZQoJYW5kIHYyc2ZfZnR5cGVfdjJzZl9zcGUgdG8gdjJzZl9mdHlwZV92MnNmLiAgQWRkIG5ldyB0eXBlcwoJdjJzZl9mdHlwZV92MnNmX3Yyc2YgYW5kIHYyc2ZfZnR5cGVfdjJzZi4KCShyczYwMDBfdmVjdG9yX21vZGVfc3VwcG9ydGVkX3ApOiBTdXBwb3J0IHBhaXJlZCB2ZWN0b3IgbW9kZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogKFVOSVRTX1BFUl9QQUlSRURfV09SRCwKCVBBSVJFRF9WRUNUT1JfTU9ERSwgUEFJUkVEX1NJTURfUkVHTk9fUCwgVEFSR0VUX1BBSVJFRF9GTE9BVCk6CglOZXcuCgkoTE9DQUxfQUxJR05NRU5UKTogSGFuZGxlIFBBSVJFRF9WRUNUT1JfTU9ERS4KCShEQVRBX0FMSUdOTUVOVCk6IExpa2V3aXNlLgoJKFVOSVRTX1BFUl9TSU1EX1dPUkQpOiBIYW5kbGUgUEFJUkVEX1ZFQ1RPUl9NT0RFLgoJKHJzNjAwMF9idWlsdGlucyk6IEFkZCBQQUlSRUQgYnVpbHRpbnMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBJbmNsdWRlIHBhaXJlZC5tZC4KCSogY29uZmlnL3JzNjAwMC9wYWlyZWQuaDogTmV3LgoJKiBjb25maWcvcnM2MDAwL3BhaXJlZC5tZDogTmV3LgoJKiBjb25maWcvcnM2MDAwLzc1MGNsLmg6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9zcGUubWQ6IFJlY29nbml6ZSBtb3Z2MnNmIGluc3RydWN0aW9uIGZvciA3NTBjbC4KCjIwMDctMDgtMzAgIE9sbGllIFdpbGQgIDxhYXdAZ29vZ2xlLmNvbT4KCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogU3VwcG9ydCAtZm5vLWRpcmVjdGl2ZXMtb25seS4KCSogZ2NjLmMgKGRlZmF1bHRfY29tcGlsZXJzKTogQWRkIC1mbm8tZGlyZWN0aXZlcy1vbmx5IHRvCglAYXNzZW1ibGVyLXdpdGgtY3BwLgoKMjAwNy0wOC0zMCAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzMyMTEKCgkqIHJlZ2NsYXNzLmMgKGluaXRpYWxfZml4ZWRfcmVncyk6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UgYW5kIG1ha2UKCWl0IGNvbnN0IGFnYWluLgoJKGluaXRpYWxfY2FsbF91c2VkX3JlZ3MpOiBMaWtld2lzZS4KCShpbml0aWFsX2NhbGxfcmVhbGx5X3VzZWRfcmVncyk6IERlbGV0ZSwgcmV2ZXJ0aW5nIHByZXZpb3VzIGFkZGl0aW9uLgoJKGluaXRpYWxfcmVnX25hbWVzKTogTGlrZXdpc2UuCgkoaW5pdF9yZWdfc2V0cyk6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UuCgkoc2F2ZWRfZml4ZWRfcmVncyk6IE5ldy4KCShzYXZlZF9jYWxsX3VzZWRfcmVncyk6IE5ldy4KCShzYXZlZF9jYWxsX3JlYWxseV91c2VkX3JlZ3MpOiBOZXcuCgkoc2F2ZWRfcmVnX25hbWVzKTogTmV3LgoJKHNhdmVfcmVnaXN0ZXJfaW5mbyk6IE5ldy4KCShyZXN0b3JlX3JlZ2lzdGVyX2luZm8pOiBOZXcuCgkoaW5pdF9yZWdfc2V0c18xKTogUmVwbGFjZSByZXNldCBvZiByZWdpc3RlciBpbmZvIHdpdGggY2FsbCB0bwoJcmVzdG9yZV9yZWdpc3Rlcl9pbmZvLgoJKiBydGwuaCAoc2F2ZV9yZWdpc3Rlcl9pbmZvKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKGJhY2tlbmRfaW5pdCk6IENhbGwgc2F2ZV9yZWdpc3Rlcl9pbmZvLgoKMjAwNy0wOC0zMCAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyeW5hcy5iaXZlaW5pc0BnbWFpbC5jb20+CgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuYyAoc2V0X3Jocyk6IFJlbW92ZSB0aGUgY29waWVkIGFubm90YXRpb24KCWZyb20gdGhlIG9yaWdpbmFsIHN0YXRlbWVudC4KCjIwMDctMDgtMzAgIENoYW8teWluZyBGdSAgPGZ1QG1pcHMuY29tPgoKCSogYy1sZXguYyAoaW50ZXJwcmV0X2ZpeGVkKTogRGVjbGFyZS4KCShpbnRlcnByZXRfZmxvYXQpOiBQcm9jZXNzIF9GcmFjdCBhbmQgX0FjY3VtLgoJKGludGVycHJldF9maXhlZCk6IE5ldyBmdW5jdGlvbi4KCSogZmluYWwuYyAob3V0cHV0X2FkZHJfY29uc3QpOiBQcm9jZXNzIENPTlNUX0ZJWEVELgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfY29uc3RfdW5hcnlfb3BlcmF0aW9uKTogSGFuZGxlIFVTX05FRy4KCShzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpOiBIYW5kbGUgVVNfQVNISUZULCBTU19NVUxULCBVU19NVUxULAoJU1NfRElWLCBVU19ESVYuCgkoc2ltcGxpZnlfY29uc3RfYmluYXJ5X29wZXJhdGlvbik6IEhhbmRsZSBTU19NVUxULCBVU19NVUxULCBTU19ESVYsCglVU19ESVYsIFVTX0FTSElGVC4KCShzaW1wbGlmeV9pbW1lZF9zdWJyZWcpOiBTdXBwb3J0IENPTlNUX0ZJWEVELgoJUHJvY2VzcyBNT0RFX0ZSQUNULCBNT0RFX1VGUkFDVCwgTU9ERV9BQ0NVTSwgTU9ERV9VQUNDVU0uCgkoc2ltcGxpZnlfc3VicmVnKTogU3VwcG9ydCBDT05TVF9GSVhFRC4KCjIwMDctMDgtMzAgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9wcHVfaW50cmluc2ljcy5oOiBOZXcgZmlsZS4KCSogY29uZmlnLmdjYyAocG93ZXJwYyotKi0qIDxleHRyYV9oZWFkZXJzPik6IEluc3RhbGwKCXBwdV9pbnRyaW5zaWNzLmguCgoyMDA3LTA4LTMwICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCSogY2ZnLmMgKGR1bXBfZmxvd19pbmZvKTogQ2hhbmdlIHRvIGFsc28gcHJpbnQgZW50cnkgYW5kIGV4aXQKCWJsb2NrIGluZm8uCgkqIHByaW50LXJ0bC5jIChwcmludF9ydGxfc2luZ2xlKTogQWxsb3cgdG8gcHJpbnQgcnRsIHdpdGgKCS1mZHVtcC11bm51bWJlcmVkLgoJCjIwMDctMDgtMzAgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBkZi1jb3JlLmggKGRmX2R1bXBfcmVnaW9uKTogTmV3IGZ1bmN0aW9uLgoJKiBkZi5oIChkZl9kdW1wX3JlZ2lvbik6IE5ldyBmdW5jdGlvbi4KCSogbG9vcC1pbnZhcmlhbnQuYyAoZmluZF9kZWZzKTogQWRkIGNhbGwgdG8gZGZfZHVtcF9yZWdpb24uCgkqIGxvb3AtaXYuYyAoaXZfYW5hbHlzaXNfbG9vcF9pbml0KTogQ2hhbmdlZCBjYWxsIGZyb20gZGZfZHVtcCB0bwoJZGZfZHVtcF9yZWdpb24uCgkKMjAwNy0wOC0zMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzMzMTY4CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbGZfaW5fc21hbGxfZGF0YV9wKTogUmV0dXJuCgl0cnVlIGlmIGFueSBvZiB0aGUgY29tcGFyZV9zZWN0aW9uX25hbWUgY2FsbHMgcmV0dXJuZWQgdHJ1ZSwKCXJhdGhlciB0aGFuIGlmIGFueSByZXR1cm5lZCBmYWxzZS4KCjIwMDctMDgtMzAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMzE5OQoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChoYW5kbGVfbGhzX2NhbGwpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9mdW5jX2FsaWFzZXMpOiBJbiBub24tSVBBIG1vZGUgbWFrZSBzdXJlIHRoYXQgZm9yCgljYWxscyB0aGF0IHJldHVybiBhIHBvaW50ZXIgd2UgYWRkIGEgY29uc3RyYWludCBmb3IgdGhlCglyZXN1bHQgdG8gcG9pbnQgdG8gYW55dGhpbmcuCgoyMDA3LTA4LTMwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1tdmVjbGliYWJpKTogRG9jdW1lbnQgbmV3IHRhcmdldCBvcHRpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0ICgtbXZlY2xpYmFiaSk6IE5ldyB0YXJnZXQgb3B0aW9uLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdmVjbGliX2hhbmRsZXIpOiBIYW5kbGVyIGZvcgoJdmVjdG9yaXphdGlvbiBsaWJyYXJ5IHN1cHBvcnQuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEhhbmRsZSB0aGUgLW12ZWNsaWJhYmkgb3B0aW9uLCBpbml0aWFsaXplCgl0aGUgdmVjdG9yaXphdGlvbiBsaWJyYXJ5IGhhbmRsZXIuCgkoaXg4Nl9idWlsdGluX3ZlY3Rvcml6ZWRfZnVuY3Rpb24pOiBBcyBmYWxsYmFjayBjYWxsIHRoZQoJdmVjdG9yaXphdGlvbiBsaWJyYXJ5IGhhbmRsZXIsIGlmIHNldC4KCShpeDg2X3ZlY2xpYmFiaV9hY21sKTogTmV3IHN0YXRpYyBmdW5jdGlvbiBmb3IgQUNNTCBBQkkgc3R5bGUKCXZlY3Rvcml6YXRpb24gc3VwcG9ydC4KCjIwMDctMDgtMzAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfc3luYyk6IEZvciBRSSBvciBISSBtb2RlCgl1c2VkX20sIGV2ZW4gaWYgaXQgaXMgMzItYml0IGFsaWduZWQsIGFkanVzdCB1c2VkX20gTUVNIHRvIGhhdmUKCVNJbW9kZSBhbmQgdXBkYXRlIG0uICBEb24ndCBydW4gZ2VuX2xvd3BhcnRfY29tbW9uIG9uIGFyYml0cmFyeQoJbWVtb3J5IGFkZHJlc3MsIGZvcmNlIGl0IHRvIHJlZ2lzdGVyIGZpcnN0LgoKCVBSIG1pZGRsZS1lbmQvMzI3NTgKCSogZGNlLmMgKGRjZV9wcm9jZXNzX2Jsb2NrKTogRG9uJ3QgZGVsZXRlIHNldHRlcnMgb2YKCWFydGlmaWNpYWxseSB1c2VkIHJlZ2lzdGVycy4KCjIwMDctMDgtMzAgIFVscmljaCBXZWlnYW5kICA8VWxyaWNoLldlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqYWRkPG1vZGU+M19hbGNfY2FycnkxX2NjIiwKCSIqYWRkPG1vZGU+M19hbGNfY2FycnkxX2Njb25seSIsICIqYWRkPG1vZGU+M19hbGNfY2FycnkyX2NjIiwKCSIqYWRkPG1vZGU+M19hbGNfY2FycnkyX2Njb25seSIpOiBOZXcgaW5zbiBkZWZpbml0aW9ucy4KCjIwMDctMDgtMzAgIFVscmljaCBXZWlnYW5kICA8VWxyaWNoLldlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9leHBhbmRfYWRkY2MpOiBFbWl0IGNhbm9uaWNhbCBhbGMKCXBhdHRlcm4uCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqYWRkPG1vZGU+M19hbGNfY2MiLCAiKmFkZDxtb2RlPjNfYWxjIiwKCSJhZGR0aTMiLCAiKmFkZGRpM18zMXoiLCAiKnNjb25kPG1vZGU+Iik6IE1ha2UgYWxjIHBhdHRlcm4gY2Fub25pY2FsLgoKMjAwNy0wOC0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3lzdGVtLmg6IEFjdGl2YXRlIC1XY2FzdC1xdWFsIGFzIHdhcm5pbmctb25seS4KCjIwMDctMDgtMjkgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzMzMTY4CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGNvbXBhcmVfc2VjdGlvbl9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9lbGZfaW5fc21hbGxfZGF0YV9wKTogQ29tcGFyZSBzZWN0aW9uIHByZWZpeGVzIGluc3RlYWQKCW9mIGZ1bGwgbmFtZS4KCjIwMDctMDgtMjkgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiB4Y29mZm91dC5jOiAjaW5jbHVkZSBkZWJ1Zy5oLgoJKiBNYWtlZmlsZS5pbiAoeGNvZmZvdXQubyk6IEFkZCBkZWJ1Zy5oIGRlcGVuZGVuY3kuCgoyMDA3LTA4LTI5ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb25fMSkgW1ZFQ19TRUxFQ1RdOgoJQ2hhbmdlIENPTlNUX1ZFQ1RPUl9FTFQgdG8gWFZFQ0VYUCBpbiBlbGVtIGNhbGN1bGF0aW9uLgoKMjAwNy0wOC0yOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBQcmludAoJbGFiZWwgREVDTF9VSUQgYXMgRC4ldS4KCSogdHJlZS1kZmEuYyAoZHVtcF92YXJpYWJsZSk6IFByaW50IERFQ0xfVUlEIGFzIEQuJXUuCgoyMDA3LTA4LTI5ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGZ4Y291ZGVydEBnY2MuZ251Lm9yZz4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9GTl9QVFJfUFRSX1NJWkUpOiBOZXcgdHlwZS4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9SRUFMTE9DKTogTmV3IGJ1aWx0aW4uCgoyMDA3LTA4LTI5ICBEb3VnbGFzIEdyZWdvciAgPGRvdWcuZ3JlZ29yQGdtYWlsLmNvbT4KCglQUiBjKysvMzMxOTQKCSogdHJlZS5jIChidWlsZF90eXBlX2F0dHJpYnV0ZV9xdWFsX3ZhcmlhbnQpOiBTZXQgY2Fub25pY2FsIHR5cGVzCglvbiB0aGUgZmluYWwsIHVucXVhbGlmaWVkIGF0dHJpYnV0ZSB2YXJpYW50IGJlZm9yZSBidWlsZGluZyB0aGUKCXF1YWxpZmllZCB2ZXJzaW9uLgoKMjAwNy0wOC0yOSAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmMgKGJmaW5fZXhwYW5kX2J1aWx0aW4pOiBGaXggdGhlIGFyZ3VtZW50CglvcmRlciBvZiBfX2J1aWx0aW5fYmZpbl9jbXBseF9tYWMgYW5kIF9fYnVpbHRpbl9iZmluX2NtcGx4X21zdS4KCjIwMDctMDgtMjkgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCVJldmVydAoJMjAwNy0wOC0yOSAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKGNvbXBvc2V2MmhpKTogUHV0IG9wZXJhbmRzIGludG8gdmVjdG9yCgl3aXRoIGNvcnJlY3Qgb3JkZXIuCgoyMDA3LTA4LTI5ICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKGNvbXBvc2V2MmhpKTogUHV0IG9wZXJhbmRzIGludG8gdmVjdG9yCgl3aXRoIGNvcnJlY3Qgb3JkZXIuCgoyMDA3LTA4LTI5ICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoYmZpbl9leHBhbmRfY2FsbCk6IElubGluZSBQTFQgd2l0aCBsMV90ZXh0CglhdHRyaWJ1dGUgd2hlbiBhcHByb3ByaWF0ZS4KCShiZmluX2hhbmRsZV9sMV90ZXh0X2F0dHJpYnV0ZSk6IE5ldy4KCShiZmluX2hhbmRsZV9sMV9kYXRhX2F0dHJpYnV0ZSk6IE5ldy4KCShiZmluX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBhdHRyaWJ1dGVzOiBsMV90ZXh0LCBsMV9kYXRhLAoJbDFfZGF0YV9BIGFuZCBsMV9kYXRhX0IuCgkqIGRvYy9leHRlbmQudGV4aSAobm9kZSBGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRG9jdW1lbnQgbDFfdGV4dAoJZnVuY3Rpb24gYXR0cmlidXRlLgoJKFZhcmlhYmxlIEF0dHJpYnV0ZXMpOiBBZGQgQmxhY2tmaW4gc3Vic2VjdGlvbi4gRG9jdW1lbnQgbDFfZGF0YSwKCWwxX2RhdGFfQSBhbmQgbDFfZGF0YV9CIHZhcmlhYmxlIGF0dHJpYnV0ZXMuCgoyMDA3LTA4LTI4ICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4ub3B0IChtaW5saW5lLXBsdCk6IEFkZC4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX2V4cGFuZF9jYWxsKTogSW5saW5lIFBMVCB3aGVuIGVtaXQKCWNhbGwgdG8gZ2xvYmFsIGZ1bmN0aW9ucy4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSk6IE1lbnRpb24gLW1pbmxpbmUtcGx0LgoJKEJsYWNrZmluIE9wdGlvbnMpOiBEb2N1bWVudCAtbWlubGluZS1wbHQuCgoyMDA3LTA4LTI4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2dldF9mdW5jdGlvbl9raW5kKTogQXNzZXJ0IHdlJ3JlIG5ldmVyCglnaXZlbiBhIG5vbi1mdW5jdGlvbi4KCShtNjhrX29rX2Zvcl9zaWJjYWxsX3ApOiBPbmx5IHNpYmNhbGwgZnVuY3Rpb25zIG9mIHRoZSBzYW1lIGtpbmQuCgoyMDA3LTA4LTI4ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9naW1wbGlmeV92YV9hcmdfZXhwcik6IEZpeCBzaDJhIHN1cHBvcnQuCgoyMDA3LTA4LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaCAoQ09OU1RfQ0FTVCk6IEF2b2lkIHVuaW9uIGZvciBnY2MtNC4wLnguCgoyMDA3LTA4LTI4ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2Z1bmN0aW9uX2RlY2wpOiBJbmNyZWFzZSBzaXplIG9mCglmdW5jdGlvbl9jb2RlIGJpdGZpZWxkLgoKMjAwNy0wOC0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmgKCShNNjhLX0hPTk9SX1RBUkdFVF9TVFJJQ1RfQUxJR05NRU5UKTogUmVkZWZpbmUgYXMgMC4KCSogY29uZmlnL202OGsvbTY4ay5jIChUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IE5ldy4KCShtNjhrX3JldHVybl9pbl9tZW1vcnkpOiBOZXcuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoTTY4S19IT05PUl9UQVJHRVRfU1RSSUNUX0FMSUdOTUVOVCk6CglOZXcuCgoyMDA3LTA4LTI4ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMjY2MQoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbl8xKSBbVkVDX1NFTEVDVF06CglTaW1wbGlmeSBuZXN0ZWQgVkVDX1NFTEVDVCAod2l0aCBvcHRpb25hbCBWRUNfQ09OQ0FUIG9wZXJhdG9yIGFzCglvcGVyYW5kKSB3aGVuIHRvcCBWRUNfU0VMRUNUIGV4dHJhY3RzIHNjYWxhciBlbGVtZW50LgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKCp2ZWNfZXh0cmFjdF92NHNpX21lbSk6IE5ldyBwYXR0ZXJuLgoJKCp2ZWNfZXh0cmFjdF92NHNmX21lbSk6IERpdHRvLgoKMjAwNy0wOC0yOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjM3MAoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogTW92ZSBwYXNzX2RmX2ZpbmlzaAoJYWZ0ZXIgcGFzc19wb3N0cmVsb2FkIHN1Ymxpc3QuCgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMzE0OAoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uXzEpOiBPbmx5IG9wdGltaXplCgkobmVnIChsdCBYIDApKSBpZiBYIGhhcyBzY2FsYXIgaW50IG1vZGUuCgoJUFIgZGVidWcvMzI5MTQKCSogZHdhcmYyb3V0LmMgKHJ0bF9mb3JfZGVjbF9pbml0KTogSWYgdmVjdG9yIGRlY2wgaGFzIENPTlNUUlVDVE9SCglpbml0aWFsaXplciwgdXNlIGJ1aWxkX3ZlY3Rvcl9mcm9tX2N0b3IgaWYgcG9zc2libGUgdG8gY3JlYXRlCglWRUNUT1JfQ1NUIG91dCBvZiBpdC4gIElmIHZlY3RvciBpbml0aWFsaXplciBpcyBub3QgVkVDVE9SX0NTVAoJZXZlbiBhZnRlciB0aGlzLCByZXR1cm4gTlVMTC4KCjIwMDctMDgtMjggIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19jb25zdGFudCk6IEhhbmRsZSBDT01QTEVYX0NTVC4KCjIwMDctMDgtMjggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUuaCAoREVDTF9ESVNSRUdBUkRfSU5MSU5FX0xJTUlUUyk6IE5ldy4KCShzdHJ1Y3QgdHJlZV9mdW5jdGlvbl9kZWNsKTogTWFrZSBmdW5jdGlvbl9jb2RlIGEgYml0ZmllbGQuCglBZGQgZGlzcmVnYXJkX2lubGluZV9saW1pdHMgZmxhZy4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfcHJvY2Vzc19uZXdfZnVuY3Rpb25zKTogQ2hlY2sKCURFQ0xfRElTUkVHQVJEX0lOTElORV9MSU1JVFMgaW5zdGVhZCBvZiBkaXNyZWdhcmRfaW5saW5lX2xpbWl0c19wLgoJKGNncmFwaF9wcmVzZXJ2ZV9mdW5jdGlvbl9ib2R5X3ApOiBMaWtld2lzZS4KCSogaXBhLWlubGluZS5jIChjb21wdXRlX2lubGluZV9wYXJhbWV0ZXJzKTogTGlrZXdpc2UuCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBTZXQgREVDTF9ESVNSRUdBUkRfSU5MSU5FX0xJTUlUUwoJZm9yIEdOVSBDIGV4dGVybiBpbmxpbmUgZnVuY3Rpb25zLgoJKG1lcmdlX2RlY2xzKTogTWVyZ2UgREVDTF9ESVNSRUdBUkRfSU5MSU5FX0xJTUlUUy4KCSogdHJlZS1pbmxpbmUuYyAoZGlzcmVnYXJkX2lubGluZV9saW1pdHNfcCk6IFJlbW92ZS4KCSogdHJlZS1pbmxpbmUuaCAoZGlzcmVnYXJkX2lubGluZV9saW1pdHNfcCk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfYWx3YXlzX2lubGluZV9hdHRyaWJ1dGUpOiBTZXQKCURFQ0xfRElTUkVHQVJEX0lOTElORV9MSU1JVFMuCgkqIGxhbmdob29rcy5jIChhZGRfYnVpbHRpbl9mdW5jdGlvbik6IFZlcmlmeSB0aGUgZnVuY3Rpb24gY29kZQoJZml0cyBpbiB0aGUgYml0ZmllbGQuCgoyMDA3LTA4LTI4ICBNaXJjZWEgTmFtb2xhcnUgIDxuYW1vbGFydUBpbC5pYm0uY29tPgoJICAgIFZsYWRpbWlyIFlhbm92c2t5ICA8eWFub3ZAaWwuaWJtLmNvbT4KCSAgICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgkgICAgQW5kcmV5IEJlbGV2YW50c2V2ICA8YWJlbEBpc3ByYXMucnU+CgoJKiBjb25maWcvc3B1L3NwdS5tZDogUmVjb2duaXplIGRvbG9vcCBwYXR0ZXJuIHdoZW4gLWZtb2R1bG8tc2NoZWQKCWlzIHNldC4KCSogbW9kdWxvLXNjaGVkLmM6IEFkZCBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyBkby1sb29wLgoJKGRvbG9vcF9yZWdpc3Rlcl9nZXQpOiBDaGFuZ2UgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBzdXBwb3J0Cgl0aGUgbmV3IGRvLWxvb3AgcGF0dGVybiBhbmQgY2hlY2sgd2hldGhlciBDT1VOVF9SRUcgaGFzIG5vIG90aGVyCglvY2N1cmVuY2VzIGluIHRoZSBsb29wIGJlc2lkZXMgaW4gdGhlIGNvbnRyb2wgcGFydC4KCShkdXBsaWNhdGVfaW5zbnNfb2ZfY3ljbGVzKTogRG8gbm90IGR1cGxpY2F0ZSB0aGUgaW5zbiB3aGljaAoJY2hhbmdlcyBjb3VudF9yZWcgYXMgaXQgaXMgYWxyZWFkeSBhZGp1c3RlZC4KCShnZW5lcmF0ZV9wcm9sb2dfZXBpbG9nKTogTmV3IGFyZ3VtZW50IHRvIHN1cHBvcnQgdGhlIG5ldwoJZG8tbG9vcCBwYXR0ZXJuLiAgQ2hhbmdlIHRoZSBzdWJ0cmFjdCBpbnN0cnVjdGlvbiB0byB1c2UKCWV4cGFuZF9zaW1wbGVfYmlub3AuICBDYWxsIGR1cGxpY2F0ZV9pbnNuc19vZl9jeWNsZXMgd2l0aCBuZXcKCWFyZ3VtZW50LgoJKHNtc19zY2hlZHVsZSk6IENhbGwgZG9sb29wX3JlZ2lzdGVyX2dldCBhbmQKCWdlbmVyYXRlX3Byb2xvZ19lcGlsb2cgd2l0aCBuZXcgYXJndW1lbnQuICBEbyBub3QgaGFuZGxlIGxvb3BzCgl3aXRoIHNpbmdsZSBzZXRzIGluc25zIHdpdGggc3VicmVnIGluIHRoZWlyIGxocy4KCSogbG9vcC1kb2xvb3AuYyAoZG9sb29wX29wdGltaXplKTogU3VwcG9ydCBmb3IgYW5vdGhlciBkby1sb29wCglwYXR0ZXJuLgoJKGRvbG9vcF9jb25kaXRpb25fZ2V0KTogR2V0cyBhbiBpbnN0cnVjdGlvbiBpbnN0ZWFkIG9mIGEgcGF0dGVybgoJYW5kIGNoYW5nZSB0aGUgcmV0dXJuIGNvbmRpdGlvbiB3aGVuIHRoZSBkby1sb29wIHBhdHRlcm4gaXMKCW5vdCBwYXJhbGxlbC4KCSogZGRnLmMgKGNyZWF0ZV9kZGdfZGVwX2Zyb21faW50cmFfbG9vcF9saW5rKTogSGFuZGxlIG9ubHkgcmVnCglkZXBzIHdoZW4gY29uc2lkZXJpbmcgdG8gbm90IGNyZWF0ZSBlZGdlcy4KCjIwMDctMDgtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChnbnVfaW5saW5lIGZ1bnRpb24gYXR0cmlidXRlKTogRG9jdW1lbnQgQysrCgliZWhhdmlvci4KCjIwMDctMDgtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMTMzNwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcik6IERpc2NhcmQgdGhlIGFzc2lnbm1lbnQgb2YgCgl6ZXJvLXNpemVkIHR5cGVzIGFmdGVyIGNhbGxpbmcgZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfcmhzLgoKMjAwNy0wOC0yNyAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogcmVnY2xhc3MuYyAoaW5pdF9yZWdfYXV0b2luYyk6IEZpeCB0eXBvLgoKMjAwNy0wOC0yNyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgkKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8zMzE3MwoJKiB0cmVlLXNzYS1hbGlhcy5jIChmaW5kX3VzZWRfcG9ydGlvbnMpOiBGaXggcmV2ZXJzZWQgdGVzdC4KCjIwMDctMDgtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiB0YXJnZXQvMzEzODUKCSogY29uZmlnL2kzODYvaTM4Ni5oIChWQUxJRF9ERlBfTU9ERV9QKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfaGFyZF9yZWdub19tb2RlX29rKTogQWxsb3cgREZQIGluCglHUFIuCgoyMDA3LTA4LTI3ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoJICAgIE5pZ2VsIFN0ZXBoZW5zIDxuaWdlbEBtaXBzLmNvbT4KCglTZXBhcmF0ZSB0YXJnZXQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gZnJvbSBnZW5lcmFsCgliYWNrLWVuZCBpbml0aWFsaXphdGlvbi4KCgkqIHRvcGxldi5jIChpbml0X2FsaWdubWVudHMpOiBOZXcsIHNwbGl0IG91dCBmcm9tLi4uCgkocHJvY2Vzc19vcHRpb25zKTogLi4uaGVyZS4KCShiYWNrZW5kX2luaXRfdGFyZ2V0KTogTmV3LCBzcGxpdCBvdXQgZnJvbS4uLgoJKGJhY2tlbmRfaW5pdCk6IC4uLmhlcmUuCgkobGFuZ19kZXBlbmRlbnRfaW5pdF90YXJnZXQpOiBOZXcsIHNwbGl0IG91dCBmcm9tLi4uCgkobGFuZ19kZXBlbmRlbnRfaW5pdCk6IC4uLmhlcmUuCgkodGFyZ2V0X3JlaW5pdCk6IE5ldy4KCSogdG9wbGV2LmggKHRhcmdldF9yZWluaXQpOiBEZWNsYXJlLgoJKiBleHByLmMgKGluaXRfZXhwcl90YXJnZXQpOiBSZW5hbWVkIGZyb20gaW5pdF9leHByX29uY2UsIHNpbmNlIGl0Cglub3cgY2FuIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4gIFVwZGF0ZSBjb21tZW50cy4KCSogZXhwci5oIChpbml0X2V4cHJfdGFyZ2V0KTogTGlrZXdpc2UuCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfdGFyZ2V0KTogUmVuYW1lZCBmcm9tIGluaXRfYWxpYXNfb25jZSwgc2luY2UgaXQKCW5vdyBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiAgRXhwbGljaXRseSB6ZXJvCglzdGF0aWNfcmVnX2Jhc2VfdmFsdWUuCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9yZWdzKTogTmV3LCBzcGxpdCBvdXQgZnJvbS4uLgoJKGluaXRfZW1pdF9vbmNlKTogSGVyZS4KCSogcmVnY2xhc3MuYyAoaW5pdGlhbF9maXhlZF9yZWdzLCBpbml0aWFsX2NhbGxfdXNlZF9yZWdzKTogTWFrZQoJbm9uLWNvbnN0LCBzbyB0aGF0IGNoYW5nZXMgZnJvbSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGNhbiBvdmVyd3JpdGUKCXZhbHVlcyBwcm92aWRlZCBieSB0aGUgc3RhdGljIGluaXRpYWxpemVycy4KCShpbml0aWFsX2NhbGxfcmVhbGx5X3VzZWRfcmVncyk6IE5ldywgdXNlZCBzaW1pbGFybHkgdG8gdGhlIGFib3ZlLgoJKGluaXRpYWxfcmVnX25hbWVzKTogTGlrZXdpc2UuCgkobGFzdF9tb2RlX2Zvcl9pbml0X21vdmVfY29zdCk6IFByb21vdGVkIGZ1bmN0aW9uLWxvY2FsIHN0YXRpYyB0bwoJZmlsZS1zY29wZSBzdGF0aWMgdG8gbWFrZSBpdCBhY2Nlc3NpYmxlIG91dHNpZGUgaW5pdF9tb3ZlX2Nvc3QuCgkoaW5pdF9yZWdfc2V0cyk6IERvIG5vdCBpbml0aWFsaXplIGZpeGVkX3JlZ3MgYW5kIGNhbGxfdXNlZF9yZWdzIHlldC4KCURvIG5vdCBpbml0aWFsaXplIGludl9yZWdfYWxsb2Nfb3JkZXIgeWV0LCBlaXRoZXIuICBEbyBpbml0aWFsaXplCglyZWdfbmFtZXMgc2luY2UgaXQgaXMgbmVlZGVkIGZvciBwYXJzaW5nIGNvbW1hbmQtbGluZSBvcHRpb25zLgoJKGluaXRfbW92ZV9jb3N0KTogVXNlIGxhc3RfbW9kZV9mb3JfaW5pdF9tb3ZlX2Nvc3QgaW5zdGVhZCBvZgoJZnVuY3Rpb24tbG9jYWwgc3RhdGljLgoJKGluaXRfcmVnX3NldHNfMSk6IEluaXRpYWxpemUgZml4ZWRfcmVncywgY2FsbF91c2VkX3JlZ3MsIGFuZAoJY2FsbF9yZWFsbHlfdXNlZF9yZWdzIG5vdy4gIFJlaW5pdGlhbGl6ZSByZWdfbmFtZXMuICBBbHNvCglpbml0aWFsaXplIGludl9yZWdfYWxsb2Nfb3JkZXIuICBaZXJvIHJlZ19jbGFzc19zdWJ1bmlvbiBhbmQKCXJlZ19jbGFzc19zdXBlcnVuaW9uLiAgQ2xlYXIgbG9zaW5nX2NhbGxlcl9zYXZlX3JlZ19zZXQuCglQcmVzZXJ2ZSBnbG9iYWwgcmVnaXN0ZXJzIGlmIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4gIFJlc2V0Cgltb3ZlIGNvc3QsIG1heV9tb3ZlX2luX2Nvc3QsIG1heV9tb3ZlX291dF9jb3N0LCBhbmQKCWxhc3RfbW9kZV9mb3JfaW5pdF9tb3ZlX2Nvc3QuCgkoaW5pdF9yZWdfbW9kZXNfdGFyZ2V0KTogUmVuYW1lZCBmcm9tIGluaXRfcmVnX21vZGVzX29uY2UsIHNpbmNlIGl0CgljYW4gbm93IGJlIGludm9rZWQgbW9yZSB0aGFuIG9uY2UuICBVcGRhdGUgY29tbWVudHMuCgkoaW5pdF9yZWdzKTogVXBkYXRlIGNvbW1lbnRzLgoJKGZpeF9yZWdpc3Rlcik6IFVwZGF0ZSBpbml0aWFsX2ZpeGVkX3JlZ3MsIGluaXRpYWxfY2FsbF91c2VkX3JlZ3MsCglhbmQgaW5pdGlhbF9jYWxsX3JlYWxseV91c2VkX3JlZ3MsIGluc3RlYWQgb2YgdGhlIG5vbi1pbml0aWFsIAoJdmFyaWFibGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2F2ZSB0aGUgY29tbWFuZC1saW5lIHJlZ2lzdGVyIHNldHRpbmdzCglhZnRlciB0YXJnZXQgcmVpbml0aWFsaXphdGlvbi4KCShpbml0X3JlZ19hdXRvaW5jKTogWmVybyBmb3JiaWRkZW5faW5jX2RlY19jbGFzc2VzLgoJKiBydGwuaCAoaW5pdF9lbWl0X3JlZ3MpOiBEZWNsYXJlLgoJKGluaXRfcmVnX21vZGVzX3RhcmdldCwgaW5pdF9hbGlhc190YXJnZXQpOiBSZW5hbWVkIGFzIGRlc2NyaWJlZAoJYWJvdmUuCgkqIHJlbG9hZDEuYyAoaW5pdF9yZWxvYWQpOiBVcGRhdGUgY29tbWVudHMuCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IExpa2V3aXNlLgoJKiBjZmdsb29wYW5hbC5jIChpbml0X3NldF9jb3N0cyk6IEV4cGxpY2l0bHkgemVybyB0YXJnZXRfYXZhaWxfcmVncy4KCQoyMDA3LTA4LTI2ICBDaGFvLXlpbmcgRnUgIDxmdUBtaXBzLmNvbT4KCgkqIHJ0bC5oIChYQ05NUEZWKTogUHJlc2VydmUgY29uc3QtbmVzcyBvZiBwYXJhbWV0ZXJzIHRocm91Z2ggdXNlIG9mCglfX3R5cGVvZigpLgoKMjAwNy0wOC0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWxpYXMuYyAobWVtb3J5X21vZGlmaWVkXzEsIG1lbW9yeV9tb2RpZmllZF9pbl9pbnNuX3ApOgoJQ29uc3RpZnkuCgkqIGJhc2ljLWJsb2NrLmggKHRyZWVfcHJlZGljdGVkX2J5X3AsIHJ0bF9wcmVkaWN0ZWRfYnlfcCk6CglMaWtld2lzZS4KCSogYmItcmVvcmRlci5jIChjb3B5X2JiX3ApOiBMaWtld2lzZS4KCSogY2ZnaG9va3MuYyAoY2FuX3JlbW92ZV9icmFuY2hfcCwgY2FuX21lcmdlX2Jsb2Nrc19wLAoJcHJlZGljdGVkX2J5X3AsIGNhbl9kdXBsaWNhdGVfYmxvY2tfcCwgYmxvY2tfZW5kc193aXRoX2NhbGxfcCwKCWJsb2NrX2VuZHNfd2l0aF9jb25kanVtcF9wKTogTGlrZXdpc2UuCgkqIGNmZ2hvb2tzLmggKGNhbl9yZW1vdmVfYnJhbmNoX3AsIGNhbl9tZXJnZV9ibG9ja3NfcCwKCXByZWRpY3RlZF9ieV9wLCBjYW5fZHVwbGljYXRlX2Jsb2NrX3AsIGJsb2NrX2VuZHNfd2l0aF9jYWxsX3AsCglibG9ja19lbmRzX3dpdGhfY29uZGp1bXBfcCk6IExpa2V3aXNlLgoJKiBjZmdsYXlvdXQuYyAoY2ZnX2xheW91dF9jYW5fZHVwbGljYXRlX2JiX3ApOiBMaWtld2lzZS4KCSogY2ZncnRsLmMgKGNhbl9kZWxldGVfbm90ZV9wLCBjYW5fZGVsZXRlX2xhYmVsX3AsCglydGxfY2FuX21lcmdlX2Jsb2NrcywgY2ZnX2xheW91dF9jYW5fbWVyZ2VfYmxvY2tzX3AsCglydGxfYmxvY2tfZW5kc193aXRoX2NhbGxfcCwgcnRsX2Jsb2NrX2VuZHNfd2l0aF9jb25kanVtcF9wLAoJbmVlZF9mYWtlX2VkZ2VfcCwgcnRsX2Nhbl9yZW1vdmVfYnJhbmNoX3ApOiBMaWtld2lzZS4KCSogZGJ4b3V0LmMgKGRieF9kZWJ1Z19ob29rcywgeGNvZmZfZGVidWdfaG9va3MpOiBVc2UKCWRlYnVnX3RydWVfY29uc3RfdHJlZSBpbnN0YWQgb2YgZGVidWdfdHJ1ZV90cmVlLgoJKiBkZWJ1Zy5jIChkb19ub3RoaW5nX2RlYnVnX2hvb2tzKTogTGlrZXdpc2UuCgkqIGRlYnVnLmggKGlnbm9yZV9ibG9jaywgZGVidWdfdHJ1ZV9jb25zdF90cmVlKTogQ29uc3RpZnkuCgkqIGR3YXJmMm91dC5jIChzdGFja19hZGp1c3Rfb2Zmc2V0LCBjbG9iYmVyc19xdWV1ZWRfcmVnX3NhdmUsCglkd2FyZjJvdXRfaWdub3JlX2Jsb2NrLCBpc19wc2V1ZG9fcmVnLCBpc190YWdnZWRfdHlwZSwKCWRlY2xfdWx0aW1hdGVfb3JpZ2luLCBibG9ja191bHRpbWF0ZV9vcmlnaW4sIGxvb2t1cF9kZWNsX2xvYywKCXNhbWVfZHdfdmFsX3AsIGFkZF9yYW5nZXMsIGlzX3N1YnJhbmdlX3R5cGUsIHR5cGVfaXNfZW51bSwKCWRieF9yZWdfbnVtYmVyLCBpc19iYXNlZF9sb2MsIGZpZWxkX3R5cGUsCglzaW1wbGVfdHlwZV9hbGlnbl9pbl9iaXRzLCBzaW1wbGVfZGVjbF9hbGlnbl9pbl9iaXRzLAoJc2ltcGxlX3R5cGVfc2l6ZV9pbl9iaXRzLCBmaWVsZF9ieXRlX29mZnNldCwgaW5zZXJ0X2Zsb2F0LAoJdHlwZV90YWcsIG1lbWJlcl9kZWNsYXJlZF90eXBlLCBpc19yZWR1bmRhbnRfdHlwZWRlZiwKCXNlY25hbWVfZm9yX2RlY2wsIGlzX2lubGluZWRfZW50cnlfcG9pbnQpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoY29uc3RfbmV4dF9pbnNuLCBjb25zdF9wcmV2aW91c19pbnNuLAoJY29uc3RfbmV4dF9ub25ub3RlX2luc24sIGNvbnN0X3ByZXZfbm9ubm90ZV9pbnNuLAoJY29uc3RfbmV4dF9yZWFsX2luc24sIGNvbnN0X3ByZXZfcmVhbF9pbnNuLAoJY29uc3RfbmV4dF9hY3RpdmVfaW5zbiwgY29uc3RfcHJldl9hY3RpdmVfaW5zbiwgY29uc3RfbmV4dF9sYWJlbCwKCWNvbnN0X3ByZXZfbGFiZWwpOiBMaWtld2lzZS4KCSogZXhjZXB0LmggKGxvb2t1cF9zdG10X2VoX3JlZ2lvbl9mbiwgbG9va3VwX3N0bXRfZWhfcmVnaW9uKToKCUxpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChtYXlfdHJhcF9leHAsIGhhaWZhX2NsYXNzaWZ5X2luc24sCglmaW5kX3NldF9yZWdfd2VpZ2h0LCBub19yZWFsX2luc25zX3AsIGZpbmRfc2V0X3JlZ193ZWlnaHQsCglzY2hlZF9pbnNuX2lzX2xlZ2l0aW1hdGVfZm9yX3NwZWN1bGF0aW9uX3ApOiBMaWtld2lzZS4KCSoganVtcC5jIChyZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMsCglyZXZlcnNlZF9jb21wYXJpc29uX2NvZGUsIHJldmVyc2VkX2NvbXBhcmlzb24sIGNvbmRqdW1wX2xhYmVsKToKCUxpa2V3aXNlLgoJKiBwcmVkaWN0LmMgKHJ0bF9wcmVkaWN0ZWRfYnlfcCwgdHJlZV9wcmVkaWN0ZWRfYnlfcCk6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAoc3RhY2tfcmVnc19tZW50aW9uZWRfcCwgc3RhY2tfcmVnc19tZW50aW9uZWQpOgoJTGlrZXdpc2UuCgkqIHJ0bC5oIChjb25zdF9wcmV2aW91c19pbnNuLCBjb25zdF9uZXh0X2luc24sCgljb25zdF9wcmV2X25vbm5vdGVfaW5zbiwgY29uc3RfbmV4dF9ub25ub3RlX2luc24sCgljb25zdF9wcmV2X3JlYWxfaW5zbiwgY29uc3RfbmV4dF9yZWFsX2luc24sCgljb25zdF9wcmV2X2FjdGl2ZV9pbnNuLCBjb25zdF9uZXh0X2FjdGl2ZV9pbnNuLCBjb25zdF9wcmV2X2xhYmVsLAoJY29uc3RfbmV4dF9sYWJlbCwgbW9kaWZpZWRfYmV0d2Vlbl9wLCBtb2RpZmllZF9pbl9wLAoJY29uc3Rfbm90ZV9zdG9yZXNrZWVwX3dpdGhfY2FsbF9wLCBjb25kanVtcF9sYWJlbCwKCXJldmVyc2VkX2NvbXBhcmlzb24sIHJldmVyc2VkX2NvbXBhcmlzb25fY29kZSwKCXJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cywgbWVtb3J5X21vZGlmaWVkX2luX2luc25fcCwKCXN0YWNrX3JlZ3NfbWVudGlvbmVkKTogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYyAobW9kaWZpZWRfYmV0d2Vlbl9wLCBtb2RpZmllZF9pbl9wLCBjb25zdF9ub3RlX3N0b3JlcywKCWtlZXBfd2l0aF9jYWxsX3ApOiBMaWtld2lzZS4KCSogc2NoZWQtZGVwcy5jIChkZXBzX21heV90cmFwX3AsIHNjaGVkX2dldF9jb25kaXRpb24sCgljb25kaXRpb25zX211dGV4X3AsIHNjaGVkX2luc25zX2NvbmRpdGlvbnNfbXV0ZXhfcHNkX25leHRfbGlzdCwKCXNkX2xpc3RzX3NpemUsIHNkX2xpc3RzX2VtcHR5X3ApOiBMaWtld2lzZS4KCSogc2NoZWQtaW50LmggKHNjaGVkX2luc25zX2NvbmRpdGlvbnNfbXV0ZXhfcCwKCWhhaWZhX2NsYXNzaWZ5X2luc24sIG5vX3JlYWxfaW5zbnNfcCwKCXNjaGVkX2luc25faXNfbGVnaXRpbWF0ZV9mb3Jfc3BlY3VsYXRpb25fcCwgc2RfbmV4dF9saXN0LAoJc2RfbGlzdHNfc2l6ZSwgc2RfbGlzdHNfZW1wdHlfcCk6IExpa2V3aXNlLgoJKiBzZGJvdXQuYyAoc2RiX2RlYnVnX2hvb2tzKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnLmMgKHRyZWVfY2FuX21lcmdlX2Jsb2Nrc19wLCBpc19jdHJsX2FsdGVyaW5nX3N0bXQsCglzdG10X2VuZHNfYmJfcCwgdHJlZV9jYW5fcmVtb3ZlX2JyYW5jaF9wLCB0cmVlX2Nhbl9kdXBsaWNhdGVfYmJfcCwKCS10cmVlX2Jsb2NrX2VuZHNfd2l0aF9jYWxsX3AsIHRyZWVfYmxvY2tfZW5kc193aXRoX2NvbmRqdW1wX3ApOgoJTGlrZXdpc2UuCgkqIHRyZWUtZWguYyAobG9va3VwX3N0bXRfZWhfcmVnaW9uX2ZuLCBsb29rdXBfc3RtdF9laF9yZWdpb24sCgl0cmVlX2Nhbl90aHJvd19pbnRlcm5hbCk6IExpa2V3aXNlLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKHBoaV9ub2Rlcyk6IExpa2V3aXNlLgoJKiB0cmVlLWZsb3cuaCAocGhpX25vZGVzc3RtdF9lbmRzX2JiX3AsIGlzX2N0cmxfYWx0ZXJpbmdfc3RtdCwKCXRyZWVfY2FuX3Rocm93X2ludGVybmFsLCBsb29rdXBfc3RtdF9laF9yZWdpb24pOiBMaWtld2lzZS4KCSogdHJlZS1naW1wbGUuYyAoY29uc3RfZ2V0X2NhbGxfZXhwcl9pbik6IExpa2V3aXNlLgoJKiB0cmVlLWdpbXBsZS5oIChjb25zdF9nZXRfY2FsbF9leHByX2luKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoY29uc3RfbG9va3VwX2F0dHJpYnV0ZSwgYXR0cmlidXRlX2xpc3RfZXF1YWwsCglhdHRyaWJ1dGVfbGlzdF9jb250YWluZWQpOiBMaWtld2lzZS4KCSogdHJlZS5oIChhdHRyaWJ1dGVfbGlzdF9lcXVhbCwgYXR0cmlidXRlX2xpc3RfY29udGFpbmVkLAoJY29uc3RfbG9va3VwX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKiB2bXNkYmdvdXQuYyAodm1zZGJnb3V0X2lnbm9yZV9ibG9jayk6IExpa2V3aXNlLgoKMjAwNy0wOC0yNiAgQmVybmhhcmQgRmlzY2hlciAgPGFsZG90QGdjYy5nbnUub3JnPgoKCSogdHJlZS1zc2Etc2Njdm4uYywgdHJlZS1zc2Etc2Njdm4uaCwgdHJlZS12bi5jLAoJdHJlZS1zc2EtcHJlLmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmFpbGluZyB3aGl0ZXNwYWNlLgoKMjAwNy0wOC0yNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIHRhcmdldC8zMjk5MQoJKiBjb25maWcvYWxwaGEvY29uc3RyYWludHMubWQ6IERlbGV0ZSAic3ZuOm1pbWUtdHlwZSIgcHJvcGVydHkKCXdpdGggc3ZuIHByb3BkZWwgInN2bjptaW1lLXR5cGUiLgoKMjAwNy0wOC0yNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzMxODEKCSogaWZjdnQuYyAobm9jZV9nZXRfYWx0X2NvbmRpdGlvbik6IE1ha2Ugc3VyZSB0aGF0IHRoZSBwcmV2aW91cwoJbm9uIE5PVEUgaW5zbiBkb2Vzbid0IGNyb3NzIGJhc2ljIGJsb2NrLgoJKG5vY2VfdHJ5X2Ficyk6IExpa2V3aXNlLgoJKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IExpa2V3aXNlLgoKMjAwNy0wOC0yNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8zMzE1MQoJKiBjb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQgKG9mZnNldHRhYmxlX21lbV9vcGVyYW5kKTogTWVtb3J5CglvcGVyYW5kIHdpdGhvdXQgYXV0by1pbmMtZGVjLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZmxvYXRzaWRmMl9pbnRlcm5hbCk6IFVzZQoJb2Zmc2V0dGFibGVfbWVtX29wZXJhbmQuCgkoZmxvYXR1bnNzaWRmMl9pbnRlcm5hbCk6IFNhbWUuCgkoZml4X3RydW5jZGZzaTJfaW50ZXJuYWwpOiBTYW1lLgoJKGZsb2F0c2lkZl9wcGM2NCk6IFNhbWUuCgkoZmxvYXR1bnNzaWRmX3BwYzY0KTogU2FtZS4KCShmaXhfdHJ1bmN0ZnNpMl9pbnRlcm5hbCk6IFNhbWUuCgoyMDA3LTA4LTI2ICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJUFIgYm9vdHN0cmFwLzMwNjIwCgkqIE1ha2VmaWxlLmluIChsaWJiYWNrZW5kLm8pOiBBZGQgZ2Nvdi1pb3YuaCBkZXBlbmRlbmN5IGFuZAoJcGFzcyBkZWZpbmVzIG5lZWRlZCBmb3IgdmVyc2lvbi5jLgoKMjAwNy0wOC0yNSAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWMgKC0tZGVidWctcHJlZml4LW1hcCBjaGVjayk6IENoYW5nZSBhc3NlbWJsZXIKCXZlcnNpb24gcHJlc3VtZWQgdG8gaGF2ZSBmZWF0dXJlIHRvIDIuMTguCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDctMDgtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKHZlY3Rvcl90eXBlc19jb252ZXJ0aWJsZV9wLAoJZGVjbF93aXRoX25vbm51bGxfYWRkcl9wLCBjX3Byb21vdGluZ19pbnRlZ2VyX3R5cGVfcCwKCXNlbGZfcHJvbW90aW5nX2FyZ3NfcCk6IENvbnN0aWZ5LgoJKiBjLWNvbW1vbi5oIChoYXNfY19saW5rYWdlLCBkZWNsX3dpdGhfbm9ubnVsbF9hZGRyX3AsCgljX3Byb21vdGluZ19pbnRlZ2VyX3R5cGVfcCwgc2VsZl9wcm9tb3RpbmdfYXJnc19wLAoJYW5vbl9hZ2dyX3R5cGVfcCwgdmVjdG9yX3R5cGVzX2NvbnZlcnRpYmxlX3ApOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGFub25fYWdncl90eXBlX3ApOiBMaWtld2lzZS4KCSogKiBjLWR1bXAuYyAoZHVtcF9zdG10KTogTGlrZXdpc2UuCgkqIGMtb2JqYy1jb21tb24uYyAoaGFzX2NfbGlua2FnZSk6IExpa2V3aXNlLgoJKiBjLXRyZWUuaCAoc2FtZV90cmFuc2xhdGlvbl91bml0X3ApOiBMaWtld2lzZS4KCSogYy10eXBlY2suYyAobnVsbF9wb2ludGVyX2NvbnN0YW50X3AsCgl0YWdnZWRfdHlwZXNfdHVfY29tcGF0aWJsZV9wLCBmdW5jdGlvbl90eXBlc19jb21wYXRpYmxlX3AsCgl0eXBlX2xpc3RzX2NvbXBhdGlibGVfcCwgbHZhbHVlX29yX2Vsc2UsIGx2YWx1ZV9wLAoJY29tcHR5cGVzX2ludGVybmFsLCBzdHJ1Y3QgdGFnZ2VkX3R1X3NlZW5fY2FjaGUsCglzYW1lX3RyYW5zbGF0aW9uX3VuaXRfcCwgYWxsb2NfdGFnZ2VkX3R1X3NlZW5fY2FjaGUsCgljX3NpemVfaW5fYnl0ZXMpOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jIChjb21wYXJlX3B0cl9kYXRhLCBoYXNoX2Rlc2NyaXB0b3IsIGVxX2Rlc2NyaXB0b3IsCgloYXNoX3B0ciwgZXFfcHRyKTogTGlrZXdpc2UuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX2RlY2xfb2tfZm9yX3NpYmNhbGwsCglMQU5HX0hPT0tTX09NUF9QUklWQVRJWkVfQllfUkVGRVJFTkNFKTogTGlrZXdpc2UuCgkqIGxhbmdob29rcy5jIChsaGRfZGVjbF9va19mb3Jfc2liY2FsbCk6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuaCAob2tfZm9yX3NpYmNhbGwsIG9tcF9wcml2YXRpemVfYnlfcmVmZXJlbmNlKToKCUxpa2V3aXNlLgoJKiBvcHRhYnMuYyAob3B0YWJfZm9yX3RyZWVfY29kZSk6IExpa2V3aXNlLgoJKiBvcHRhYnMuaCAob3B0YWJfZm9yX3RyZWVfY29kZSk6IExpa2V3aXNlLgoJKiBydGwuaCAoc2ltcGxpZnlfcnR4KTogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9ydHgpOiBMaWtld2lzZS4KCSogdHJlZS1kdW1wLmMgKHF1ZXVlLCBxdWV1ZV9hbmRfZHVtcF9pbmRleCwgcXVldWVfYW5kX2R1bXBfdHlwZSwKCWR1bXBfZmxhZywgZHVtcF9ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUtZHVtcC5oIChzdHJ1Y3QgZHVtcF9pbmZvLCBkdW1wX3N0bXQsIHF1ZXVlX2FuZF9kdW1wX2luZGV4LAoJcXVldWVfYW5kX2R1bXBfdHlwZSwgZHVtcF9mbGFnKTogTGlrZXdpc2UuCgkqIHRyZWUtZmxvdy5oICh2ZWN0X2Nhbl9mb3JjZV9kcl9hbGlnbm1lbnRfcCk6IExpa2V3aXNlLgoJKiB0cmVlLXBhc3MuaCAoZHVtcF9ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2Nhbl9mb3JjZV9kcl9hbGlnbm1lbnRfcCwKCXN1cHBvcnRhYmxlX25hcnJvd2luZ19vcGVyYXRpb24pOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0b3JpemVyLmggKHZlY3RfY2FuX2ZvcmNlX2RyX2FsaWdubWVudF9wLAoJc3VwcG9ydGFibGVfbmFycm93aW5nX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLXZycC5jIChuZWVkc19vdmVyZmxvd19pbmZpbml0eSwgc3VwcG9ydHNfb3ZlcmZsb3dfaW5maW5pdHksCglpc19uZWdhdGl2ZV9vdmVyZmxvd19pbmZpbml0eSwgaXNfcG9zaXRpdmVfb3ZlcmZsb3dfaW5maW5pdHksCglpc19vdmVyZmxvd19pbmZpbml0eSwgdnJwX3ZhbF9pc19tYXgsIHZycF92YWxfaXNfbWluLAoJbm9ubnVsbF9hcmdfcCwgZ2V0X3ZhbHVlX3JhbmdlLCB2cnBfb3BlcmFuZF9lcXVhbF9wLAoJdXBkYXRlX3ZhbHVlX3JhbmdlLCBhZGRfZXF1aXZhbGVuY2UsIHNzYV9uYW1lX25vbm5lZ2F0aXZlX3AsCglzc2FfbmFtZV9ub256ZXJvX3AsIGZwX3ByZWRpY2F0ZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGF1dG9fdmFyX2luX2ZuX3AsIGVtcHR5X2JvZHlfcCk6IExpa2V3aXNlLgoJKiB0cmVlLmggKGVtcHR5X2JvZHlfcCwgYXV0b192YXJfaW5fZm5fcCwgc3NhX25hbWVfbm9uemVyb19wLAoJc3NhX25hbWVfbm9ubmVnYXRpdmVfcCk6IExpa2V3aXNlLgoKMjAwNy0wOC0yNSAgSGFucyBLZXN0ZXIgIDxoYW5zLmtlc3RlckBlbGxpcHMubmw+CgoJKiBjb25maWcuZ2NjIDogQWRkIHg4Nl82NC1lbGYgdGFyZ2V0LgoKMjAwNy0wOC0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBGaXggb3JkZXIgb2Ygc3RvcmVfYnlfcGllY2VzIGFyZ3VtZW50cy4KCjIwMDctMDgtMjQgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOaWdlbCBTdGVwaGVucyA8bmlnZWxAbWlwcy5jb20+CgoJUFIgdGFyZ2V0LzExNzg3CgoJKiBkb2MvdG0udGV4aSAoU0VUX1JBVElPLCBTRVRfQllfUElFQ0VTX1ApOiBEb2N1bWVudCBuZXcgbWFjcm9zLgoJKFNUT1JFX0JZX1BJRUNFU19QKTogTm8gbG9uZ2VyIGFwcGxpZXMgdG8gX19idWlsdGluX21lbXNldC4KCSogZXhwci5jIChTRVRfQllfUElFQ0VTX1ApOiBEZWZpbmUuCgkoY2FuX3N0b3JlX2J5X3BpZWNlcywgc3RvcmVfYnlfcGllY2VzKTogQWRkIE1FTVNFVFAgYXJndW1lbnQ7IHVzZQoJaXQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIFNFVF9CWV9QSUVDRVNfUCBvciBTVE9SRV9CWV9QSUVDRVNfUC4KCShzdG9yZV9leHByKTogUGFzcyBNRU1TRVRQIGFyZ3VtZW50IHRvIGNhbl9zdG9yZV9ieV9waWVjZXMgYW5kCglzdG9yZV9ieV9waWVjZXMuCgkqIGV4cHIuaCAoU0VUX1JBVElPKTogRGVmaW5lLgoJKGNhbl9zdG9yZV9ieV9waWVjZXMsIHN0b3JlX2J5X3BpZWNlcyk6CVVwZGF0ZSBwcm90b3R5cGVzLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1jcHkpOiBQYXNzIE1FTVNFVFAgYXJndW1lbnQgdG8KCWNhbl9zdG9yZV9ieV9waWVjZXMvc3RvcmVfYnlfcGllY2VzLgoJKGV4cGFuZF9idWlsdGluX21lbWNweV9hcmdzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RybmNweSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX21lbXNldF9hcmdzKTogTGlrZXdpc2UuICBBbHNvIHJlbW92ZSBzcGVjaWFsIGNhc2UKCWZvciBvcHRpbWl6ZV9zaXplIHNvIHRoYXQgY2FuX3N0b3JlX2J5X3BpZWNlcy9TRVRfQllfUElFQ0VTX1AgY2FuCglkZWNpZGUgd2hhdCB0byBkbyBpbnN0ZWFkLgoJKiB2YWx1ZS1wcm9mLmMgKHRyZWVfc3RyaW5nb3BzX3RyYW5zZm9ybSk6IFBhc3MgTUVNU0VUUCBhcmd1bWVudAoJdG8gY2FuX3N0b3JlX2J5X3BpZWNlcy4KCgkqIGNvbmZpZy9zaC9zaC5oIChTRVRfQllfUElFQ0VTX1ApOiBDbG9uZSBmcm9tIFNUT1JFX0JZX1BJRUNFU19QLgoJKiBjb25maWcvczM5MC9zMzkwLmggKFNFVF9CWV9QSUVDRVNfUCk6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvbWlwcy5vcHQgKG1tZW1jcHkpOiBDaGFuZ2UgZnJvbSBWYXIgdG8gTWFzay4KCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogTWFrZSAtT3MgZGVmYXVsdCB0byAtbW1lbWNweS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNSVBTX0NBTExfUkFUSU8pOiBEZWZpbmUuCgkoTU9WRV9SQVRJTywgQ0xFQVJfUkFUSU8sIFNFVF9SQVRJTyk6IERlZmluZS4KCShTVE9SRV9CWV9QSUVDRVNfUCk6IERlZmluZS4KCjIwMDctMDgtMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZhcnBvb2wuYyAodmFycG9vbF9sYXN0X25lZWRlZF9ub2RlKTogRml4IGNvbW1lbnQgdHlwby4KCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IEZpeCBjb21tZW50IHR5cG8uCgkoY2xvbmVfdW5kZXJseWluZ190eXBlKTogVXBkYXRlIGNvbW1lbnQuCgoyMDA3LTA4LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfbWFuZ2xlX3R5cGUsIGRlY2xfaGFzX3NhbWVncCwKCWFscGhhX2luX3NtYWxsX2RhdGFfcCwgYWxwaGFfc3BsaXRfY29tcGxleF9hcmcsCglhbHBoYV9zdGRhcmdfb3B0aW1pemVfaG9vaywgVEFSR0VUX0FTTV9DQU5fT1VUUFVUX01JX1RIVU5LKToKCUNvbnN0aWZ5LgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX21hbmdsZV90eXBlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9jb21wX3R5cGVfYXR0cmlidXRlcywgYXJtX21hbmdsZV90eXBlKToKCUxpa2V3aXNlLgoJKiBjb25maWcvYmZpbi9iZmluLmMgKGZ1bmtpbmQsIGJmaW5fY29tcF90eXBlX2F0dHJpYnV0ZXMsCglUQVJHRVRfQVNNX0NBTl9PVVRQVVRfTUlfVEhVTkspOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCAoZGFyd2luX2JpbmRzX2xvY2FsX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fYmluZHNfbG9jYWxfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfc3RyaW5nX2JlZ2luc193aXRoLCBmcnZfaW5fc21hbGxfZGF0YV9wKToKCUxpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpMzg2X3BlX2JpbmRzX2xvY2FsX3AsCglpMzg2X3BlX3ZhbGlkX2RsbGltcG9ydF9hdHRyaWJ1dGVfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZnVuY3Rpb25fcmVncGFybSwKCWl4ODZfY29tcF90eXBlX2F0dHJpYnV0ZXMsIGl4ODZfbXNfYml0ZmllbGRfbGF5b3V0X3AsCgl4ODZfY2FuX291dHB1dF9taV90aHVuaywgaXg4Nl9tYW5nbGVfdHlwZSwKCVRBUkdFVF9VU0VfQkxPQ0tTX0ZPUl9DT05TVEFOVF9QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGkzODZfcGVfdmFsaWRfZGxsaW1wb3J0X2F0dHJpYnV0ZV9wLAoJaTM4Nl9wZV9iaW5kc19sb2NhbF9wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYwoJKGlhNjRfZmlyc3RfY3ljbGVfbXVsdGlwYXNzX2RmYV9sb29rYWhlYWRfZ3VhcmRfc3BlYywKCWlhNjRfbmVlZHNfYmxvY2tfcCwgaWE2NF9pbl9zbWFsbF9kYXRhX3AsIGlhNjRfbWFuZ2xlX3R5cGUsCglpYTY0X2ludmFsaWRfY29udmVyc2lvbiwgaWE2NF9pbnZhbGlkX3VuYXJ5X29wLAoJaWE2NF9pbnZhbGlkX2JpbmFyeV9vcCwgVEFSR0VUX0FTTV9DQU5fT1VUUFVUX01JX1RIVU5LKToKCUxpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9tMzJjLmMgKG0zMmNfY29tcF90eXBlX2F0dHJpYnV0ZXMpOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbTMyci5jIChtMzJyX2luX3NtYWxsX2RhdGFfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKFRBUkdFVF9BU01fQ0FOX09VVFBVVF9NSV9USFVOSyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdXNlX2Jsb2Nrc19mb3JfY29uc3RhbnRfcCwKCW1pcHNfaW5fc21hbGxfZGF0YV9wLCBtaXBzX3VzZV9hbmNob3JzX2Zvcl9zeW1ib2xfcCwKCW1pcHNfY29tcF90eXBlX2F0dHJpYnV0ZXMsIFRBUkdFVF9BU01fQ0FOX09VVFBVVF9NSV9USFVOSywKCW1pcHNfbmVhcl90eXBlX3AsIG1pcHNfZmFyX3R5cGVfcCwgbWlwc19nbG9iYWxfc3ltYm9sX3AsCgltaXBzX3N5bWJvbF9iaW5kc19sb2NhbF9wLCBtaXBzX2NsYXNzaWZ5X3N5bWJvbCk6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEuYyAocGFfY29tbXV0YXRpdmVfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX2VsZl9pbl9zbWFsbF9kYXRhX3ApOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9pbnZhbGlkX3dpdGhpbl9kb2xvb3AsCglyczYwMDBfbXNfYml0ZmllbGRfbGF5b3V0X3AsIHJzNjAwMF9tYW5nbGVfdHlwZSwKCXJzNjAwMF91c2VfYmxvY2tzX2Zvcl9jb25zdGFudF9wLAoJcnM2MDAwX3ZlY3Rvcl9hbGlnbm1lbnRfcmVhY2hhYmxlLCByczYwMDBfaXNfb3BhcXVlX3R5cGUsCglpbnZhbGlkX2FyZ19mb3JfdW5wcm90b3R5cGVkX2ZuLCBUQVJHRVRfQVNNX0NBTl9PVVRQVVRfTUlfVEhVTkssCglUQVJHRVRfU1BMSVRfQ09NUExFWF9BUkcsIHJzNjAwMF9lbGZfaW5fc21hbGxfZGF0YV9wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9tYW5nbGVfdHlwZSwKCVRBUkdFVF9BU01fQ0FOX09VVFBVVF9NSV9USFVOSywgVEFSR0VUX0lOVkFMSURfV0lUSElOX0RPTE9PUCk6CglMaWtld2lzZS4KCSogY29uZmlnL3Njb3JlL3Njb3JlLmMgKFRBUkdFVF9BU01fQ0FOX09VVFBVVF9NSV9USFVOSywKCXRoX2luX3NtYWxsX2RhdGFfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfbXNfYml0ZmllbGRfbGF5b3V0X3AsCglzaF9kd2FyZl9jYWxsaW5nX2NvbnZlbnRpb24sIFRBUkdFVF9BU01fQ0FOX09VVFBVVF9NSV9USFVOSyk6CglMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2Nhbl9vdXRwdXRfbWlfdGh1bmssCglzcGFyY19tYW5nbGVfdHlwZSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3B1L3NwdS5jIChzcHVfdmVjdG9yX2FsaWdubWVudF9yZWFjaGFibGUpOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoVEFSR0VUX1NQTElUX0NPTVBMRVhfQVJHKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGNvbnN0X2ZpeGVkX2h0YWJfaGFzaCwgY29uc3RfZml4ZWRfaHRhYl9lcSk6CglMaWtld2lzZS4KCSogaG9va3MuYyAoaG9va19ib29sX21vZGVfY29uc3RfcnR4X2ZhbHNlLAoJaG9va19ib29sX21vZGVfY29uc3RfcnR4X3RydWUsCglob29rX2Jvb2xfY29uc3RfdHJlZV9od2lfaHdpX2NvbnN0X3RyZWVfZmFsc2UsCglob29rX2Jvb2xfY29uc3RfdHJlZV9od2lfaHdpX2NvbnN0X3RyZWVfdHJ1ZSwKCWhvb2tfaW50X2NvbnN0X3RyZWVfMCwgaG9va19pbnRfY29uc3RfdHJlZV9jb25zdF90cmVlXzEsCglob29rX2NvbnN0Y2hhcnB0cl9jb25zdF90cmVlX251bGwsCglob29rX2NvbnN0Y2hhcnB0cl9jb25zdF9ydHhfbnVsbCwKCWhvb2tfY29uc3RjaGFycHRyX2NvbnN0X3RyZWVfY29uc3RfdHJlZV9udWxsLAoJaG9va19jb25zdGNoYXJwdHJfaW50X2NvbnN0X3RyZWVfbnVsbCwKCWhvb2tfY29uc3RjaGFycHRyX2ludF9jb25zdF90cmVlX2NvbnN0X3RyZWVfbnVsbCk6IE5ldy4KCShob29rX2Jvb2xfbW9kZV9ydHhfZmFsc2UsIGhvb2tfYm9vbF9tb2RlX3J0eF90cnVlLAoJaG9va19ib29sX3RyZWVfaHdpX2h3aV90cmVlX2ZhbHNlLAoJaG9va19ib29sX3RyZWVfaHdpX2h3aV90cmVlX3RydWUsIGhvb2tfaW50X3RyZWVfMCwKCWhvb2tfaW50X3RyZWVfdHJlZV8xLCBob29rX2NvbnN0Y2hhcnB0cl90cmVlX251bGwsCglob29rX2NvbnN0Y2hhcnB0cl9ydHhfbnVsbCwgaG9va19jb25zdGNoYXJwdHJfdHJlZV90cmVlX251bGwsCglob29rX2NvbnN0Y2hhcnB0cl9pbnRfdHJlZV9udWxsLAoJaG9va19jb25zdGNoYXJwdHJfaW50X3RyZWVfdHJlZV9udWxsKTogRGVsZXRlLgoJKGRlZmF1bHRfY2FuX291dHB1dF9taV90aHVua19ub192Y2FsbCk6IENvbnN0aWZ5LgoJKiBob29rcy5oIChob29rX2Jvb2xfbW9kZV9ydHhfZmFsc2UsIGhvb2tfYm9vbF9tb2RlX3J0eF90cnVlLAoJaG9va19ib29sX3RyZWVfaHdpX2h3aV90cmVlX2ZhbHNlLAoJaG9va19ib29sX3RyZWVfaHdpX2h3aV90cmVlX3RydWUsIGhvb2tfaW50X3RyZWVfMCwKCWhvb2tfaW50X3RyZWVfdHJlZV8xLCBob29rX2NvbnN0Y2hhcnB0cl90cmVlX251bGwsCglob29rX2NvbnN0Y2hhcnB0cl9ydHhfbnVsbCwgaG9va19jb25zdGNoYXJwdHJfdHJlZV90cmVlX251bGwsCglob29rX2NvbnN0Y2hhcnB0cl9pbnRfdHJlZV9udWxsLAoJaG9va19jb25zdGNoYXJwdHJfaW50X3RyZWVfdHJlZV9udWxsKTogRGVsZXRlLgoJKGhvb2tfYm9vbF9tb2RlX2NvbnN0X3J0eF9mYWxzZSwgaG9va19ib29sX21vZGVfY29uc3RfcnR4X3RydWUsCglob29rX2Jvb2xfY29uc3RfdHJlZV9od2lfaHdpX2NvbnN0X3RyZWVfZmFsc2UsCglob29rX2Jvb2xfY29uc3RfdHJlZV9od2lfaHdpX2NvbnN0X3RyZWVfdHJ1ZSwKCWhvb2tfaW50X2NvbnN0X3RyZWVfMCwgaG9va19pbnRfY29uc3RfdHJlZV9jb25zdF90cmVlXzEsCglob29rX2NvbnN0Y2hhcnB0cl9jb25zdF90cmVlX251bGwsCglob29rX2NvbnN0Y2hhcnB0cl9jb25zdF9ydHhfbnVsbCwKCWhvb2tfY29uc3RjaGFycHRyX2NvbnN0X3RyZWVfY29uc3RfdHJlZV9udWxsLAoJaG9va19jb25zdGNoYXJwdHJfaW50X2NvbnN0X3RyZWVfbnVsbCwKCWhvb2tfY29uc3RjaGFycHRyX2ludF9jb25zdF90cmVlX2NvbnN0X3RyZWVfbnVsbCk6IE5ldy4KCShkZWZhdWx0X2Nhbl9vdXRwdXRfbWlfdGh1bmtfbm9fdmNhbGwpOiBDb25zdGlmeS4KCSogaW50ZWdyYXRlLmMgKGZ1bmN0aW9uX2F0dHJpYnV0ZV9pbmxpbmFibGVfcCk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuaCAoZnVuY3Rpb25fYXR0cmlidXRlX2lubGluYWJsZV9wKTogTGlrZXdpc2UuCgkqIGp1bXAuYyAocnR4X3JlbnVtYmVyZWRfZXF1YWxfcCk6IExpa2V3aXNlLgoJKiBvdXRwdXQuaCAoZGVjbF9yZWFkb25seV9zZWN0aW9uLCBjYXRlZ29yaXplX2RlY2xfZm9yX3NlY3Rpb24sCglkZWZhdWx0X3VzZV9hbmNob3JzX2Zvcl9zeW1ib2xfcCwgZGVmYXVsdF9iaW5kc19sb2NhbF9wLAoJZGVmYXVsdF9iaW5kc19sb2NhbF9wXzEpOiBMaWtld2lzZS4KCSogcnRsLmggKHJ0eF9yZW51bWJlcmVkX2VxdWFsX3AsIGRlY2xfZGVmYXVsdF90bHNfbW9kZWwpOgoJTGlrZXdpc2UuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0FTTV9DQU5fT1VUUFVUX01JX1RIVU5LLAoJVEFSR0VUX1ZBTElEX0RMTElNUE9SVF9BVFRSSUJVVEVfUCwgVEFSR0VUX1ZFQ1RPUl9PUEFRVUVfUCwKCVRBUkdFVF9DT01NVVRBVElWRV9QLCBUQVJHRVRfVVNFX0JMT0NLU19GT1JfQ09OU1RBTlRfUCwKCVRBUkdFVF9DT01QX1RZUEVfQVRUUklCVVRFUywKCVRBUkdFVF9GVU5DVElPTl9BVFRSSUJVVEVfSU5MSU5BQkxFX1AsCglUQVJHRVRfTVNfQklURklFTERfTEFZT1VUX1AsIFRBUkdFVF9NQU5HTEVfVFlQRSwKCVRBUkdFVF9JTl9TTUFMTF9EQVRBX1AsIFRBUkdFVF9JTlZBTElEX0NPTlZFUlNJT04sCglUQVJHRVRfSU5WQUxJRF9VTkFSWV9PUCwgVEFSR0VUX0lOVkFMSURfQklOQVJZX09QLAoJVEFSR0VUX0RXQVJGX0NBTExJTkdfQ09OVkVOVElPTik6IExpa2V3aXNlLgoJKiB0YXJnZXQuaCAoY2FuX291dHB1dF9taV90aHVuaywgbmVlZHNfYmxvY2tfcCwKCWZpcnN0X2N5Y2xlX211bHRpcGFzc19kZmFfbG9va2FoZWFkX2d1YXJkX3NwZWMsCgl2ZWN0b3JfYWxpZ25tZW50X3JlYWNoYWJsZSwgY29tcF90eXBlX2F0dHJpYnV0ZXMsCglmdW5jdGlvbl9hdHRyaWJ1dGVfaW5saW5hYmxlX3AsIG1zX2JpdGZpZWxkX2xheW91dF9wLCBtYW5nbGVfdHlwZSwKCWNvbW11dGF0aXZlX3AsIHVzZV9ibG9ja3NfZm9yX2NvbnN0YW50X3AsCgl1c2VfYW5jaG9yc19mb3Jfc3ltYm9sX3AsIGluX3NtYWxsX2RhdGFfcCwgYmluZHNfbG9jYWxfcCwKCXZlY3Rvcl9vcGFxdWVfcCwgZHdhcmZfY2FsbGluZ19jb252ZW50aW9uLCBzdGRhcmdfb3B0aW1pemVfaG9vaywKCWludmFsaWRfd2l0aGluX2RvbG9vcCwgdmFsaWRfZGxsaW1wb3J0X2F0dHJpYnV0ZV9wLAoJc3BsaXRfY29tcGxleF9hcmcsIGludmFsaWRfYXJnX2Zvcl91bnByb3RvdHlwZWRfZm4sCglpbnZhbGlkX2NvbnZlcnNpb24sIGludmFsaWRfdW5hcnlfb3AsIGludmFsaWRfYmluYXJ5X29wKToKCUxpa2V3aXNlLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9pbnZhbGlkX3dpdGhpbl9kb2xvb3AsCglob29rX2ludmFsaWRfYXJnX2Zvcl91bnByb3RvdHlwZWRfZm4sCglkZWZhdWx0X2J1aWx0aW5fdmVjdG9yX2FsaWdubWVudF9yZWFjaGFibGUpOiBMaWtld2lzZS4KCShob29rX2Jvb2xfcnR4X2NvbW11dGF0aXZlX3ApOiBEZWxldGUuCgkoaG9va19ib29sX2NvbnN0X3J0eF9jb21tdXRhdGl2ZV9wKTogTmV3LgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9pbnZhbGlkX3dpdGhpbl9kb2xvb3AsCglkZWZhdWx0X2J1aWx0aW5fdmVjdG9yX2FsaWdubWVudF9yZWFjaGFibGUsCglob29rX2ludmFsaWRfYXJnX2Zvcl91bnByb3RvdHlwZWRfZm4pOiBDb25zdGlmeS4KCShob29rX2Jvb2xfcnR4X2NvbW11dGF0aXZlX3ApOiBEZWxldGUuCgkoaG9va19ib29sX2NvbnN0X3J0eF9jb21tdXRhdGl2ZV9wKTogTmV3LgoJKiB2YXJhc20uYyAoYnNzX2luaXRpYWxpemVyX3AsIGRlY2xfZGVmYXVsdF90bHNfbW9kZWwsCgljYXRlZ29yaXplX2RlY2xfZm9yX3NlY3Rpb24sIGRlY2xfcmVhZG9ubHlfc2VjdGlvbiwKCWRlZmF1bHRfdXNlX2FuY2hvcnNfZm9yX3N5bWJvbF9wLCBkZWZhdWx0X2JpbmRzX2xvY2FsX3AsCglkZWZhdWx0X2JpbmRzX2xvY2FsX3BfMSk6IENvbnN0aWZ5LgoKMjAwNy0wOC0yNCAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lCglfX05PX0JVSUxUSU4gaWYgLWZuby1idWlsdGluLgoKMjAwNy0wOC0yNCAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmMgKHByaW50X29wZXJhbmQpOiBSZXBvcnQgZXJyb3IgaW5zdGVhZCBvZgoJSUNFIGZvciB3cm9uZyBvcGVyYW5kLgoKMjAwNy0wOC0yNCAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKEdURklMRVNfSCk6IFVzZSAkKHBhdHN1YnN0KSBpbnN0ZWFkIG9mICQoc3Vic3QpLgoKMjAwNy0wOC0yNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzMxNjYKCSogdHJlZS1zc2EuYyAodXNlbGVzc190eXBlX2NvbnZlcnNpb25fcCk6IFNwbGl0IGludG8gYQoJcmVjdXJzaXZlIGFuZCBhIG5vbi1yZWN1cnNpdmUgcGFydC4KCSh1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wXzEpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUtc3NhLWNjcC5jIChmb2xkX3N0bXRfcik6IE1ha2Ugc3VyZSB0aGF0IHRoZSByZXN1bHQKCWZyb20gbWF5YmVfZm9sZF9vZmZzZXRfdG9fcmVmZXJlbmNlIGlzIHRyaXZpYWxseSBjb252ZXJ0aWJsZQoJdG8gdGhlIGRlc2lyZWQgdHlwZSBiZWZvcmUgZG9pbmcgdGhlIHNpbXBsaWZpY2F0aW9uLgoKMjAwNy0wOC0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBPcHRpbWl6ZSBpbml0aWFsaXphdGlvbiBvZiBhbiBhcnJheQoJd2l0aCBTVFJJTkdfQ1NULgoJKiBleHByLmggKGJ1aWx0aW5fc3RybmNweV9yZWFkX3N0cik6IE5ldyBwcm90b3R5cGUuCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0aW5fc3RybmNweV9yZWFkX3N0cik6IFJlbW92ZSBwcm90b3R5cGUuCglObyBsb25nZXIgc3RhdGljLgoKMjAwNy0wOC0yNCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMzMTU3CgkqIGlmY3Z0LmMgKG5vY2VfZmluZF9pZl9ibG9jayk6IERvIG5vdCBjbGVhciBpZl9pbmZvLmNvbmRfZWFybGllc3QKCWZpZWxkIHdoZW4gaW5pdGlhbGl6aW5nIGlmX2luZm8gc3RydWN0dXJlLgoKMjAwNy0wOC0yNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtaW5saW5lLm8pOiBBZGQgJChUQVJHRVRfSCkgYW5kICQoSU5URUdSQVRFX0gpCglkZXBlbmRlbmNpZXMuCgkqIGMtb2JqYy1jb21tb24uYyAoY19jYW5ub3RfaW5saW5lX3RyZWVfZm4pOiBSZW1vdmUuCgkqIGxhbmdob29rcy5jIChsaGRfdHJlZV9pbmxpbmluZ19jYW5ub3RfaW5saW5lX3RyZWVfZm4pOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYyAoaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBGb2xkIGluIGNvbW1vbiBwYXJ0cyBvZgoJdGhlIGNhbm5vdF9pbmxpbmVfdHJlZV9mbiBsYW5naG9vay4KCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfdHJlZV9pbmxpbmluZ19jYW5ub3RfaW5saW5lX3RyZWVfZm4pOiBSZW1vdmUuCgkoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0NBTk5PVF9JTkxJTkVfVFJFRV9GTik6IExpa2V3aXNlLgoJKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19JTklUSUFMSVpFUik6IFJlbW92ZSBpbml0aWFsaXplciBmb3IKCWNhbm5vdF9pbmxpbmVfdHJlZV9mbiBsYW5naG9vay4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl90cmVlX2lubGluaW5nKTogUmVtb3ZlCgljYW5ub3RfaW5saW5lX3RyZWVfZm4gbWVtYmVyLgoKMjAwNy0wOC0yNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZXhwci5jIChnZXRfaW5uZXJfcmVmZXJlbmNlKTogRG8gY29tcHV0YXRpb24gb2YgYml0b2Zmc2V0Cglmcm9tIG9mZnNldCBpbiBhIHdheSB3ZSBjYW4gZGV0ZWN0IG92ZXJmbG93IHJlbGlhYmx5LgoKMjAwNy0wOC0yNCAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjcnRzdHVmZi5jIChVU0VfUFRfR05VX0VIX0ZSQU1FKTogRG9uJ3QgZGVmaW5lIGZvciB1Q2xpYmMuCgoyMDA3LTA4LTI0ICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4ub3B0IChtZmFzdC1mcCk6IEFkZC4KCSogY29uZmlnL2JmaW4vbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogTGV0CglsaWJiZmZhc3RmcCBvdmVycmlkZSBsaWJnY2MgaWYgLW1mYXN0LWZwLgoJKiBjb25maWcvYmZpbi9iZmluLmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5KTogTWVudGlvbiAtbWZhc3QtZnAuCgkoQmxhY2tmaW4gT3B0aW9ucyk6IERvY3VtZW50IC1tZmFzdC1mcC4KCjIwMDctMDgtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyNTczCglQUiBtaWRkbGUtZW5kLzMyOTQ2CgkqIHRyZWUtZGF0YS1yZWYuYyAoaW5pdGlhbGl6ZV9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBDbGVhcgoJRERSX1NVQlNDUklQVFMsIEREUl9ESVJfVkVDVFMgYW5kIEREUl9ESVNUX1ZFQ1RTIGF0IHRoZSBiZWdpbm5pbmcuCgkoZmluYWxpemVfZGRyX2RlcGVuZGVudCk6IENsZWFyIEREUl9TVUJTQ1JJUFRTIGFmdGVyIGZyZWVpbmcgaXQuCgkoYnVpbGRfY2xhc3NpY19kaXN0X3ZlY3Rvcik6IFJldHVybiBmYWxzZSByYXRoZXIgdGhhbiB0cnVlIGlmCglERFJfQVJFX0RFUEVOREVOVCBpcyBub24tTlVMTCBhdCB0aGUgYmVnaW5uaW5nLiAgUmV0dXJuIGZhbHNlCglpZiBlaXRoZXIgc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyXzEgb3IgYnVpbGRfY2xhc3NpY19kaXN0X3ZlY3Rvcl8xCglyZXR1cm5lZCBmYWxzZS4gIERvbid0IGNhbGwgc2F2ZV9kaXN0X3YgYmVmb3JlIGNhbGxpbmcKCWJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3JfMS4KCShmcmVlX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBEb24ndCBndWFyZCBmcmVlaW5nIEREUl9TVUJTQ1JJUFRTCgl3aXRoIE5VTEwgRERSX0FSRV9ERVBFTkRFTlQuICBBbHNvIGZyZWUgRERSX0RJU1RfVkVDVFMgYW5kL29yCglERFJfRElSX1ZFQ1RTIHZlY3RvcnMuCgoyMDA3LTA4LTIzICBCcmlhbiBTaWRlYm90aGFtICA8YnJpYW4uc2lkZWJvdGhhbUBnbWFpbC5jb20+CgoJKiBjb25maWd1cmUuYWMgKGxlYjEyOCk6IE1vZGlmeSBzZWQgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBhbnkKCWJpbnV0aWxzIHZlcnNpb24gc3RyaW5nLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUKCjIwMDctMDgtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZy9hcmMvYXJjLXByb3Rvcy5oIGFyY19zZWxlY3RfY2NfbW9kZSwgZ2VuX2NvbXBhcmVfcmVnKToKCVdyYXAgaW4gUlRYX0NPREUgbWFjcm8gZ3VhcmQuCgkqIGNvbmZpZy9hcm0vcGUuYyAoYXJtX2RsbGV4cG9ydF9wLCBhcm1fZGxsaW1wb3J0X3AsCglhcm1fZGxsZXhwb3J0X25hbWVfcCwgYXJtX2RsbGltcG9ydF9uYW1lX3AsIGFybV9tYXJrX2RsbGV4cG9ydCwKCWFybV9tYXJrX2RsbGltcG9ydCwgYXJtX3BlX2VuY29kZV9zZWN0aW9uX2luZm8sCglhcm1fcGVfdW5pcXVlX3NlY3Rpb24pOiBVc2UgSVNPLUMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKiBjb25maWcvYzR4L2M0eC1jLmMgKGM0eF9wYXJzZV9wcmFnbWEsIGM0eF9wcl9DT0RFX1NFQ1RJT04sCgljNHhfcHJfREFUQV9TRUNUSU9OLCBjNHhfcHJfRlVOQ19JU19QVVJFLAoJYzR4X3ByX0ZVTkNfTkVWRVJfUkVUVVJOUywgYzR4X3ByX0lOVEVSUlVQVCwgYzR4X3ByX2lnbm9yZWQpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmggKEFTTV9PVVRQVVRfU0tJUCk6IEZpeCBmb3JtYXQgd2FybmluZy4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oIChBU01fT1VUUFVUX0VYVEVSTkFMKTogVW5kZWYgYmVmb3JlCglkZWZpbmluZy4KCSogY29uZmlnL21pcHMvbWlwcy5oIChBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IEZpeCBmb3JtYXQKCXdhcm5pbmdzLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKE9VVFBVVF9BRERSX0NPTlNUX0VYVFJBKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5jIChwZHAxMV9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCShyZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBVc2UgSVNPLUMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKiBjb25maWcvcGRwMTEvcGRwMTEuaCAoUFJJTlRfT1BFUkFORCk6IEZpeCBmb3JtYXQgd2FybmluZ3MuCgkqIGNvbmZpZy9zY29yZS9zY29yZS1wcm90b3MuaCAoc2NvcmVfZGVjbGFyZV9vYmplY3QpOiBBZGQKCUFUVFJJQlVURV9QUklOVEZfNC4KCSogY29uZmlnL3Njb3JlL3Njb3JlLmggKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogRml4IGZvcm1hdAoJd2FybmluZ3MuCgkqIGZpbmFsLmMgKHByb2ZpbGVfZnVuY3Rpb24pOiBBdm9pZCBlbXB0eSBpZi1ib2RpZXMuCgkKCQoJKiBjYWxscy5jIChtdXN0X3Bhc3NfaW5fc3RhY2tfdmFyX3NpemUsCgltdXN0X3Bhc3NfaW5fc3RhY2tfdmFyX3NpemVfb3JfcGFkKTogQ29uc3RpZnkuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaCAoZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3JldHVybl9pbl9tZW1vcnksCglhbHBoYV9wYXNzX2J5X3JlZmVyZW5jZSwgZnVuY3Rpb25fdmFsdWUsCgl1bmljb3Nta19tdXN0X3Bhc3NfaW5fc3RhY2ssIFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sIFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9hcmMvYXJjLmMgKGFyY19yZXR1cm5faW5fbWVtb3J5LCBhcmNfcGFzc19ieV9yZWZlcmVuY2UsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTLCBUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sCglUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fcmV0dXJuX2luX21lbW9yeSwKCWFybV9wYWRfYXJnX3Vwd2FyZCwgYXJtX2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9wYXNzX2J5X3JlZmVyZW5jZSwKCWFybV9wcm9tb3RlX3Byb3RvdHlwZXMsIGFybV9yZXR1cm5faW5fbXNiLCBhcm1fbXVzdF9wYXNzX2luX3N0YWNrLAoJVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUywgVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOLAoJYXJtX2Z1bmN0aW9uX3ZhbHVlLCBhcm1fcmV0dXJuX2luX21lbW9yeSwgYXJtX3BhZF9hcmdfdXB3YXJkKToKCUxpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5oIChBUk1fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChhdnJfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX3JldHVybl9pbl9tZW1vcnksCglnYXNfb3V0cHV0X2xpbWl0ZWRfc3RyaW5nLCBnYXNfb3V0cHV0X2FzY2lpLCBhdnJfZnVuY3Rpb25fdmFsdWUsCglhdnJfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiBjb25maWcvYmZpbi9iZmluLXByb3Rvcy5oIChiZmluX3JldHVybl9pbl9tZW1vcnkpOiBMaWtld2lzZS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX3Bhc3NfYnlfcmVmZXJlbmNlLAoJYmZpbl9yZXR1cm5faW5fbWVtb3J5LCBUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTLAoJVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUywgVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOKToKCUxpa2V3aXNlLgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfcGFzc19ieV9yZWZlcmVuY2UsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jcngvY3J4LmMgKGNyeF9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZnVuY3Rpb25fYmFzZSwgbWFjaG9waWNfZnVuY3Rpb25fYmFzZV9uYW1lKToKCUxpa2V3aXNlLgoJKiBjb25maWcvZnIzMC9mcjMwLmMgKGZyMzBfbXVzdF9wYXNzX2luX3N0YWNrLAoJVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfbXVzdF9wYXNzX2luX3N0YWNrKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfcmV0dXJuX2luX21lbW9yeSwKCWl4ODZfc29sMTBfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZnVuY3Rpb25fdmFsdWUsCglpeDg2X2Z1bmN0aW9uX3NzZXJlZ3Bhcm0sIGl4ODZfbXVzdF9wYXNzX2luX3N0YWNrLAoJdHlwZV9uYXR1cmFsX21vZGUsIGNsYXNzaWZ5X2FyZ3VtZW50LCBleGFtaW5lX2FyZ3VtZW50LAoJY29uc3RydWN0X2NvbnRhaW5lciwgaXg4Nl9wYXNzX2J5X3JlZmVyZW5jZSwgZnVuY3Rpb25fdmFsdWVfMzIsCglmdW5jdGlvbl92YWx1ZV82NCwgaXg4Nl9mdW5jdGlvbl92YWx1ZV8xLCByZXR1cm5faW5fbWVtb3J5XzMyLAoJcmV0dXJuX2luX21lbW9yeV82NCwgcmV0dXJuX2luX21lbW9yeV9tc182NCwKCWl4ODZfcmV0dXJuX2luX21lbW9yeSwgaXg4Nl9zb2wxMF9yZXR1cm5faW5fbWVtb3J5LAoJVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X2Z1bmN0aW9uX3ZhbHVlLAoJaWE2NF9ocHV4X2Z1bmN0aW9uX2FyZ19wYWRkaW5nKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaGZhX2VsZW1lbnRfbW9kZSwgaWE2NF9yZXR1cm5faW5fbWVtb3J5LAoJaWE2NF9mdW5jdGlvbl92YWx1ZSwgYnVuZGxlX3N0YXRlX2hhc2gsIGJ1bmRsZV9zdGF0ZV9lcV9wLAoJaWE2NF9ocHV4X2Z1bmN0aW9uX2FyZ19wYWRkaW5nKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLXByb3Rvcy5oIChmdW5jdGlvbl9hcmcsCglpcTIwMDBfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYyAoaXEyMDAwX3JldHVybl9pbl9tZW1vcnksCglpcTIwMDBfcGFzc19ieV9yZWZlcmVuY2UsIFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sIFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMsCglmdW5jdGlvbl9hcmcsIGlxMjAwMF9mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9tMzJjLXByb3Rvcy5oIChtMzJjX2Z1bmN0aW9uX3ZhbHVlLAoJbTMyY19wcm9tb3RlX2Z1bmN0aW9uX3JldHVybik6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9tMzJjLmMgKG0zMmNfcGFzc19ieV9yZWZlcmVuY2UsCgltMzJjX3Byb21vdGVfcHJvdG90eXBlcywgbTMyY19wcm9tb3RlX2Z1bmN0aW9uX3JldHVybiwKCW0zMmNfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbTMyci5jIChtMzJyX3JldHVybl9pbl9tZW1vcnksCgltMzJyX3Bhc3NfYnlfcmVmZXJlbmNlLCBUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTLAoJbTMycl9pbl9zbWFsbF9kYXRhX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaCAobTY4aGMxMV9mdW5jdGlvbl9hcmdfcGFkZGluZyk6CglMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX3JldHVybl9pbl9tZW1vcnksCgltNjhoYzExX2Z1bmN0aW9uX2FyZ19wYWRkaW5nKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmggKG02OGtfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTLAoJbTY4a19mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUtcHJvdG9zLmggKG1jb3JlX251bV9hcmdfcmVncywKCW1jb3JlX2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChoYW5kbGVfc3RydWN0c19pbl9yZWdzLAoJbWNvcmVfcmV0dXJuX2luX21lbW9yeSwgVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUywKCVRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTiwgVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUywKCW1jb3JlX251bV9hcmdfcmVncywgbWNvcmVfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19wYWRfYXJnX3Vwd2FyZCwKCW1pcHNfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2Zwcl9yZXR1cm5fZmllbGRzLCBtaXBzX3JldHVybl9pbl9tc2IsCgltaXBzX3JldHVybl9pbl9tZW1vcnksIG1pcHNfcGFzc19ieV9yZWZlcmVuY2UsIG1pcHNfY2FsbGVlX2NvcGllcywKCVRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MsIFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTiwKCVRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMsIG1pcHNfcGFkX2FyZ191cHdhcmQsCgltaXBzX2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbWl4L21taXgtcHJvdG9zLmggKG1taXhfZnVuY3Rpb25fb3V0Z29pbmdfdmFsdWUpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9tbWl4L21taXguYyAobW1peF9wYXNzX2J5X3JlZmVyZW5jZSwKCVRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MsIG1taXhfZnVuY3Rpb25fb3V0Z29pbmdfdmFsdWUsCgltbWl4X2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC1wcm90b3MuaCAobW4xMDMwMF9mdW5jdGlvbl92YWx1ZSk6CglMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChtbjEwMzAwX3JldHVybl9pbl9tZW1vcnksCgltbjEwMzAwX3Bhc3NfYnlfcmVmZXJlbmNlLCBUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTLAoJbW4xMDMwMF9mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbXQvbXQtcHJvdG9zLmggKG10X2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tdC9tdC5jIChtdF9wYXNzX2J5X3JlZmVyZW5jZSwgbXRfZnVuY3Rpb25fdmFsdWUsCgltdF9wYXNzX2luX3N0YWNrLCBUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS1wcm90b3MuaCAoZnVuY3Rpb25fYXJnX3BhZGRpbmcsIGZ1bmN0aW9uX3ZhbHVlLAoJcGFfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEuYyAocGFfcGFzc19ieV9yZWZlcmVuY2UsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sIFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMsCglmdW5jdGlvbl9hcmdfcGFkZGluZywgZnVuY3Rpb25fdmFsdWUsIHBhX3JldHVybl9pbl9tZW1vcnkpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5jIChwZHAxMV9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfZnVuY3Rpb25fdmFsdWUsCglmdW5jdGlvbl9hcmdfcGFkZGluZyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfcmV0dXJuX2luX21lbW9yeSwKCXJzNjAwMF9kYXJ3aW42NF9yZWNvcmRfYXJnX3JlY3Vyc2UsIHJzNjAwMF9kYXJ3aW42NF9yZWNvcmRfYXJnLAoJcnM2MDAwX3Bhc3NfYnlfcmVmZXJlbmNlLCByczYwMDBfbXVzdF9wYXNzX2luX3N0YWNrLAoJVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUywgVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOLAoJZnVuY3Rpb25fYXJnX3BhZGRpbmcsIGFsdGl2ZWNfZXhwYW5kX2RzdF9idWlsdGluLAoJYWx0aXZlY19leHBhbmRfYnVpbHRpbiwgcnM2MDAwX2V4cGFuZF9idWlsdGluLCBzcGVfaW5pdF9idWlsdGlucywKCWFsdGl2ZWNfaW5pdF9idWlsdGlucywgcnM2MDAwX2NvbW1vbl9pbml0X2J1aWx0aW5zLAoJcnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkqIHMzOTAvczM5MC1wcm90b3MuaCAoczM5MF9mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZnVuY3Rpb25fYXJnX3NpemUsCglzMzkwX3Bhc3NfYnlfcmVmZXJlbmNlLCBzMzkwX3JldHVybl9pbl9tZW1vcnksCglzMzkwX2Z1bmN0aW9uX3ZhbHVlLCBUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTLAoJVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zY29yZS9zY29yZS1wcm90b3MuaCAoc2NvcmVfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL3Njb3JlL3Njb3JlLmMgKHNjb3JlX2FyZ19wYXJ0aWFsX2J5dGVzLAoJVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUywgVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOLAoJVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUywgc2NvcmVfcmV0dXJuX2luX21lbW9yeSwKCXNjb3JlX3Bhc3NfYnlfcmVmZXJlbmNlLCBzY29yZV9hZGRfb2Zmc2V0LCBzY29yZV9mdW5jdGlvbl92YWx1ZSk6CglMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLXByb3Rvcy5oIChzaF9hdHRyX3JlbmVzYXNfcCwKCXNoX3Byb21vdGVfcHJvdG90eXBlcyk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfcmV0dXJuX2luX21lbW9yeSwgc2hfcGFzc19ieV9yZWZlcmVuY2UsCglzaF9jYWxsZWVfY29waWVzLCBzaF9wcm9tb3RlX3Byb3RvdHlwZXMsIHNoY29tcGFjdF9ieXJlZiwKCXNoX2F0dHJfcmVuZXNhc19wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAoZnVuY3Rpb25fdmFsdWUsCglmdW5jdGlvbl9hcmdfcGFkZGluZyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfcHJvbW90ZV9wcm90b3R5cGVzLAoJc3BhcmNfcmV0dXJuX2luX21lbW9yeSwgc3BhcmNfcGFzc19ieV9yZWZlcmVuY2UsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTLCBUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sCglmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzIsIGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMSwKCWZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWUsIGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWUsCglmdW5jdGlvbl9hcmdfcGFkZGluZywgZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwdS9zcHUtcHJvdG9zLmggKHNwdV9mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3B1L3NwdS5jIChzcHVfcGFzc19ieV9yZWZlcmVuY2UsIHNwdV9yZXR1cm5faW5fbWVtb3J5LAoJc3B1X2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi1wcm90b3MuaCAoeHN0b3JteTE2X2Z1bmN0aW9uX3ZhbHVlKToKCUxpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X3JldHVybl9pbl9tZW1vcnksCgl4c3Rvcm15MTZfZnVuY3Rpb25fdmFsdWUsIFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sIFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy92ODUwL3Y4NTAuYyAodjg1MF9yZXR1cm5faW5fbWVtb3J5LAoJdjg1MF9wYXNzX2J5X3JlZmVyZW5jZSwgVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKiBjb25maWcvdmF4L3ZheC5jIChUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9yZXR1cm5faW5fbXNiLAoJeHRlbnNhX3JldHVybl9pbl9tZW1vcnksIFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sIFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOgoJTGlrZXdpc2UuCgkqIGV4cGxvdy5jIChwcm9tb3RlX21vZGUsIGhhcmRfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogZXhwci5oIChoYXJkX2Z1bmN0aW9uX3ZhbHVlLCBwcm9tb3RlX21vZGUpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBMaWtld2lzZS4KCSogaG9va3MuYyAoaG9va19ib29sX2NvbnN0X3RyZWVfdHJ1ZSk6IE5ldy4KCSogaG9va3MuaCAoaG9va19ib29sX2NvbnN0X3RyZWVfdHJ1ZSk6IE5ldy4KCSogc2Rib3V0LmMgKFNFVF9LTk9XTl9UWVBFX1RBRywgcGxhaW5fdHlwZV8xKTogQ29uc3RpZnkuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUywKCVRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTiwgVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUywKCVRBUkdFVF9SRVRVUk5fSU5fTVNCKTogTGlrZXdpc2UuCgkqIHRhcmdldC5oIChwcm9tb3RlX2Z1bmN0aW9uX2FyZ3MsIHByb21vdGVfZnVuY3Rpb25fcmV0dXJuLAoJcHJvbW90ZV9wcm90b3R5cGVzLCByZXR1cm5faW5fbWVtb3J5LCByZXR1cm5faW5fbXNiLAoJcGFzc19ieV9yZWZlcmVuY2UsIG11c3RfcGFzc19pbl9zdGFjaywgY2FsbGVlX2NvcGllcywKCWZ1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X3JldHVybl9pbl9tZW1vcnksCglob29rX3Bhc3NfYnlfcmVmZXJlbmNlX211c3RfcGFzc19pbl9zdGFjaywKCWhvb2tfY2FsbGVlX2NvcGllc19uYW1lZCwKCWhvb2tfYm9vbF9DVU1VTEFUSVZFX0FSR1NfbW9kZV90cmVlX2Jvb2xfZmFsc2UsCglob29rX2Jvb2xfQ1VNVUxBVElWRV9BUkdTX21vZGVfdHJlZV9ib29sX3RydWUsCglkZWZhdWx0X2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuIAoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9yZXR1cm5faW5fbWVtb3J5LAoJaG9va19wYXNzX2J5X3JlZmVyZW5jZV9tdXN0X3Bhc3NfaW5fc3RhY2ssCglob29rX2NhbGxlZV9jb3BpZXNfbmFtZWQsCglob29rX2Jvb2xfQ1VNVUxBVElWRV9BUkdTX21vZGVfdHJlZV9ib29sX2ZhbHNlLAoJaG9va19ib29sX0NVTVVMQVRJVkVfQVJHU19tb2RlX3RyZWVfYm9vbF90cnVlLAoJZGVmYXVsdF9mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChjb25zdF9lcXVpdl9jbGFzc19sYWJlbF90KTogTmV3LgoJKGVxdWl2X2NsYXNzX2xhYmVsX2hhc2gsIGVxdWl2X2NsYXNzX2xhYmVsX2VxKTogQ29uc3RpZnkuCgkqIHRyZWUtdmVjdG9yaXplci5jIChiYl9pbl9sb29wX3ApOiBMaWtld2lzZS4KCSogdHJlZS5jIChuZWVkc190b19saXZlX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX3R5cGUsIG5lZWRzX3RvX2xpdmVfaW5fbWVtb3J5LAoJYWdncmVnYXRlX3ZhbHVlX3AsIG11c3RfcGFzc19pbl9zdGFja192YXJfc2l6ZSwKCW11c3RfcGFzc19pbl9zdGFja192YXJfc2l6ZV9vcl9wYWQpOiBMaWtld2lzZS4KCSogdm1zZGJnb3V0LmMgKHdyaXRlX2RlYnVnX2FkZHIsIHdyaXRlX2RlYnVnX2RlbHRhNCwKCXdyaXRlX2RlYnVnX3N0cmluZywgQVNNX09VVFBVVF9ERUJVR19TVFJJTkcsIHdyaXRlX3J0bmJlZywKCWxvb2t1cF9maWxlbmFtZSk6IExpa2V3aXNlLgoKMjAwNy0wOC0yMyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMTczOTAKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9mcF9jb21wYXJlKTogRXhwYW5kIGZwIGNvbXBhcmlzb24gdG8KCWZha2UgZmNvbWkgaTM4NyBpbnN0cnVjdGlvbiBmb3IgIVRBUkdFVF9DTU9WRS4KCShpeDg2X2V4cGFuZF9icmFuY2gpOiBFeHBhbmQgbmF0dXJhbCBzZXF1ZW5jZSB3aXRoIG9uZSBqdW1wIGZvcgoJYWxsIHRhcmdldHMsIG5vdCBvbmx5IFRBUkdFVF9DTU9WRS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKmNtcGZwXzBfY2MpOiBOZXcgZGVmaW5lX2luc25fYW5kX3NwbGl0CglwYXR0ZXJuIHRvIGltcGxlbWVudCBmYWtlIGZjb21pIHNlcXVlbmNlLiAgU3BsaXQgaW5zdHJ1Y3Rpb24gYWZ0ZXIKCXJlbG9hZCB0byBjb3JyZWN0IGNvbXBhcmUgc2VxdWVuY2VzLgoJKCpjbXBmcF94Zl9jYyk6IERpdHRvLgoJKCpjbXBmcF88bW9kZT5fY2MpOiBEaXR0by4KCSgqY21wZnBfdV9jYyk6IERpdHRvLgoJKCpjbXBmcF88bW9kZT5fY2MpOiBEaXR0by4KCjIwMDctMDgtMjMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogQW5ub3RhdGUKCUdJTVBMRV9NT0RJRllfU1RNVHMgd2l0aCB2b2xhdGlsZSBvcHMgd2l0aCAie3Z9Ii4KCjIwMDctMDgtMjMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IFdyYXAgYXJndW1lbnQgaW4KCXNhdmVfZXhwciBkaXJlY3RseSBpbnN0ZWFkIG9mIHJlLWJ1aWxkaW5nIHRoZSBjYWxsLgoJKGV4cGFuZF9idWlsdGluX21hdGhmbl8yKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzMpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9pbnRlcmNsYXNzX21hdGhmbik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuKTogU2V0IGFyZy4KCShleHBhbmRfYnVpbHRpbl9pbnRfcm91bmRpbmdmbl8yKTogTGlrZXdpc2UuCgoyMDA3LTA4LTIzICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29uZmlnL2kzODYvc3NlLm1kICgqc3NlX2FuZDxtb2RlPjMsICpzc2VfaW9yPG1vZGU+MywKCSpzc2VfbmFuZDxtb2RlPjMsICpzc2VfeG9yPG1vZGU+Myk6IE5ldy4KCjIwMDctMDgtMjMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IEFkZCAnOycgY29kZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlICc7JyBjb2RlLiAgT3V0cHV0CglzZW1pY29sb24gZm9yIFRBUkdFVF9NQUNITy4KCSogY29uZmlnL2kzODYvc3luYy5tZCAoKnN5bmNfY29tcGFyZV9hbmRfc3dhcDxtb2RlPik6IFVzZSAnJTsnIHRvCgllbWl0IHNlbWljb2xvbiBhZnRlciAnbG9jaycgcHJlZml4LgoJKHN5bmNfZG91YmxlX2NvbXBhcmVfYW5kX3N3YXA8bW9kZT4pOiBEaXR0by4KCSgqc3luY19kb3VibGVfY29tcGFyZV9hbmRfc3dhcGRpX3BpYyk6IERpdHRvLgoJKCpzeW5jX2NvbXBhcmVfYW5kX3N3YXBfY2M8bW9kZT4pOiBEaXR0by4KCShzeW5jX2RvdWJsZV9jb21wYXJlX2FuZF9zd2FwX2NjPG1vZGU+KTogRGl0dG8uCgkoKnN5bmNfZG91YmxlX2NvbXBhcmVfYW5kX3N3YXBfY2NkaV9waWMpOiBEaXR0by4KCShzeW5jX29sZF9hZGQ8bW9kZT4pOiBEaXR0by4KCShzeW5jX2FkZDxtb2RlPik6IERpdHRvLgoJKHN5bmNfc3ViPG1vZGU+KTogRGl0dG8uCgkoc3luY19pb3I8bW9kZT4pOiBEaXR0by4KCShzeW5jX2FuZDxtb2RlPik6IERpdHRvLgoJKHN5bmNfeG9yPG1vZGU+KTogRGl0dG8uCgoyMDA3LTA4LTIyICBDaGFvLXlpbmcgRnUgIDxmdUBtaXBzLmNvbT4KCgkqIHJ0bC5jIChydHhfY29kZV9zaXplKTogQ2hlY2sgQ09OU1RfRklYRUQgdG8gY2FsY3VhbHRlIGNvcnJlY3Qgc2l6ZXMKCWluIERFRl9SVExfRVhQUi4KCShjb3B5X3J0eCk6IEhhbmRsZSBDT05TVF9GSVhFRC4KCShydHhfZXF1YWxfcCk6IExpa2V3aXNlLgoJKiBydGwuaCAoZml4ZWRfdmFsdWUuaCk6IE5ldyBpbmNsdWRlLgoJKHJ0eF9kZWYpOiBBZGQgYSBuZXcgZmllbGQgb2YgZml4ZWRfdmFsdWUgdG8gdS4KCShYQ05NUEZWKTogRGVmaW5lIGZvciBhY2Nlc3NpbmcgZml4ZWRfdmFsdWUuCgkoQ09OU1RfRklYRURfVkFMVUUsIENPTlNUX0ZJWEVEX1ZBTFVFX0hJR0gsIENPTlNUX0ZJWEVEX1ZBTFVFX0xPVyk6CglEZWZpbmUuCgkqIHJ0bC5kZWYgKENPTlNUX0ZJWEVEKTogTmV3IGNvbnN0YW50LgoJKFNTX01VTFQsIFVTX01VTFQsIFNTX0RJViwgVVNfRElWLCBGUkFDVF9DT05WRVJULAoJVU5TSUdORURfRlJBQ1RfQ09OVkVSVCwgU0FUX0ZSQUNULCBVTlNJR05FRF9TQVRfRlJBQ1QsIFVTX05FRywKCVVTX0FTSElGVCk6IE5ldyBjb2Rlcy4KCSogZG9jL3J0bC50ZXhpIChFeHByZXNzaW9ucyk6IERvY3VtZW50IGNvbnN0X2ZpeGVkLCB1c19uZWcsIHNzX211bHQsCgl1c19tdWx0LCBzc19kaXYsIHVzX2RpdiwgdXNfYXNoaWZ0LCBmcmFjdF9jb252ZXJ0LCBzYXRfZnJhY3QsCgl1bnNpZ25lZF9mcmFjdF9jb252ZXJ0LCB1bnNpZ25lZF9zYXRfZnJhY3QpOiBEb2N1bWVudCB0aGVtLgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfaW50ZWdlcik6IEV4dGVuZCB0byBzdXBwb3J0IGZpeGVkLXBvaW50IGNvbnN0YW50cwoJYnkgdXNpbmcgZGlmZmVyZW50IG1hY2hpbmUgY2xhc3Nlcy4KCShkZWNvZGVfYWRkcl9jb25zdCk6IEhhbmRsZSBGSVhFRF9DU1QuCgkoY29uc3RfaGFzaF8xKTogTGlrZXdpc2UuCgkoY29tcGFyZV9jb25zdGFudCk6IExpa2V3aXNlLgoJKGNvcHlfY29uc3RhbnQpOiBMaWtld2lzZS4KCShjb25zdF9ydHhfaGFzaF8xKTogSGFuZGxlIENPTlNUX0ZJWEVELgoJKG91dHB1dF9jb25zdGFudF9wb29sXzIpOiBIYW5kbGUgTU9ERV9GUkFDVCwgTU9ERV9VRlJBQ1QsIE1PREVfQUNDVU0sCglNT0RFX1VBQ0NVTSwgTU9ERV9WRUNUT1JfRlJBQ1QsIE1PREVfVkVDVE9SX1VGUkFDVCwgTU9ERV9WRUNUT1JfQUNDVU0sCglNT0RFX1ZFQ1RPUl9VQUNDVU0uCgkoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IEhhbmRsZSBGSVhFRF9DU1QuCgkob3V0cHV0X2NvbnN0YW50KTogU3VwcG9ydCBGSVhFRF9QT0lOVF9UWVBFLgoJKiBnZW5nZW5ydGwuYyAoZXhjbHVkZWRfcnR4KTogQ2hlY2sgQ09OU1RfRklYRUQgdG8gZXhjbHVkZS4KCSogY3NlLmMgKGhhc2hfcnR4KTogU3VwcG9ydCBDT05TVF9GSVhFRC4KCShleHBfZXF1aXZfcCk6IExpa2V3aXNlLgoJKGNhbm5vbl9yZWcpOiBMaWtld2lzZS4KCShmb2xkX3J0eCk6IExpa2V3aXNlLgoJKGVxdWl2X2NvbnN0YW50KTogTGlrZXdpc2UuCgkoY3NlX3Byb2Nlc3Nfbm90ZXNfMSk6IExpa2V3aXNlLgoJKGNvdW50X3JlZ191c2FnZSk6IExpa2V3aXNlLgoJKiBjc2VsaWIuYyAoZW50cnlfYW5kX3J0eF9lcXVhbF9wKTogQ2hlY2sgQ09OU1RfRklYRUQuCgkocnR4X2VxdWFsX2Zvcl9jc2VsaWJfcCk6IEhhbmRsZSBDT05TVF9GSVhFRC4KCSh3cmFwX2NvbnN0YW50KTogQ2hlY2sgQ09OU1RfRklYRUQuCgkoY3NlbGliX2hhc2hfcnR4KTogU3VwcG9ydCBDT05TVF9GSVhFRC4KCShjc2VsaWJfc3Vic3RfdG9fdmFsdWVzKTogTGlrZXdpc2UuCgkqIGRmLXNjYW4uYyAoZGZfdXNlc19yZWNvcmQpOiBMaWtld2lzZS4KCSogZ2NzZS5jICh3YW50X3RvX2djc2VfcCk6IExpa2V3aXNlLgoJKG9wcnNfdW5jaGFuZ2VkX3ApOiBMaWtld2lzZS4KCShvcHJzX25vdF9zZXRfcCk6IExpa2V3aXNlLgoJKGNvbXB1dGVfdHJhbnNwKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9tZW50aW9uZWRfcmVnc19oZWxwZXIpOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jIChnZW5fZXhwKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKGVxdWl2X2luaXRfdmFyaWVzX3ApOiBMaWtld2lzZS4KCShjb250YWluc19yZXBsYWNlX3JlZ3MpOiBMaWtld2lzZS4KCShtZW1yZWZfcmVmZXJlbmNlZF9wKTogTGlrZXdpc2UuCgkqIGxvb3AtaW52YXJpYW50LmMgKGNoZWNrX21heWJlX2ludmFyaWFudCk6IExpa2V3aXNlLgoJKGhhc2hfaW52YXJpYW50X2V4cHJfMSk6IExpa2V3aXNlLgoJKGludmFyaWFudF9leHByX2VxdWFsX3ApOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC1nY3NlLmMgKG9wcnNfdW5jaGFuZ2VkX3ApOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAocmVnX3NjYW5fbWFya19yZWZzKTogTGlrZXdpc2UuCgkqIHJlZ3JlbmFtZS5jIChzY2FuX3J0eCk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChtYXJrX3JlZmVyZW5jZWRfcmVzb3VyY2VzKTogTGlrZXdpc2UuCgkobWFya19zZXRfcmVzb3VyY2VzKTogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYyAocnR4X3Vuc3RhYmxlX3ApOiBMaWtld2lzZS4KCShydHhfdmFyaWVzX3ApOiBMaWtld2lzZS4KCShjb3VudF9vY2N1cnJlbmNlcyk6IExpa2V3aXNlLgoJKHJlZ19tZW50aW9uZWRfcCk6IExpa2V3aXNlLgoJKG1vZGlmaWVkX2JldHdlZW5fcCk6IExpa2V3aXNlLgoJKG1vZGlmaWVkX2luX3ApOiBMaWtld2lzZS4KCSh2b2xhdGlsZV9pbnNuX3ApOiBMaWtld2lzZS4KCSh2b2xhdGlsZV9yZWZzX3ApOiBMaWtld2lzZS4KCShzaWRlX2VmZmVjdHNfcCk6IExpa2V3aXNlLgoJKG1heV90cmFwX3BfMSk6IExpa2V3aXNlLgoJKGluZXF1YWxpdHlfY29tcGFyaXNvbnNfcCk6IExpa2V3aXNlLgoJKGNvbXB1dGVkX2p1bXBfcF8xKTogTGlrZXdpc2UuCgkoY29tbXV0YXRpdmVfb3BlcmFuZF9wcmVjZWRlbmNlKTogTGlrZXdpc2UuCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV8yKTogTGlrZXdpc2UuCgkqIHNjaGVkLXZpcy5jIChwcmludF92YWx1ZSk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAob3BlcmFuZHNfbWF0Y2hfcCk6IExpa2V3aXNlLgoJKHN1YnN0X3JlZ19lcXVpdnMpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVnc18xKTogTGlrZXdpc2UuCgkoZWxpbWluYXRpb25fZWZmZWN0cyk6IExpa2V3aXNlLgoJKHNjYW5fcGFyYWRveGljYWxfc3VicmVncyk6IExpa2V3aXNlLgoJKiBhbGlhcy5jIChydHhfZXF1YWxfZm9yX21lbXJlZl9wKTogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluIChSVExfQkFTRV9IKTogQWRkIGZpeGVkLXZhbHVlLmguCgkqIGVtaXQtcnRsLmMgKGNvbnN0X2ZpeGVkX2h0YWIpOiBOZXcgaGFzaCB0YWJsZS4KCShjb25zdF9maXhlZF9odGFiX2hhc2gsIGNvbnN0X2ZpeGVkX2h0YWJfZXEsIGxvb2t1cF9jb25zdF9maXhlZCk6CglEZWNsYXJlLgoJKGNvbnN0X2ZpeGVkX2h0YWJfaGFzaCwgY29uc3RfZml4ZWRfaHRhYl9lcSwgbG9va3VwX2NvbnN0X2ZpeGVkLAoJY29uc3RfZml4ZWRfZnJvbV9maXhlZF92YWx1ZSk6IE5ldyBmdW5jdGlvbnMuCgkodmVyaWZ5X3J0eF9zaGFyaW5nKTogSGFuZGxlIENPTlNUX0ZJWEVELgoJKGNvcHlfcnR4X2lmX3NoYXJlZF8xKTogTGlrZXdpc2UuCgkocmVzZXRfdXNlZF9mbGFncyk6IExpa2V3aXNlLgoJKHNldF91c2VkX2ZsYWdzKTogTGlrZXdpc2UuCgkoY29weV9pbnNuXzEpOiBMaWtld2lzZS4KCShpbml0X2VtaXRfb25jZSk6IENyZWF0ZSBjb25zdF9maXhlZF9odGFiLgoJU3RvcmUgZml4ZWQtcG9pbnQgc2NhbGFyIGFuZCB2ZWN0b3IgemVybyBhbmQgb25lIHRvIGNvbnN0X3RpbnlfcnR4LgoKMjAwNy0wOC0yMiAgWmRlbmVrIER2b3JhayAgPG9va0B1Y3cuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI5NDkKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChzY2V2X3Byb2JhYmx5X3dyYXBzX3ApOiBUZXN0IG5vd3JhcF90eXBlX3AKCWJlZm9yZSBmYWlsaW5nIGZvciBpdnMgd2l0aCBub24tY29uc3RhbnQgc3RlcC4KCjIwMDctMDgtMjIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZG9jL21kLnRleGkgKEl0ZXJhdG9ycyk6IFJlbmFtZWQgZnJvbSBNYWNyb3MuICBBbGwgY29udGVudHMKCWNoYW5nZWQgdG8gcmVmbGVjdCByZW5hbWUgb2YgcmVzcGVjdGl2ZWx5IGRlZmluZV9jb2RlX21hY3JvIGFuZAoJZGVmaW5lX21vZGVfbWFjcm8gdG8gZGVmaW5lX2NvZGVfaXRlcmF0b3IgYW5kIGRlZmluZV9tb2RlX2l0ZXJhdG9yLgoJKE1vZGUgSXRlcmF0b3JzLCBDb2RlIEl0ZXJhdG9ycyk6IFNpbWlsYXIuCgkqIHJlYWQtcnRsLmMgKHN0cnVjdCBpdGVyYXRvcl9ncm91cCwgc3RydWN0IGl0ZXJhdG9yX3RyYXZlcnNlX2RhdGEpCgkodXNlc19tb2RlX2l0ZXJhdG9yX3AsIGFwcGx5X21vZGVfaXRlcmF0b3IsIHVzZXNfY29kZV9pdGVyYXRvcl9wKQoJKGFwcGx5X2l0ZXJhdG9yX3RvX3N0cmluZywgdXNlc19pdGVyYXRvcl9wLCBhcHBseV9pdGVyYXRvcl90cmF2ZXJzZSkKCShpbml0aWFsaXplX2l0ZXJhdG9ycywgZmluZF9pdGVyYXRvciwgY2hlY2tfY29kZV9pdGVyYXRvcikKCShtYXBfYXR0cl9zdHJpbmcsIGFwcGx5X21vZGVfbWFwcywgYXBwbHlfaXRlcmF0b3JfdG9fcnR4LCBhZGRfbWFwcGluZykKCShyZWFkX21hcHBpbmcsIHJlYWRfcnR4XzEpOiBTaW1pbGFyLgoJKiBjb25maWcvYWxwaGEvc3luYy5tZCwgY29uZmlnL2FscGhhL2FscGhhLm1kLCBjb25maWcvZnJ2L2Zydi5tZCwKCWNvbmZpZy9zMzkwL3MzOTAubWQsIGNvbmZpZy9tMzJjL2Jsa21vdi5tZCwgY29uZmlnL20zMmMvbTMyYy5tZCwKCWNvbmZpZy9zcHUvc3B1Lm1kLCBjb25maWcvc3BhcmMvc3BhcmMubWQsIGNvbmZpZy9zcGFyYy9zeW5jLm1kLAoJY29uZmlnL2kzODYvaTM4Ni5tZCwgY29uZmlnL2kzODYvbW14Lm1kLCBjb25maWcvaTM4Ni9zc2UubWQsCgljb25maWcvaTM4Ni9zeW5jLm1kLCBjb25maWcvY3J4L2NyeC5tZCwgY29uZmlnL3h0ZW5zYS94dGVuc2EubWQsCgljb25maWcvY3Jpcy9jcmlzLmMsIGNvbmZpZy9jcmlzL2NyaXMubWQsIGNvbmZpZy9pYTY0L3N5bmMubWQsCgljb25maWcvaWE2NC9kaXYubWQsIGNvbmZpZy9pYTY0L3ZlY3QubWQsIGNvbmZpZy9pYTY0L2lhNjQubWQsCgljb25maWcvbTY4ay9tNjhrLm1kLCBjb25maWcvcnM2MDAwL3NwZS5tZCwgY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kLAoJY29uZmlnL3JzNjAwMC9zeW5jLm1kLCBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCwKCWNvbmZpZy9hcm0vdmVjLWNvbW1vbi5tZCwgY29uZmlnL2FybS9uZW9uLm1kLCBjb25maWcvYXJtL2l3bW14dC5tZCwKCWNvbmZpZy9hcm0vYXJtLm1kLCBjb25maWcvbWlwcy9taXBzLWRzcC5tZCwgY29uZmlnL21pcHMvbWlwcy5tZCwKCWNvbmZpZy92YXgvdmF4Lm1kLCBjb25maWcvYmZpbi9iZmluLm1kOiBTaW1pbGFyLgoKMjAwNy0wOC0yMiAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFRlc3RpbmcpOiBNZW50aW9uIHRlc3Rpbmcgb24gYSBzaW11bGF0b3IuCgoyMDA3LTA4LTIyICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGNvbmZpZy9kZnAtYml0LmMgKERGUF9UT19ERlApOiBDaGVjayBmb3Igb3ZlcmZsb3cuCgoJKiBkb2MvbGliZ2NjLnRleGkgKERlY2ltYWwgZmxvYXQgbGlicmFyeSByb3V0aW5lcyk6IEZpeCBmb3JtYXR0aW5nCglhbmQgcmVhcnJhbmdlIGZsb2F0aW5nIHBvaW50IGNvbnZlcnNpb24gZnVuY3Rpb25zIGludG8gZGlmZmVyZW50CgljYXRlZ29yaWVzLgoKMjAwNy0wOC0yMiAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0LnNjaGVkOiBkZmFfcHJlX2FkdmFuY2VfY3ljbGUsCglkZmFfcG9zdF9hZHZhbmNlX2N5Y2xlKTogTmV3IHNjaGVkdWxlciBob29rcy4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfU0NIRURfREZBX1BSRV9BRFZBTkNFX0NZQ0xFLAoJVEFSR0VUX1NDSEVEX0RGQV9QT1NUX0FEVkFOQ0VfQ1lDTEUpOiBOZXcgbWFjcm9zIHRvIGluaXRpYWxpemUKCW5ldyBob29rcy4KCShUQVJHRVRfU0NIRUQpOiBVc2UgdGhlbS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9TQ0hFRF9ERkFfUFJFX0FEVkFOQ0VfQ1lDTEUsCglUQVJHRVRfU0NIRURfREZBX1BPU1RfQURWQU5DRV9DWUNMRSk6IERvY3VtZW50IG5ldyBob29rcy4KCSogaGFpZmEtc2NoZWQuYyAoYWR2YW5jZV9vbmVfY3ljbGUpOiBJbnZva2UgbmV3IGhvb2tzLgoKCSogZ2VuYXV0b21hdGEuYyAoaW5zbl9oYXNfZGZhX3Jlc2VydmF0aW9uX3ApOiBOZXcgREZBIGludGVyZmFjZQoJZnVuY3Rpb24gdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuCgkoSU5TTl9IQVNfREZBX1JFU0VSVkFUSU9OX1BfRlVOQ19OQU1FKTogTmV3IG1hY3JvLgoJKG91dHB1dF9pbnNuX2hhc19kZmFfcmVzZXJ2YXRpb25fcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gdG8gb3V0cHV0CglpbnNuX2hhc19kZmFfcmVzZXJ2YXRpb25fcCAoKS4KCSh3cml0ZV9hdXRvbWF0YSk6IFVzZSBpdC4KCSogZ2VuYXR0ci5jIChtYWluKTogT3V0cHV0IGRlY2xhcmF0aW9uIGZvcgoJaW5zbl9oYXNfZGZhX3Jlc2VydmF0aW9uX3AgKCkuCgoyMDA3LTA4LTIyICBDaHJpc3RpYW4gQnJ1ZWwgIDxjaHJpc3RpYW4uYnJ1ZWxAc3QuY29tPgkKCSAgICBSaWNoYXJkIEd1ZW50aGVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCQoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KTogT3B0aW1pemUgQS1BIGlmIC1mZmluaXRlLW1hdGgtb25seS4KCSogc2ltcGxpZnlfcnR4IChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpOiBMaWtld2lzZS4KCQkKMjAwNy0wOC0yMiAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzI1NTcKCSogZGYtcHJvYmxlbXMuYyAoZGZfbm90ZV9iYl9jb21wdXRlKTogVXNlIG13cy0+c3RhcnRfcmVnbm8gaW5zdGVhZAoJb2YgUkVHTk8gKG13cy0+bXdfcmVnKS4KCjIwMDctMDgtMjIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMzMDA3CgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuKTogUmVwbGFjZSBjYWxsCglhcmd1bWVudCB3cmFwcGVkIHdpdGggU0FWRV9FWFBSIGRpcmVjdGx5LgoJKGV4cGFuZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuXzIpOiBMaWtld2lzZS4KCjIwMDctMDgtMjIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtaW5saW5lLmMgKGlubGluYWJsZV9mdW5jdGlvbl9wKTogUmVzdG9yZSBkaXNyZWdhcmRpbmcKCWlubGluZSBsaW1pdHMgZm9yIEdOVSBleHRlcm4gaW5saW5lIGZ1bmN0aW9ucy4KCjIwMDctMDgtMjIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMyNTYzCgkqIHRyZWUuYyAoaG9zdF9pbnRlZ2VycCk6IFRyZWF0IHNpemV0eXBlIGFzIHNpZ25lZCBhcyBpdCBpcwoJc2lnbi1leHRlbmRlZC4KCjIwMDctMDgtMjEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMxMzQKCSogdHJlZS12cnAuYyAoYWRqdXN0X3JhbmdlX3dpdGhfc2Nldik6IENhbGwKCXNldF92YWx1ZV9yYW5nZV90b192YWx1ZS4KCjIwMDctMDgtMjEgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHZhbHVlLXByb2YuaCAoZ2ltcGxlX3JlbW92ZV9oaXN0b2dyYW1fdmFsdWUpOiBSZW1vdmUgZHVwbGljYXRlCglwcm90b3R5cGUuCgkKMjAwNy0wOC0yMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogdHJlZS1mbG93LWlubGluZS5oIChuZXh0X2ltbV91c2Vfc3RtdCk6IFJlbW92ZSB1bmVjZXNzYXJ5Cgl3aGl0ZXNwYWNlLgoKMjAwNy0wOC0yMSAgTmF0aGFuIEZyb3lkICA8ZnJveWRuakBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZXhwYW5kX2Jsb2NrX2NsZWFyKTogQWRkIFRBUkdFVF9TUEUKCWNhc2VzIHRvIHNldCBlaWdodCBieXRlcyBhdCBhIHRpbWUuCgkoZXhwYW5kX2Jsb2NrX21vdmUpOiBMaWtld2lzZS4KCQoyMDA3LTA4LTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy8zMjYxMAoJKiBkd2FyZjJvdXQuYyAoZ2VuX2RlY2xfZGllKTogRG9uJ3QgY2FsbAoJZ2VuX3RhZ2dlZF90eXBlX2luc3RhbnRpYXRpb25fZGllIGlmIGRlY2wgZG9lc24ndCBoYXZlIHRhZ2dlZCB0eXBlLgoKMjAwNy0wOC0yMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoJICAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IEFkZCAtLXdpdGgtcGtndmVyc2lvbiBhbmQgLS13aXRoLWJ1Z3VybC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCB0aGVtLgoJKiB2ZXJzaW9uLmMgKHZlcnNpb25fc3RyaW5nKTogUmVtb3ZlIFZFUlNVRkZJWC4KCShWRVJTVUZGSVgpOiBSZW1vdmUuCgkocGtndmVyc2lvbl9zdHJpbmcpOiBOZXcuCgkoYnVnX3JlcG9ydF91cmwpOiBEbyBub3QgaGFyZC1jb2RlIGluaXRpYWxpemVyLgoJKiB2ZXJzaW9uLmggKHBrZ3ZlcnNpb25fc3RyaW5nKTogRGVjbGFyZS4KCSogTWFrZWZpbGUuaW4gKFBLR1ZFUlNJT05fcywgQlVHVVJMX3MsIFBLR1ZFUlNJT04sIEJVR1VSTF9URVhJKToKCURlZmluZS4KCSh2ZXJzaW9uLm8pOiBEZWZpbmUgUEtHVkVSU0lPTiBhbmQgQlVHVVJMLgoJKGdjYy12ZXJzLnRleGkpOiBEZWZpbmUgVkVSU0lPTl9QQUNLQUdFIGFuZCBCVUdVUkwuCgkoJS5wb2QpOiBEZWZpbmUgQlVHVVJMLgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kLCBtYWluKTogVXNlIHBrZ3ZlcnNpb25fc3RyaW5nLgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlLCBwcmludF92ZXJzaW9uKTogTGlrZXdpc2UuCgkqIHByb3RvaXplLmMgKG1haW4pOiBMaWtld2lzZS4KCSogZ2Nvdi5jIChwcmludF92ZXJzaW9uKTogTGlrZXdpc2UuICBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgkqIGdjb3YtZHVtcC5jIChwcmludF92ZXJzaW9uKTogTGlrZXdpc2UuICBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgkqIG1pcHMtdGR1bXAuYyAobWFpbik6IExpa2V3aXNlLiAgVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoJKiBtaXBzLXRmaWxlLmMgKG1haW4pOiBMaWtld2lzZS4gIFVwZGF0ZSBjb3B5cmlnaHQgZGF0ZS4KCSogZG9jL2luY2x1ZGUvZ2NjLWNvbW1vbi50ZXhpOiBJbmNsdWRlIFZFUlNJT05fUEFDS0FHRSBhcyBzdWJ0aXRsZS4KCSogZG9jL2J1Z3JlcG9ydC50ZXhpOiBVc2UgQlVHVVJMIGZvciBidWctcmVwb3J0aW5nIGluc3RydWN0aW9uczsKCXNob3J0ZW4gZGVzY3JpcHRpb24uCgkqIGRvYy9nY2MudGV4aTogSW5jbHVkZSBWRVJTSU9OX1BBQ0tBR0UgaW4gdmVyc2lvbiBkZXNjcmlwdGlvbi4KCSogZG9jL2djY2ludC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBVc2UgQlVHVVJMIGZvciBidWctcmVwb3J0aW5nIGluc3RydWN0aW9ucy4KCVVwZGF0ZSBjb3B5cmlnaHQgZGF0ZS4KCjIwMDctMDgtMjEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2NsZWFyKTogVXNlIEZMQUdTX1JFRy4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6IERpdHRvLgoJKGl4ODZfZXhwYW5kX2JyYW5jaCk6IFVzZSBGTEFHU19SRUcgYW5kIEZQU1JfUkVHLgoJKGl4ODZfZXhwYW5kX2NhcnJ5X2ZsYWdfY29tcGFyZSk6IFVwZGF0ZSBjb21tZW50LgoKMjAwNy0wOC0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjkxMgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfdW5hcnkpOiBPcHRpbWl6ZSBCSVRfTk9UX0VYUFIgb2YgVkVDVE9SX0NTVC4KCShmb2xkX2JpbmFyeSk6IEhhbmRsZSB2ZWN0b3JzIGluIFggfCB+WCBhbmQgWCBeIH5YIG9wdGltaXphdGlvbnMuCgoyMDA3LTA4LTIxICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KTogUmV2ZXJ0IHJlbW92aW5nIG9mIGluZGV4ICtwIFBUUiBmb2xkaW5nLgoKMjAwNy0wOC0yMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzMxMjIKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IFJlbW92ZSBpbmRleCArcCBQVFIgZm9sZGluZy4KCUZpeCB0eXBlcyBvZiBQT0lOVEVSX1BMVVNfRVhQUiBnZW5lcmF0ZWQgYnkgZm9sZGluZyBvZgoJKFBUUiArcCBCKSArcCBBLgoKMjAwNy0wOC0yMCAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgoJKiBjLWNvbW1vbi5oIChlbnVtIHJpZCk6IEFkZCBuZXcgZW51bWVyYXRpb24gdmFsdWVzIG9mIFJJRF9TQVQsCglSSURfRlJBQ1QsIGFuZCBSSURfQUNDVU0uICBSSURfU0FUIG5lZWRzIHRvIGJlIGluc2VydGVkIGJlZm9yZQoJUklEX09ORVdBWSwgc28gdGhhdCBpdCBjYW4gYmUgY2hlY2tlZCBpbiBkZWNsc3BlY3NfYWRkX3R5cGUuCgkoY19jb21tb25fZml4ZWRfcG9pbnRfdHlwZV9mb3Jfc2l6ZSk6IERlY2xhcmUuCgkqIGMtcGFyc2VyLmMgKHJlc3dvcmRzKTogQWRkIF9GcmFjdCwgX0FjY3VtLCBhbmQgX1NhdC4KCShjX3Rva2VuX3N0YXJ0c190eXBlbmFtZSk6IEhhbmRsZSBSSURfRlJBQ1QsIFJJRF9BQ0NVTSwgYW5kIFJJRF9TQVQuCgkoY190b2tlbl9zdGFydHNfZGVjbHNwZWNzKTogTGlrZXdpc2UuCgkoY19wYXJzZXJfZGVjbHNwZWNzKTogTGlrZXdpc2UuCgkoY19wYXJzZXJfYXR0cmlidXRlcyk6IExpa2V3aXNlLgoJKiBjLXRyZWUuaCAoZW51bSBjX3R5cGVzcGVjX2tleXdvcmQpOiBBZGQgY3RzX2ZyYWN0IGFuZCBjdHNfYWNjdW0uCgkoY19kZWNsc3BlY3MpOiBBZGQgc2F0dXJhdGluZ19wLgoJKiBjLWRlY2wuYyAoYnVpbGRfbnVsbF9kZWNsc3BlY3MpOiBJbml0aWFsaXplIHNhdHVyYXRpbmdfcC4KCShkZWNsc3BlY3NfYWRkX3R5cGUpOiBBdm9pZCB1c2luZyBjb21wbGV4IHdpdGggX0ZyYWN0LCBfQWNjdW0sIG9yCglfU2F0LiAgSGFuZGxlIFJJRF9TQVQuCglBdm9pZCB1c2luZyB2b2lkLCBib29sLCBjaGFyLCBpbnQsIGZsb2F0LCBkb3VibGUsIF9EZWNpbWFsMzIsCglfRGVjaW1hbDY0LCBfRGVjaW1hbDEyOCwgYW5kIGNvbXBsZXggd2l0aCBfU2F0LgoJSGFuZGxlIFJJRF9GUkFDVCBhbmQgUklEX0FDQ1VNLgoJTWFrZSBzdXJlIF9TYXQgaXMgdXNlZCB3aXRoIF9GcmFjdCBvciBfQWNjdW0uCgkoZmluaXNoX2RlY2xzcGVjcyk6IEhhbmRsZSBjdHNfZnJhY3QgYW5kIGN0c19hY2N1bS4KCSogYy1jb21tb24uYyAoZml4ZWQtdmFsdWUuaCk6IE5ldyBpbmNsdWRlLgoJKGNvbnN0YW50X2V4cHJlc3Npb25fd2FybmluZyk6IEhhbmRsZSBGSVhFRF9DU1QuCgkob3ZlcmZsb3dfd2FybmluZyk6IExpa2V3aXNlLgoJKHdhcm5pbmdzX2Zvcl9jb252ZXJ0X2FuZF9jaGVjayk6IExpa2V3aXNlLgoJKGNfY29tbW9uX2ZpeGVkX3BvaW50X3R5cGVfZm9yX3NpemUpOiBOZXcuCgkoY19jb21tb25fdHlwZV9mb3JfbW9kZSk6IEhhbmRsZSBmaXhlZC1wb2ludCBtb2RlcyB0bwoJcmV0dXJuIHZhcmlvdXMgc2F0dXJhdGluZy9ub24tc2F0dXJhdGluZywgc2lnbmVkL3Vuc2lnbmVkIHR5cGVzLgoJKGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogU3VwcG9ydCBmaXhlZC1wb2ludCB0eXBlcy4KCShzaG9ydGVuX2NvbXBhcmUpOiBDaGVjayBmaXhlZC1wb2ludCB6ZXJvLgoJSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkoY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogSGFuZGxlIEZJWEVEX0NTVC4KCUhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFJlY29yZCBidWlsdGluIHR5cGVzIGZvciBmaXhlZC1wb2ludAoJdHlwZXMuCgkoaGFuZGxlX21vZGVfYXR0cmlidXRlKTogSGFuZGxlIGZpeGVkLXBvaW50IG1vZGVzLiAgTmVlZCB0byBjaGVjawoJaWYgdGhlIHNpZ25uZXNzIG9mIGJhc2UgdHlwZSBhbmQgZml4ZWQtcG9pbnQgbW9kZXMgYXJlIGNvbnNpc3RlbnQuCgkoaGFuZGxlX3ZlY3Rvcl9zaXplX2F0dHJpYnV0ZSk6IEhhbmRsZSBmaXhlZC1wb2ludCBtb2Rlcy4KCShzYW1lX3NjYWxhcl90eXBlX2lnbm9yaW5nX3NpZ25lZG5lc3MpOiBIYW5kbGUgRklYRURfUE9JTlRfVFlQRS4KCSh3YXJuX2Zvcl9kaXZfYnlfemVybyk6IENoZWNrIGZpeGVkLXBvaW50IHplcm8uCgkqIGMtdHlwZWNrLmMgKGNfY29tbW9uX3R5cGUpOiBDaGVjayBGSVhFRF9QT0lOVF9UWVBFLiAgQnVpbGQKCWEgY29tbW9uIGZpeGVkLXBvaW50IHR5cGUgYmFzZWQgb24gZmJpdCwgaWJpdCwgc2lnbiwgYW5kIHNhdHVyYXRpb24uCgkoYnVpbGRfdW5hcnlfb3ApOiBBbGxvdyBGSVhFRF9QT0lOVF9UWVBFIGZvciBDT05WRVJUX0VYUFIsCglORUdBVEVfRVhQUiwgVFJVVEhfTk9UX0VYUFIsIFBSRUlOQ1JFTUVOVF9FWFBSLCBQT1NUSU5DUkVNRU5UX0VYUFIsCglQUkVERUNSRU1FTlRfRVhQUiwgYW5kIFBPU1RERUNSRU1FTlRfRVhQUi4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogU3VwcG9ydCBGSVhFRF9QT0lOVF9UWVBFLgoJKGRpZ2VzdF9pbml0KTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkoYnVpbGRfYmluYXJ5X29wKTogU3VwcG9ydCBGSVhFRF9QT0lOVF9UWVBFIGluICpfRElWX0VYUFIsCglUUlVUSF9BTkRJRl9FWFBSLCBUUlVUSF9PUklGX0VYUFIsIFRSVVRIX0FORF9FWFBSLCBUUlVUSF9PUl9FWFBSLAoJVFJVVEhfWE9SX0VYUFIsIFJTSElGVF9FWFBSLCBMU0hJRlRfRVhQUiwgRVFfRVhQUiwgTkVfRVhQUiwgTEVfRVhQUiwKCUdFX0VYUFIsIExUX0VYUFIsIEdUX0VYUFIuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0ZJWEVEX1BPSU5UX1NVUFBPUlRFRF9QKTogTmV3LgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBUQVJHRVRfRklYRURfUE9JTlRfU1VQUE9SVEVEX1AuCgkqIHRhcmdldC5oIChnY2NfdGFyZ2V0KTogQWRkIGZpeGVkX3BvaW50X3N1cHBvcnRlZF9wLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCk6IEhhbmRsZSBNT0RFX0ZSQUNULAoJTU9ERV9VRlJBQ1QsIE1PREVfQUNDVU0sIGFuZCBNT0RFX1VBQ0NVTS4KCShkZWZhdWx0X2ZpeGVkX3BvaW50X3N1cHBvcnRlZF9wKTogRGVmaW5lLgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9maXhlZF9wb2ludF9zdXBwb3J0ZWRfcCk6IERlY2xhcmUuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfRklYRURfUE9JTlRfU1VQUE9SVEVEX1ApOiBBZGQuCgkqIGRvYy9pbnN0YWxsLnRleGkgKENvbmZpZ3VyYXRpb24pOiBBZGQgLS1lbmFibGUtZml4ZWQtcG9pbnQuCgkqIGNvbmZpZ3VyZS5hYyAoLS1lbmFibGUtZml4ZWQtcG9pbnQpOiBOZXcgdG8gZW5hYmxlIGZpeGVkLXBvaW50Cglhcml0aG1ldGljIGV4dGVuc2lvbiB0byBDLiAgRm9yIG1pcHMgdGFyZ2V0cywgd2UgZW5hYmxlIGl0IGJ5IGRlZmF1bHQuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNy0wOC0yMCAgUGF3ZWwgU2lrb3JhICA8cGx1dG9AcGxkLWxpbnV4Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoLVdub24tdmlydHVhbC1kdG9yKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoyMDA3LTA4LTIwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBkd2FyZjJvdXQuYyAodGV4dF9zZWN0aW9uX3VzZWQpOiBNb3ZlIGRlY2xhcmF0aW9uIG91dHNpZGUgaWZkZWYKCURXQVJGMl9ERUJVR0dJTkdfSU5GTy4KCShjb2xkX3RleHRfc2VjdGlvbl91c2VkKTogU2FtZS4KCShjb2xkX3RleHRfc2VjdGlvbik6IFNhbWUuCgoyMDA3LTA4LTIwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogVXNlIHRoZSB0eXBlIG9mCgl0aGUgbWVtYmVyIGZvciB0aGUgaW5pdGlhbGl6YXRpb24uCgoyMDA3LTA4LTIwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBjLW9iamMtY29tbW9uLmMgKGNfZGlzcmVnYXJkX2lubGluZV9saW1pdHMpOiBSZW1vdmUuCgkqIGMtb2JqYy1jb21tb24uaCAoY19kaXNyZWdhcmRfaW5saW5lX2xpbWl0cyk6IExpa2V3aXNlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9wcm9jZXNzX25ld19mdW5jdGlvbnMpOiBDYWxsCglkaXNyZWdhcmRfaW5saW5lX2xpbWl0c19wLgoJKGNncmFwaF9wcmVzZXJ2ZV9mdW5jdGlvbl9ib2R5X3ApOiBMaWtld2lzZS4KCSogaXBhLWlubGluZS5jIChjb21wdXRlX2lubGluZV9wYXJhbWV0ZXJzKTogTGlrZXdpc2UuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3RyZWVfaW5saW5pbmdfZGlzcmVnYXJkX2lubGluZV9saW1pdHMpOgoJUmVtb3ZlLgoJKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19ESVNSRUdBUkRfSU5MSU5FX0xJTUlUUyk6IFJlbW92ZS4KCShMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfSU5JVElBTElaRVIpOiBSZW1vdmUgaW5pdGlhbGl6ZXIgZm9yCglkaXNyZWdhcmRfaW5saW5lX2xpbWl0cyBsYW5naG9vay4KCSogbGFuZ2hvb2tzLmMgKGxoZF90cmVlX2lubGluaW5nX2Rpc3JlZ2FyZF9pbmxpbmVfbGltaXRzKToKCVJlbW92ZS4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX3RyZWVfaW5saW5pbmcpOiBSZW1vdmUKCWRpc3JlZ2FyZF9pbmxpbmVfbGltaXRzIGxhbmdob29rLgoJKiB0cmVlLWlubGluZS5jIChkaXNyZWdhcmRfaW5saW5lX2xpbWl0c19wKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLWlubGluZS5oIChkaXNyZWdhcmRfaW5saW5lX2xpbWl0c19wKTogRGVjbGFyZS4KCjIwMDctMDgtMjAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3RyZWVfaW5saW5pbmdfYXV0b192YXJfaW5fZm5fcCk6IFJlbW92ZS4KCShMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfQVVUT19WQVJfSU5fRk5fUCk6IExpa2V3aXNlLgoJKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19JTklUSUFMSVpFUik6IFJlbW92ZSBpbml0aWFsaXplciBmb3IKCWF1dG9fdmFyX2luX2ZuX3AgbGFuZ2hvb2suCgkqIGxhbmdob29rcy5jIChsaGRfdHJlZV9pbmxpbmluZ19hdXRvX3Zhcl9pbl9mbl9wKTogUmVuYW1lIGFuZAoJbW92ZSAuLi4KCSogdHJlZS5jIChhdXRvX3Zhcl9pbl9mbl9wKTogLi4uIGhlcmUuCgkoZmluZF92YXJfZnJvbV9mbik6IENhbGwgYXV0b192YXJfaW5fZm5fcCBkaXJlY3RseS4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX3RyZWVfaW5saW5pbmcpOiBSZW1vdmUKCWF1dG9fdmFyX2luX2ZuX3AgbGFuZ2hvb2suCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX2RlY2xzKTogQ2FsbCBhdXRvX3Zhcl9pbl9mbl9wIGRpcmVjdGx5LgoJKGNvcHlfYm9keV9yKTogTGlrZXdpc2UuCgkoc2VsZl9pbmxpbmluZ19hZGRyX2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS5oIChhdXRvX3Zhcl9pbl9mbl9wKTogRGVjbGFyZS4KCjIwMDctMDgtMjAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUuYyAoV0FMS19TVUJUUkVFKTogQ2FsbCB3YWxrX3RyZWVfMS4KCSh3YWxrX3R5cGVfZmllbGRzKTogVGFrZSBsaCBwYXJhbWV0ZXIuCgkod2Fsa190cmVlKTogUmVuYW1lIHRvIC4uLgoJKHdhbGtfdHJlZV8xKTogLi4uIHRoaXMuICBEbyBub3QgY2FsbCB0aGUgd2Fsa19zdWJ0cmVlcwoJbGFuZ2hvb2sgYnV0IHRoZSBub3cgcGFzc2VkIGNhbGxiYWNrLiAgUGFzcyBsaCBvbiByZWN1cnNpb24uCgkod2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlcyk6IFJlbmFtZSB0byAuLi4KCSh3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzXzEpOiAuLi4gdGhpcy4gIFRha2UgbGggcGFyYW1ldGVyCglhbmQgY2FsbCB3YWxrX3RyZWVfMS4KCSogdHJlZS5oICh3YWxrX3RyZWVfbGgpOiBOZXcgdHlwZWRlZi4KCSh3YWxrX3RyZWVfMSk6IERlY2xhcmUuCgkod2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlc18xKTogTGlrZXdpc2UuCgkod2Fsa190cmVlKTogTmV3IGRlZmluZSB0byB3YWxrX3RyZWVfMSB3aXRoIE5VTEwgbGggcGFyYW1ldGVyLgoJKHdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMpOiBOZXcgZGVmaW5lIHRvCgl3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzXzEgd2l0aCBOVUxMIGxoIHBhcmFtZXRlci4KCSogbGFuZ2hvb2tzLmMgKGxoZF90cmVlX2lubGluaW5nX3dhbGtfc3VidHJlZXMpOiBSZW1vdmUuCgkqIGxhbmdob29rcy5oIChsYW5nX2hvb2tzX2Zvcl90cmVlX2lubGluaW5nKTogUmVtb3ZlIHdhbGtfc3VidHJlZXMKCWxhbmdob29rLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF90cmVlX2lubGluaW5nX3dhbGtfc3VidHJlZXMpOiBSZW1vdmUuCgkoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX1dBTEtfU1VCVFJFRVMpOiBMaWtld2lzZS4KCShMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfSU5JVElBTElaRVIpOiBSZW1vdmUgd2Fsa19zdWJ0cmVlcwoJaW5pdGlhbGl6ZXIuCgoyMDA3LTA4LTIwICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwNTY0CgkqIHRyZWUtaW5saW5lLmMgKG9wdGltaXplX2lubGluZV9jYWxscyk6IE1vdmUgdGhlIGNncmFwaCBjaGVja2luZwoJY29kZSBpbiBmcm9udCBvZiB0aGUgY29tcGFjdGluZyBvZiBiYXNpYyBibG9ja3MuCglNb3ZlIHRoZSBmb2xkaW5nIG9mIHN0YXRlbWVudHMgaW5iZXR3ZWVuIHRoZSBjZ3JhcGggY2hlY2tpbmcKCWFuZCBjb21wYWN0aW5nIG9mIGJhc2ljIGJsb2Nrcy4KCjIwMDctMDgtMTkgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoJICAgU2VyZ2UgQmVseXNoZXYgIDxiZWx5c2hldkBkZXBuaS5zaW5wLm1zdS5ydT4KCglQUiB0YXJnZXQvMzI1MjIKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKHZhX2xpc3Rfc2tpcF9hZGRpdGlvbnMpOiBDaGVjayBmb3IKCVBPSU5URVJfUExVU19FWFBSIGluIGFkZGl0aW9uIHRvIFBMVVNfRVhQUi4KCShhbHBoYV9zdGRhcmdfb3B0aW1pemVfaG9vayk6IExvb2sgZm9yIFBPSU5URVJfUExVU19FWFBSIGluc3RlYWQgb2YKCVBMVVNfRVhQUiB3aGVuIGNoZWNraW5nIGFwLl9fYmFzZS4KCShhbHBoYV92YV9zdGFydCk6IENyZWF0ZSBQT0lOVEVSX1BMVVNfRVhQUiBpbnN0ZWFkIG9mIFBMVVNfRVhQUgoJd2hlbiBkb2luZyBhZGRpdGlvbiBvbiBwb2ludGVyIHR5cGVzLiAgVXNlIHNpemVfaW50IGluc3RlYWQgb2YKCWJ1aWxkX2ludF9jc3QuCgkoYWxwaGFfZ2ltcGxpZnlfdmFfYXJnXzEpOiBMaWtld2lzZSwgYnV0IHVzZSBzaXpldHlwZSBpbnN0ZWFkIG9mCglwdHJfdHlwZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCgoyMDA3LTA4LTE5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzMzMTE1CgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChDQzFfU1BFQyk6IEFkZCAlKGNjMV9jcHUpIGluIGZyb250LgoKMjAwNy0wOC0xOSAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjk0MAoJKiBjZmdleHBhbmQuYyAgKGV4cGFuZF9vbmVfcmVnaXN0ZXJfdmFyKTogTWFyayBwb2ludGVyCglERUNMX0FSVElGSUNJQUwgYXMgUkVHX1BPSU5URVIgYWxzby4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IExpa2V3aXNlLgoKMjAwNy0wOC0xOSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJRml4IFBSIDMyNzcyCglGaXggUFIgMzI3MTYKCUZpeCBQUiAzMjMyOAoJRml4IFBSIDMyMzAzCgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IHN0bXRfYW5uX2QpOiBSZW1vdmUgbWFrZXNfY2xvYmJlcmluZ19jYWxsLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChpbml0X3RyYW5zaXRpdmVfY2xvYmJlcl93b3JrbGlzdCk6IEFkZAoJb25fd29ya2xpc3QgYXJndW1lbnQgYW5kIGF2b2lkIGFkZGluZyB0aGluZ3MgdG8gd29ya2xpc3QgbXVsdGlwbGUKCXRpbWVzLgoJKGFkZF90b193b3JrbGlzdCk6IERpdHRvLgoJKG1hcmtfYWxpYXNlc19jYWxsX2Nsb2JiZXJlZCk6IE1hcmsgZW50aXJlIHN0cnVjdHVyZSBjbG9iYmVyZWQgaWYKCXNpbmdsZSBTRlQgaXMgY2xvYmJlcmVkLgoJKHNldF9pbml0aWFsX3Byb3BlcnRpZXMpOiBEaXR0by4KCShjb21wdXRlX2NhbGxfY2xvYmJlcmVkKTogVXBkYXRlIGZvciBjaGFuZ2VzIHRvIGZ1bmN0aW9uCglhcmd1bWVudHMuCgkoY3JlYXRlX292ZXJsYXBfdmFyaWFibGVzX2Zvcik6IEFsd2F5cyBjcmVhdGUgU0ZUIGZvciBvZmZzZXQgMC4KCShjcmVhdGVfc3RydWN0dXJlX3ZhcnMpOiBIYW5kbGUgUEhJJ3MsIHNpbmNlIHdlIGFyZSBpbiBTU0EgZm9ybSBhdAoJdGhpcyBwb2ludC4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZ2V0X3JlZl90YWcpOiBEb24ndCByZXR1cm4gc3VidmFycy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYWNjZXNzX2Nhbl90b3VjaF92YXJpYWJsZSk6IERvbid0IGhhbmRsZQoJVEFSR0VUX01FTV9SRUYuCgkoYWRkX3ZhcnNfZm9yX29mZnNldCk6IEZpZ3VyZSBvdXQgYWxpYXNlcyBmcm9tIGFjY2VzcyArIHBvaW50cy10by4KCShhZGRfdmlydHVhbF9vcGVyYW5kKTogVXNlIGFkZF92YXJzLWZvcl9vZmZzZXQuCgkoZ2V0X3Rtcl9vcGVyYW5kcyk6IFVwZGF0ZSBmb3IgTk1UIGNoYW5nZXMsIHJld3JpdGUgdG8gYmUgY29ycmVjdC4KCShhZGRfY2FsbF9jbG9iYmVyX29wcyk6IFJlbW92ZSBtYWtlc19jbG9iYmVyaW5nX2NhbGwgc2V0LgoJKGdldF9leHByX29wZXJhbmRzKTogQWx3YXlzIHBhc3MgdGhyb3VnaCB0aGUgSU5ESVJFQ1RfUkVGCglyZWZlcmVuY2UuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHN0cnVjdCBjb25zdHJhaW50X2dyYXBoKTogUmVtb3ZlCgl2YXJpYWJsZXMgbWVtYmVyLgoJQWRkIHBlLCBwZV9yZXAsIHBvaW50ZXJfbGFiZWwsIGxvY19sYWJlbCwgcG9pbnRlZF9ieSwgcG9pbnRzX3RvLAoJYWRkcmVzc190YWtlbiwgcHRfdXNlZCwgbnVtYmVyX2luY29taW5nLgoJKEZJUlNUX0FERFJfTk9ERSk6IFJlbW92ZWQuCgkobWVyZ2VfZ3JhcGhfbm9kZXMpOiBSZW1vdmUgYnJva2VuIGNvZGUgZm9yIHRoZSBtb21lbnQuCgkoaW5pdF9ncmFwaCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9wcmVkX2dyYXBoKTogUmVtb3ZlIGNvZGUgdG8gaW5pdF9ncmFwaC4KCUFkZCBsb2NhdGlvbiBlcXVpdmFsZW5jZSBzdXBwb3J0LgoJKHN0cnVjdCBzY2NfaW5mbyk6IFJlbmFtZSByb290cyB0byBkZWxldGVkLgoJKHNjY192aXNpdCk6IERpdHRvLgoJKGluaXRfc2NjX2luZm8pOiBEaXR0bwoJKGluaXRfdG9wb19pbmZvKTogVXNlIGdyYXBoLT5zaXplLgoJKGNvbXB1dGVfdG9wb19vcmRlcik6IERpdHRvLgoJKGRvX2RhX2NvbnN0cmFpbnQpOiBSZW1vdmVkLgoJKGRvX3NkX2NvbnN0cmFpbnQpOiBSZW1vdmUgY2FsbHMgdG8gZmluZCgpLgoJc2V0X3VuaW9uX3dpdGhfaW5jcmVtZW50IHNob3VsZCBhbHdheXMgZ2V0IDAgYXMgbGFzdCBhcmcgaGVyZS4KCShkb19jb21wbGV4X2NvbnN0cmFpbnQpOiBSZXBsYWNlIGRvX2RhX2NvbnN0cmFpbnQgd2l0aCBhc3NlcnQuCglTdG9wIGNhbGxpbmcgZmluZC4KCShzdHJ1Y3QgZXF1aXZfY2xhc3NfbGFiZWwpOiBOZXcuCgkocG9pbnRlcl9lcXVpdl9jbGFzc190YWJsZSk6IERpdHRvLgoJKGxvY2F0aW9uX2VxdWl2X2NsYXNzX3RhYmxlKTogRGl0dG8uCgkoZXF1aXZfY2xhc3NfbGFiZWxfaGFzaCk6IERpdHRvLgoJKGVxdWl2X2NsYXNzX2xhYmVsX2VxKTogRGl0dG8KCShlcXVpdl9jbGFzc19sb29rdXApOiBEaXR0by4KCShlcXVpdl9jbGFzc19sYWRkKTogRGl0dG8uCgkocG9pbnRlcl9lcXVpdl9jbGFzcyk6IERpdHRvLgoJKGxvY2F0aW9uX2VxdWl2X2NsYXNzKTogRGl0dG8uCgkoY29uZGVuc2VfdmlzaXQpOiBSZW5hbWUgYW5kIHJld3JpdGUgZnJvbSBsYWJlbF92aXNpdCB0byBkbyBvbmx5CglTQ0MgcmVsYXRlZCBzdHVmZiBmb3IgSFUuCgkobGFiZWxfdmlzaXQpOiBEbyBIVSB3b3JrIGZvciBIVS4KCShwZXJmb3JtX3Zhcl9zdWJzdGl0dXRpb24pOiBVcGRhdGUgdG8gZG8gSFUgYW5kIGxvY2F0aW9uCgllcXVpdmFsZW5jZS4KCShmcmVlX3Zhcl9zdWJzdGl0dXRpb25faW5mbyk6IFVwZGF0ZSB0byBmcmVlIEhVIGFuZCBsb2NhdGlvbgoJZXF1aXZhbGVuY2Ugc3RydWN0dXJlcy4gICovCgkoZmluZF9lcXVpdmFsZW50X25vZGUpOiBVcGRhdGUgZm9yIHBvaW50ZXIgYnV0IG5vdCBsb2NhdGlvbgoJZXF1aXZhbGVuY2UuCgkodW5pdGVfcG9pbnRlcl9lcXVpdmFsZW5jZXMpOiBOZXcgZnVuY3Rpb24uCgkobW92ZV9jb21wbGV4X2NvbnN0cmFpbnRzKTogUmV3cml0ZSB0byBvbmx5IGRvIG1vdmluZy4KCShyZXdyaXRlX2NvbnN0cmFpbnRzKTogU3BsaXQgb3V0IG9mIG1vdmVfY29tcGxleF9jb25zdHJhaW50cy4KCShzb2x2ZV9ncmFwaCk6IFVzZSBncmFwaC0+c2l6ZS4KCShwcm9jZXNzX2NvbnN0cmFpbnRfMSk6IEFkZCBmcm9tX2NhbGwgYXJndW1lbnQsIHVzZSBpdC4KCVNwbGl0ICphID0gJmIgaW50byB0d28gY29uc3RyYWludHMuCgkocHJvY2Vzc19jb25zdHJhaW50KTogVXNlIG5ldyBwcm9jZXNzX2NvbnN0cmFpbnRfMS4KCShnZXRfY29uc3RyYWludF9mb3JfY29tcG9uZW50X3JlZik6IEhhbmRsZSBiaXRtYXhzaXplID09IC0xIGNhc2UuCgkoZ2V0X2NvbnN0cmFpbnRfZm9yKTogSGFuZGxlIG5vbi1wb2ludGVyIGludGVnZXJzIHByb3Blcmx5LgoJUmVtb3ZlIGNvZGUgdGhhdCB1c2VkIHRvIGhhbmRsZSBzdHJ1Y3R1cmVzLgoJKGhhbmRsZV9wdHJfYXJpdGgpOiBGaXggYSBmZXcgYnVncyBpbiBwb2ludGVyIGFyaXRobWV0aWMgaGFuZGxpbmcKCXdpdGggdW5rbm93biBhZGRlbmRzLgoJKGhhbmRsZV9yaHNfY2FsbCk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX2Z1bmNfYWxpYXNlcyk6IFVzZSBoYW5kbGVfcmhzX2NhbGwuCgkoc2V0X3VpZHNfaW5fcHRzZXQpOiBBZGQgYW4gYXNzZXJ0LgoJKHNldF91c2VkX3NtdHMpOiBGaXggYnVnIGluIG5vdCBjb25zaWRlcmluZyB1bmlmaWVkIHZhcnMuCgkoY29tcHV0ZV90YmFhX3BydW5pbmcpOiBTdG9wIGluaXRpbmcgdXNlbGVzcyBpdGVyYXRpb25fb2JzdGFjay4KCShjb21wdXRlX3BvaW50c190b19zZXRzKTogVXBkYXRlIGZvciBvdGhlciBmdW5jdGlvbiBjaGFuZ2VzLgoJKGRlbGV0ZV9wb2ludHNfdG9fc2V0cyk6IERpdHRvLgoJKGlwYV9wdGFfZXhlY3V0ZSk6IERpdHRvLgoJKHBhc3NfaXBhX3B0YSk6IFdlIG5lZWQgdG8gdXBkYXRlIFNTQSBhZnRlciBpcGFfcHRhLgoJCjIwMDctMDgtMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IFJlcGxhY2UgInJpbSIgYW5kICJtcmkiIGNvbnN0cmFpbnRzIGJ5ICJnIi4KCjIwMDctMDgtMTkgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyb3V0LmMgKHRleHRfc2VjdGlvbl91c2VkLCBjb2xkX3RleHRfc2VjdGlvbl91c2VkLAoJY29sZF90ZXh0X3NlY3Rpb24sIGR3YXJmMm91dF9ub3RlX3NlY3Rpb25fdXNlZCk6IE5ldy4KCShkd2FyZjJvdXRfaW5pdCk6IEluaXRpYWxpemUgY29sZF90ZXh0X3NlY3Rpb24uCgkoZHdhcmYyb3V0X3N3aXRjaF90ZXh0X3NlY3Rpb24sIGR3YXJmMm91dF9iZWdpbl9mdW5jdGlvbik6IENhbGwKCWR3YXJmMm91dF9ub3RlX3NlY3Rpb25fdXNlZC4KCShzaXplX29mX2FyYW5nZXMpOiBPbmx5IGNvdW50IGVudHJ5IGZvciB0ZXh0IHNlY3Rpb24gaWYgaXQgd2FzCgl1c2VkLiAgQ291bnQgZW50cnkgZm9yIGNvbGQgdGV4dCBzZWN0aW9uIGlmIGl0IHdhcyB1c2VkLgoJKG91dHB1dF9hcmFuZ2VzKTogT25seSBvdXRwdXQgZW50cmllcyBmb3IgdGV4dCBzZWN0aW9uIGFuZCBjb2xkCgl0ZXh0IHNlY3Rpb24gaWYgdGhleSB3ZXJlIHVzZWQuCgoyMDA3LTA4LTE5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkZWJ1Z19nZW5lcmljX2V4cHIpOiBBZGQgYSBjb21tZW50IGFib3V0Cgl0aGUgZnVuY3Rpb24uCgkoZGVidWdfZ2VuZXJpY19zdG10KTogTGlrZXdpc2UuCgkoZGVidWdfdHJlZV9jaGFpbik6IExpa2V3aXNlLgoKMjAwNy0wOC0xOSAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHRyZWUtZGF0YS1yZWZzLmMgKHNwbGl0X2NvbnN0YW50X29mZnNldCk6IEV4cG9zZS4KCSogdHJlZS1kYXRhLXJlZnMuaCAoc3BsaXRfY29uc3RhbnRfb2Zmc2V0KTogQWRkIGRlY2xhcmF0aW9uLgoKCSogdHJlZS12ZWN0b3JpemVyLmggKGRyX2FsaWdubWVudF9zdXBwb3J0KTogUmVuYW1lZAoJZHJfdW5hbGlnbmVkX3NvZnR3YXJlX3BpcGVsaW5lIHRvIGRyX2V4cGxpY2l0X3JlYWxpZ25fb3B0aW1pemVkLgoJQWRkZWQgYSBuZXcgdmFsdWUgZHJfZXhwbGljaXRfcmVhbGlnbi4KCShfc3RtdF92ZWNfaW5mbyk6IEFkZGVkIG5ldyBmaWVsZHM6IGRyX2Jhc2VfYWRkcmVzcywgZHJfaW5pdCwKCWRyX29mZnNldCwgZHJfc3RlcCwgYW5kIGRyX2FsaWduZWRfdG8sIGFsb25nIHdpdGggbmV3IGFjY2VzcwoJZnVuY3Rpb25zIGZvciB0aGVzZSBmaWVsZHM6IFNUTVRfVklORk9fRFJfQkFTRV9BRERSRVNTLAoJU1RNVF9WSU5GT19EUl9JTklULCBTVE1UX1ZJTkZPX0RSX09GRlNFVCwgU1RNVF9WSU5GT19EUl9TVEVQLCBhbmQKCVNUTVRfVklORk9fRFJfQUxJR05FRF9UTy4KCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X3N1cHBvcnRhYmxlX2RyX2FsaWdubWVudCk6IEFkZAoJZG9jdW1lbnRhdGlvbi4KCUluIGNhc2Ugb2Ygb3V0ZXItbG9vcCB2ZWN0b3JpemF0aW9uIHdpdGggbm9uLWZpeGVkIG1pc2FsaWdubWVudCAtIHVzZQoJdGhlIGRyX2V4cGxpY2l0X3JlYWxpZ24gc2NoZW1lIGluc3RlYWQgb2YgdGhlIG9wdGltaXplZCByZWFsaWdubWVudAoJc2NoZW1lLgoJKG5ld19zdG10X3ZlY19pbmZvKTogSW5pdGlhbGl6ZSBuZXcgZmllbGRzLgoKCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9jb21wdXRlX2RhdGFfcmVmX2FsaWdubWVudCk6IEhhbmRsZSB0aGUKCSduZXN0ZWRfaW5fdmVjdF9sb29wJyBjYXNlLiBDaGFuZ2UgdmVyYm9zaXR5IGxldmVsLgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZl9hY2Nlc3MpOiBIYW5kbGUgdGhlICduZXN0ZWRfaW5fdmVjdF9sb29wJyBjYXNlLgoJRG9uJ3QgZmFpbCBvbiB6ZXJvIHN0ZXAgaW4gdGhlIG91dGVyLWxvb3AgZm9yIGxvYWRzLgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZnMpOiBDYWxsIHNwbGl0X2NvbnN0YW50X29mZnNldCB0byBjYWxjdWxhdGUKCWJhc2UsIG9mZnNldCBhbmQgaW5pdCByZWxhdGl2ZSB0byB0aGUgb3V0ZXItbG9vcC4KCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9jcmVhdGVfZGF0YV9yZWZfcHRyKTogUmVwbGFjZSB0aGUgdW51c2VkCglCU0kgZnVuY3Rpb24gYXJndW1lbnQgd2l0aCBhIG5ldyBmdW5jdGlvbiBhcmd1bWVudCAtIGF0X2xvb3AuCglTaW1wbGlmeSB0aGUgY29uZGl0aW9uIHRoYXQgZGV0ZXJtaW5lcyBTVEVQLiBUYWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50CglJTlZfUC4gU3VwcG9ydCBvdXRlci1sb29wIHZlY3Rvcml6YXRpb24gKGhhbmRsZSB0aGUKCW5lc3RlZF9pbl92ZWN0X2xvb3AgY2FzZSksIGluY2x1ZGluZyB6ZXJvIHN0ZXAgaW4gdGhlIG91dGVyLWxvb3AuIENhbGwKCXZlY3RfY3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZiB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQuCgkodmVjdF9jcmVhdGVfYWRkcl9iYXNlX2Zvcl92ZWN0b3JfcmVmKTogVGFrZXMgYWRkaXRpb25hbCBhcmd1bWVudCBMT09QLgoJVXBkYXRlZCBmdW5jdGlvbiBkb2N1bWVudGF0aW9uLiBIYW5kbGUgdGhlICduZXN0ZWRfaW5fdmVjdF9sb29wJyBjYXNlLgoJRml4ZWQgYW5kIHNpbXBsaWZpZWQgY2FsY3VsYXRpb24gb2Ygc3RlcC4KCSh2ZWN0b3JpemFibGVfc3RvcmUpOiBDYWxsIHZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0ciB3aXRoIGxvb3AgaW5zdGVhZAoJb2YgYnNpLCBhbmQgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LiBDYWxsIGJ1bXBfdmVjdG9yX3B0ciB3aXRoCglhZGRpdGlvbmFsIGFyZ3VtZW50LiBGaXggdHlwb3MuIEhhbmRsZSB0aGUgJ25lc3RlZF9pbl92ZWN0X2xvb3AnIGNhc2UuCgkodmVjdF9zZXR1cF9yZWFsaWdubWVudCk6IFRha2VzIGFkZGl0aW9uYWwgYXJndW1lbnRzIElOSVRfQUREUiBhbmQKCURSX0FMSUdOTUVOVF9TVVBQT1JULiBSZXR1cm5zIGFub3RoZXIgdmFsdWUgQVRfTE9PUC4gSGFuZGxlIHRoZSBjYXNlCgl3aGVuIHRoZSByZWFsaWdubWVudCBzZXR1cCBuZWVkcyB0byB0YWtlIHBsYWNlIGluc2lkZSB0aGUgbG9vcC4KCVN1cHBvcnQgdGhlIGRyX2V4cGxpY2l0X3JlYWxpZ24gc2NoZW1lLiBBbGxvdyBnZW5lcmF0aW5nIHRoZSBvcHRpbWl6ZWQKCXJlYWxpZ25tZW50IHNjaGVtZSBmb3Igb3V0ZXItbG9vcCB2ZWN0b3JpemF0aW9uLiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKHZlY3Rvcml6YWJsZV9sb2FkKTogU3VwcG9ydCB0aGUgZHJfZXhwbGljaXRfcmVhbGlnbiBzY2hlbWUuIEhhbmRsZQoJdGhlICduZXN0ZWRfaW5fdmVjdF9sb29wJyBjYXNlLCBpbmNsdWRpbmcgbG9hZHMgdGhhdCBhcmUgaW52YXJpYW50IGluCgl0aGUgb3V0ZXItbG9vcCBhbmQgdGhlIHJlYWxpZ25tZW50IHNjaGVtZXMuIEhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZQoJcmVhbGlnbm1lbnQgc2V0dXAgbmVlZHMgdG8gdGFrZSBwbGFjZSBpbnNpZGUgdGhlIGxvb3AuIENhbGwKCXZlY3Rfc2V0dXBfcmVhbGlnbm1lbnQgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIENhbGwKCXZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0ciB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQgYW5kIHdpdGggbG9vcCBpbnN0ZWFkCglvZiBic2kuIEZpeCA4MC1jb2x1bW4gb3ZlcmZsb3cuIEZpeCB0eXBvcy4gUmVuYW1lIFBISV9TVE1UIHRvIFBISS4KCSh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogQ2FsbAoJdmVjdF9jcmVhdGVfYWRkcl9iYXNlX2Zvcl92ZWN0b3JfcmVmIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudHMuCgkodmVjdF9jcmVhdGVfY29uZF9mb3JfYWxpZ25fY2hlY2tzKTogTGlrZXdpc2UuCgkoYnVtcF92ZWN0b3JfcHRyKTogVXBkYXRlZCB0byBzdXBwb3J0IHRoZSBuZXcgZHJfZXhwbGljaXRfcmVhbGlnbgoJc2NoZW1lOiB0YWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50IGJ1bXA7IGFyZ3VtZW50IHB0cl9pbmNyIGlzIG5vdwoJb3B0aW9uYWw7IHVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCSh2ZWN0X2luaXRfdmVjdG9yKTogVGFrZXMgYWRkaXRpb25hbCBhcmd1bWVudCAoYnNpKS4gVXNlIGl0LCBpZgoJYXZhaWxhYmxlLCB0byBpbnNlcnQgdGhlIHZlY3RvciBpbml0aWFsaXphdGlvbi4KCShnZXRfaW5pdGlhbF9kZWZfZm9yX2luZHVjdGlvbik6IFBhc3MgYWRkaXRpb25hbCBhcmd1bWVudCBpbiBjYWxsIHRvCgl2ZWN0X2luaXRfdmVjdG9yLgoJKHZlY3RfZ2V0X3ZlY19kZWZfZm9yX29wZXJhbmQpOiBMaWtld2lzZS4KCSh2ZWN0X3NldHVwX3JlYWxpZ25tZW50KTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX2xvYWQpOiBMaWtld2lzZS4KCjIwMDctMDgtMTkgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAodmVjdF9pc19zaW1wbGVfcmVkdWN0aW9uKTogVGFrZXMgYSBsb29wX3ZlY19pbmZvCglhcyBhcmd1bWVudCBpbnN0ZWFkIG9mIHN0cnVjdCBsb29wLgoJKG5lc3RlZF9pbl92ZWN0X2xvb3BfcCk6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X3JlbGV2YW50KTogQWRkIGVudW0gdmFsdWVzIHZlY3RfdXNlZF9pbl9vdXRlcl9ieV9yZWR1Y3Rpb24gYW5kCgl2ZWN0X3VzZWRfaW5fb3V0ZXIuCgkoaXNfbG9vcF9oZWFkZXJfYmJfcCk6IE5ldy4gVXNlZCB0byBkaWZmZXJlbnRpYXRlIGxvb3AtaGVhZGVyIHBoaXMKCWZyb20gb3RoZXIgcGhpcyBpbiB0aGUgbG9vcC4KCShkZXN0cm95X2xvb3BfdmVjX2luZm8pOiBBZGQgYWRkaXRpb25hbCBhcmd1bWVudCB0byBkZWNsYXJhdGlvbi4KCgkqIHRyZWUtdmVjdG9yaXplci5jIChzdXBwb3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24pOiBBbHNvIGNoZWNrIGlmCgluZXN0ZWRfaW5fdmVjdF9sb29wX3AgKGRvbid0IGFsbG93IGNoYW5naW5nIHRoZSBvcmRlciBpbiB0aGlzIGNhc2UpLgoJKHZlY3RfaXNfc2ltcGxlX3JlZHVjdGlvbik6IFRha2VzIGEgbG9vcF92ZWNfaW5mbyBhcyBhcmd1bWVudCBpbnN0ZWFkCglvZiBzdHJ1Y3QgbG9vcC4gQ2FsbCBuZXN0ZWRfaW5fdmVjdF9sb29wX3AgYW5kIGRvbid0IHJlcXVpcmUKCWZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBpZiBpdCByZXR1cm5zIHRydWUuCgkobmV3X3N0bXRfdmVjX2luZm8pOiBXaGVuIHNldHRpbmcgZGVmX3R5cGUgZm9yIHBoaXMgZGlmZmVyZW50aWF0ZSAKCWxvb3AtaGVhZGVyIHBoaXMgZnJvbSBvdGhlciBwaGlzLgoJKGJiX2luX2xvb3BfcCk6IE5ldyBmdW5jdGlvbi4KCShuZXdfbG9vcF92ZWNfaW5mbyk6IElubmVyLWxvb3AgcGhpcyBhbHJlYWR5IGhhdmUgYSBzdG10X3ZpbmZvLCBzbwoJanVzdCB1cGRhdGUgdGhlaXIgbG9vcF92aW5mby4gIE9yZGVyIG9mIEJCIHRyYXZlcnNhbCBub3cgbWF0dGVycyAtCgljYWxsIGRmc19lbnVtZXJhdGVfZnJvbSB3aXRoIGJiX2luX2xvb3BfcC4KCShkZXN0cm95X2xvb3BfdmVjX2luZm8pOiBUYWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGNvbnRyb2wgd2hldGhlcgoJc3RtdF92aW5mbyBvZiB0aGUgbG9vcCBzdG10cyBzaG91bGQgYmUgZGVzdHJveWVkIGFzIHdlbGwuCgkodmVjdF9pc19zaW1wbGVfcmVkdWN0aW9uKTogQWxsb3cgdGhlICJub24tcmVkdWN0aW9uIiB1c2Ugb2YgYQoJcmVkdWN0aW9uIHN0bXQgdG8gYmUgZGVmaW5lcyBieSBhIG5vbiBsb29wLWhlYWRlciBwaGkuCgkodmVjdG9yaXplX2xvb3BzKTogQ2FsbCBkZXN0cm95X2xvb3BfdmVjX2luZm8gd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0b3JpemFibGVfcmVkdWN0aW9uKTogQ2FsbAoJbmVzdGVkX2luX3ZlY3RfbG9vcF9wLiBDaGVjayBmb3IgbXVsdGl0eXBlcyBpbiB0aGUgaW5uZXItbG9vcC4KCSh2ZWN0b3JpemFibGVfY2FsbCk6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV90eXBlX3Byb21vdGlvbik6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV90eXBlX2RlbW90aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX3N0b3JlKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX2xpdmVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX3JlZHVjdGlvbik6IExpa2V3aXNlLiBBbHNvIHBhc3MgbG9vcF9pbmZvIHRvCgl2ZWN0X2lzX3NpbXBsZV9yZWR1Y3Rpb24gaW5zdGVhZCBvZiBsb29wLgoJKHZlY3RfaW5pdF92ZWN0b3IpOiBDYWxsIG5lc3RlZF9pbl92ZWN0X2xvb3BfcC4KCShnZXRfaW5pdGlhbF9kZWZfZm9yX3JlZHVjdGlvbik6IExpa2V3aXNlLgoJKHZlY3RfY3JlYXRlX2VwaWxvZ19mb3JfcmVkdWN0aW9uKTogTGlrZXdpc2UuCgkodmVjdF9pbml0X3ZlY3Rvcik6IENoZWNrIHdoaWNoIGxvb3AgdG8gd29yayB3aXRoLCBpbiBjYXNlIHRoZXJlJ3MgYW4KCWlubmVyLWxvb3AuCgkoZ2V0X2luaXRpYWxfZGVmX2Zvcl9pbmR1Y2lvbik6IEV4dGVuZCB0byBoYW5kbGUgb3V0ZXItbG9vcAoJdmVjdG9yaXphdGlvbi4gRml4IGluZGVudGF0aW9uLgoJKHZlY3RfZ2V0X3ZlY19kZWZfZm9yX29wZXJhbmQpOiBTdXBwb3J0IHBoaXMgaW4gdGhlIGNhc2UgdmVjdF9sb29wX2RlZi4KCUluIHRoZSBjYXNlIHZlY3RfaW5kdWN0aW9uX2RlZiBnZXQgdGhlIHZlY3RvciBkZWYgZnJvbSB0aGUgaW5kdWN0aW9uCglwaGkgbm9kZSwgaW5zdGVhZCBvZiBjYWxsaW5nIGdldF9pbml0aWFsX2RlZl9mb3JfaW5kdWNpb24uCgkoZ2V0X2luaXRpYWxfZGVmX2Zvcl9yZWR1Y3Rpb24pOiBFeHRlbmQgdG8gaGFuZGxlIG91dGVyLWxvb3AgCgl2ZWN0b3JpemF0aW9uLgoJKHZlY3RfY3JlYXRlX2VwaWxvZ19mb3JfcmVkdWN0aW9uKTogRXh0ZW5kIHRvIGhhbmRsZSBvdXRlci1sb29wCgl2ZWN0b3JpemF0aW9uLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBDaGFuZ2UgYXNzZXJ0IHRvIGp1c3Qgc2tpcCB0aGlzIGNhc2UuICBBZGQgYQoJZHVtcCBwcmludG91dC4KCSh2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24pOiBBZGQgYSBjb3VwbGUgYXNzZXJ0cy4KCgkodmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJsZV9pdGVycyk6IE11bHRpcGx5Cgljb3N0IG9mIGlubmVyLWxvb3Agc3RtdHMgKGluIG91dGVyLWxvb3AgdmVjdG9yaXphdGlvbikgYnkgZXN0aW1hdGVkCglpbm5lci1sb29wIGJvdW5kLgoJKHZlY3RfbW9kZWxfcmVkdWN0aW9uX2Nvc3QpOiBEb24ndCBhZGQgcmVkdWN0aW9uIGVwaWxvZ3VlIGNvc3QgaW4gY2FzZQoJdGhpcyBpcyBhbiBpbm5lci1sb29wIHJlZHVjdGlvbiBpbiBvdXRlci1sb29wIHZlY3Rvcml6YXRpb24uCgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfc2NhbGFyX2N5Y2xlc18xKTogTmV3IGZ1bmN0aW9uLgoJU2FtZSBjb2RlIGFzIHdoYXQgdXNlZCB0byBiZSB2ZWN0X2FuYWx5emVfc2NhbGFyX2N5Y2xlcywgb25seSB3aXRoCglhZGRpdGlvbmFsIGFyZ3VtZW50IGxvb3AsIGFuZCBsb29wX2luZm8gcGFzc2VkIHRvCgl2ZWN0X2lzX3NpbXBsZV9yZWR1Y3Rpb24gaW5zdGVhZCBvZiBsb29wLgoJKHZlY3RfYW5hbHl6ZV9zY2FsYXJfY3ljbGVzKTogQ29kZSBmYWN0b3JlZCBvdXQgaW50bwoJdmVjdF9hbmFseXplX3NjYWxhcl9jeWNsZXNfMS4gQ2FsbCBpdCBmb3IgZWFjaCByZWxldmFudCBsb29wLW5lc3QuCglVcGRhdGVkIGRvY3VtZW50YXRpb24uCgkoYW5hbHl6ZV9vcGVyYXRpb25zKTogQ2hlY2sgZm9yIGlubmVyLWxvb3AgbG9vcC1jbG9zZWQgZXhpdC1waGlzIGR1cmluZwoJb3V0ZXItbG9vcCB2ZWN0b3JpemF0aW9uIHRoYXQgYXJlIGxpdmUgb3Igbm90IHVzZWQgaW4gdGhlIG91dGVybG9vcCwKCWNhdXNlIHRoaXMgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZy4KCSh2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdubWVudCk6IERvbid0IGNvbnNpZGVyIHZlcnNpb25pbmcgZm9yCgluZXN0ZWQtbG9vcHMuCgkodmVjdF9hbmFseXplX2RhdGFfcmVmcyk6IENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGRhdGFyZWZzIGluIHRoZQoJaW5uZXItbG9vcC4KCSh2ZWN0X21hcmtfc3RtdHNfdG9fYmVfdmVjdG9yaXplZCk6IEFsc28gY29uc2lkZXIgdmVjdF91c2VkX2luX291dGVyCglhbmQgdmVjdF91c2VkX2luX291dGVyX2J5X3JlZHVjdGlvbiBjYXNlcy4KCShwcm9jZXNzX3VzZSk6IEFsc28gY29uc2lkZXIgdGhlIGNhc2Ugb2Ygb3V0ZXItbG9vcCBzdG10IGRlZmluaW5nIGFuCglpbm5lci1sb29wIHN0bXQgYW5kIHZpY2UgdmVyc2EuCgkodmVjdF9hbmFseXplX2xvb3BfMSk6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X2FuYWx5emVfbG9vcF9mb3JtKTogRXh0ZW5kLCB0byBhbGxvdyBhIHJlc3RyaWN0ZWQgZm9ybSBvZiBuZXN0ZWQKCWxvb3BzLiAgQ2FsbCB2ZWN0X2FuYWx5emVfbG9vcF8xLgoJKHZlY3RfYW5hbHl6ZV9sb29wKTogU2tpcCAoaW5uZXItKWxvb3BzIHdpdGhpbiBvdXRlci1sb29wcyB0aGF0IGhhdmUKCWJlZW4gdmVjdG9yaXplZC4gIENhbGwgZGVzdHJveV9sb29wX3ZlY19pbmZvIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudC4KCgkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jICh2ZWN0X3JlY29nX3dpZGVuX3N1bV9wYXR0ZXJuKTogRG9uJ3QgYWxsb3cKCWluIHRoZSBpbm5lci1sb29wIHdoZW4gZG9pbmcgb3V0ZXItbG9vcCB2ZWN0b3JpemF0aW9uLiBBZGQKCWRvY3VtZW50YXRpb24gYW5kIHByaW50b3V0LgoJKHZlY3RfcmVjb2dfZG90X3Byb2RfcGF0dGVybik6IExpa2V3aXNlLiBBbHNvIGFkZCBjaGVjayBmb3IKCUdJTVBMRV9NT0RJRllfU1RNVCAoaW4gY2FzZSB3ZSBlbmNvdW50ZXIgYSBwaGkgaW4gdGhlIGxvb3ApLgoKMjAwNy0wOC0xOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAZ21haWwuY29tPgoKCSogdHJlZS1hZmZpbmUuaCAocHJpbnRfYWZmKTogTmV3IHByb3RvdHlwZS4KCShkZWJ1Z19hZmYpOiBMaWtld2lzZS4KCSogdHJlZS1hZmZpbmUuYyAocHJpbnRfYWZmKTogTmV3IGZ1bmN0aW9uLgoJKGRlYnVnX2FmZik6IExpa2V3aXNlLgoKMjAwNy0wOC0xOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbW1vbi5vcHQgKC1mZGVidWctcHJlZml4LW1hcD0pOiBOZXcgb3B0aW9uLgoJKiBvcHRzLmM6IEluY2x1ZGUgZGVidWcuaC4KCShjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSAtZmRlYnVnLXByZWZpeC1tYXAuCgkqIGZpbmFsLmM6IEluY2x1ZGUgZ2djLmguCgkoc3RydWN0IGRlYnVnX3ByZWZpeF9tYXAsIGRlYnVnX3ByZWZpeF9tYXBzLCBhZGRfZGVidWdfcHJlZml4X21hcCwKCXJlbWFwX2RlYnVnX2ZpbGVuYW1lKTogTmV3LgoJKiBNYWtlZmlsZS5pbiAoZmluYWwubywgb3B0cy5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogZGVidWcuaCAocmVtYXBfZGVidWdfZmlsZW5hbWUsIGFkZF9kZWJ1Z19wcmVmaXhfbWFwKTogRGVjbGFyZS4KCSogY29uZmlndXJlLmFjOiBDaGVjayBmb3IgYXNzZW1ibGVyIC0tZGVidWctcHJlZml4LW1hcCBzdXBwb3J0LgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogZ2NjLmMgKEFTTV9NQVApOiBEZWZpbmUgY29uZGl0aW9uYWwgb24gSEFWRV9BU19ERUJVR19QUkVGSVhfTUFQLgoJKEFTTV9ERUJVR19TUEVDKTogSW5jbHVkZSBBU01fTUFQLgoJKiBkb2MvaW5zdGFsbC50ZXhpICgtLXdpdGgtZGVidWctcHJlZml4LW1hcCk6IERvY3VtZW50LgoJKiBkb2MvaW52b2tlLnRleGkgKC1mZGVidWctcHJlZml4LW1hcCk6IERvY3VtZW50LgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2luaXQsIGRieG91dF9zdGFydF9zb3VyY2VfZmlsZSwKCWRieG91dF9zb3VyY2VfZmlsZSk6IENhbGwgcmVtYXBfZGVidWdfZmlsZW5hbWUuCgkqIGR3YXJmMm91dC5jIChhZGRfY29tcF9kaXJfYXR0cmlidXRlLCBtYXliZV9lbWl0X2ZpbGUsCglkd2FyZjJvdXRfc3RhcnRfc291cmNlX2ZpbGUsIGR3YXJmMm91dF9maW5pc2gpOiBDYWxsCglyZW1hcF9kZWJ1Z19maWxlbmFtZS4KCShmaWxlX3RhYmxlX3JlbGF0aXZlX3ApOiBEbyBub3QgY2hlY2sgZC0+ZW1pdHRlZF9udW1iZXIuCgkqIHRvcGxldi5jIChvdXRwdXRfZmlsZV9kaXJlY3RpdmUpOiBDYWxsIHJlbWFwX2RlYnVnX2ZpbGVuYW1lLgoJKiB2bXNkYmdvdXQuYyAod3JpdGVfc3JjY29ycik6IENhbGwgcmVtYXBfZGVidWdfZmlsZW5hbWUuCgkqIHhjb2Zmb3V0LmMgKHhjb2Zmb3V0X3NvdXJjZV9maWxlKTogQ2FsbCByZW1hcF9kZWJ1Z19maWxlbmFtZS4KCjIwMDctMDgtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxvb3AtaW52YXJpYW50LmMgKGZpbmRfaW52YXJpYW50c190b19tb3ZlKTogQWRkIG1pc3NpbmcgbWFjcm8KCWFyZ3VtZW50LgoKMjAwNy0wOC0xNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9sYWJlbF9kZWNsKTogUmVtb3ZlZCBvbGQgImphdmEiIGZpZWxkcy4KCjIwMDctMDgtMTcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoJICAgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgoJKiBjb25maWcvbWlwcy9zZGUuaCAoRFJJVkVSX1NFTEZfU1BFQ1MpOiBBZGQgY29tbWFzLgoJVHJlYXQgLW1uby1kYXRhLWluLWNvZGUgYW5kIC1tY29kZS14b25seSBhcyBhbGlhc2VzIGZvcgoJLW1jb2RlLXJlYWRhYmxlPW5vIGFuZCAtbWNvZGUtcmVhZGFibGU9cGNyZWwgcmVzcGVjdGl2ZWx5LgoJKiBjb25maWcvbWlwcy90LXNkZSAoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogQWRkIC1tY29kZS14b25seS4KCShNVUxUSUxJQl9PUFRJT05TKTogQWRkIC1tY29kZS1yZWFkYWJsZT1ubyBtdWx0aWxpYnMuCgkoTVVMVElMSUJfRElSTkFNRVMpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgoyMDA3LTA4LTE3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBNYWtlZmlsZS5pbiAodmVyc2lvbi5vKTogRGVwZW5kIG9uICQoUkVWSVNJT04pIG9ubHkgaWYKCVJFVklTSU9OX3MgaXMgZGVmaW5lZC4KCjIwMDctMDgtMTcgIFNhIExpdSAgPHNhbGl1QGRlLmlibS5jb20+CgkgICAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIG1pZGRsZS1lbmQvMzI5NzAKCSogdHJlZS5jIChyZWNvbnN0cnVjdF9jb21wbGV4X3R5cGUpOiBGb3IgYSBwb2ludGVyIHRvIGEgdmVjdG9yLAoJdXNlIGJ1aWxkX3F1YWxpZmllZF90eXBlIHRvIHJldGFpbiBxdWFsaWZpZXJzIG9mIHRoZSBiYXNlIHR5cGUuCgoyMDA3LTA4LTE3ICBDaGVuIExpcWluICA8bGlxaW5Ac3Vubm9ydGguY29tLmNuPgoKCSogY29uZmlnL3Njb3JlL3Njb3JlLm1kIDogVXBkYXRlIHBhdHRlcm4gdGFibGVqdW1wLgoJKiBjb25maWcvc2NvcmUvc2NvcmUuYyA6IFVwZGF0ZSBzY29yZV9pbml0aWFsaXplX3RyYW1wb2xpbmUgCglmdW5jdGlvbi4KCSogY29uZmlnL3Njb3JlL3Njb3JlLmggKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBBZGRlZCBtYWNyby4KCShUUkFNUE9MSU5FX0lOU05TLCBUUkFNUE9MSU5FX1NJWkUpIFVwZGF0ZSBtYWNyby4KCSogZG9jL2NvbnRyaWIudGV4aTogQWRkIG15IGVudHJ5LgoKMjAwNy0wOC0xNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZWZpbGUuaW4gKFJFVklTSU9OKTogTmV3LgoJKFJFVklTSU9OX2MpOiBOZXcuCgkoUkVWSVNJT05fcyk6IE5ldy4KCSh2ZXJzaW9uLm8pOiBBbHNvIGRlcGVuZCBvbiAkKFJFVklTSU9OKS4gQWRkCgktRFJFVklTSU9OPSQoUkVWSVNJT05fcykuCgoJKiB2ZXJzaW9uLmMgKHZlcnNpb25fc3RyaW5nKTogQWRkIFJFVklTSU9OLgoKMjAwNy0wOC0xNiAgU2VvbmdiYWUgUGFyayA8c2VvbmdiYWUucGFya0BnbWFpbC5jb20+CgoJKiB0cmVlLWVoLmMgKGxvd2VyX3RyeV9maW5hbGx5X29uZWRlc3QpOiBSZXNldCB0aGUgbG9jdXMKCW9mIEdPVE8gdGhhdCdzIHJlbG9jYXRlZCB0byBhIGRpZmZlcmVudCBibG9jay4KCjIwMDctMDgtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNvbnN0X3N0cmlwX2FycmF5X3R5cGVzKTogTmV3LgoJKiBjLWNvbW1vbi5oIChsYW5nX21pc3Npbmdfbm9yZXR1cm5fb2tfcCk6IERlbGV0ZS4KCShjb25zdF9zdHJpcF9hcnJheV90eXBlcyk6IE5ldy4KCSogYy1vYmpjLWNvbW1vbi5jIChjX2Rpc3JlZ2FyZF9pbmxpbmVfbGltaXRzLAoJY193YXJuX3VudXNlZF9nbG9iYWxfZGVjbCk6IENvbnN0aWZ5LgoJKiBjLXRyZWUuaCAoY19kaXNyZWdhcmRfaW5saW5lX2xpbWl0cywgY193YXJuX3VudXNlZF9nbG9iYWxfZGVjbCwKCWNfdmxhX3R5cGVfcCwgY19pbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBMaWtld2lzZS4KCSogYy10eXBlY2suYyAoY19pbmNvbXBsZXRlX3R5cGVfZXJyb3IsIGNfdmxhX3R5cGVfcCk6IExpa2V3aXNlLgoJKiBob29rcy5jIChob29rX2Jvb2xfY29uc3RfdHJlZV9mYWxzZSk6IE5ldy4KCSogaG9va3MuaCAoaG9va19ib29sX2NvbnN0X3RyZWVfZmFsc2UpOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfd2Fybl91bnVzZWRfZ2xvYmFsX2RlY2wsCglsaGRfaW5jb21wbGV0ZV90eXBlX2Vycm9yLCBsaGRfZXhwcl9zaXplLAoJbGhkX3RyZWVfaW5saW5pbmdfZGlzcmVnYXJkX2lubGluZV9saW1pdHMsCglsaGRfdHJlZV9pbmxpbmluZ19hdXRvX3Zhcl9pbl9mbl9wLCBsaGRfdHJlZV9kdW1wX3R5cGVfcXVhbHMsCglMQU5HX0hPT0tTX0dFTkVSSUNfVFlQRV9QLCBMQU5HX0hPT0tTX1RZUEVfTUFYX1NJWkUpOiBDb25zdGlmeS4KCSogbGFuZ2hvb2tzLmMgKGxoZF93YXJuX3VudXNlZF9nbG9iYWxfZGVjbCwKCWxoZF9pbmNvbXBsZXRlX3R5cGVfZXJyb3IsCglsaGRfdHJlZV9pbmxpbmluZ19kaXNyZWdhcmRfaW5saW5lX2xpbWl0cywKCWxoZF90cmVlX2lubGluaW5nX2F1dG9fdmFyX2luX2ZuX3AsIGxoZF90cmVlX2R1bXBfdHlwZV9xdWFscywKCWxoZF9leHByX3NpemUpOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX3RyZWVfaW5saW5pbmcsCglsYW5nX2hvb2tzX2Zvcl90cmVlX2R1bXAsIGxhbmdfaG9va3NfZm9yX3R5cGVzLAoJbGFuZ19ob29rc19mb3JfZGVjbHMsIGxhbmdfaG9va3MpOiBMaWtld2lzZS4KCSogcG9pbnRlci1zZXQuYyAocG9pbnRlcl9zZXRfdCwgcG9pbnRlcl9zZXRfY3JlYXRlLAoJcG9pbnRlcl9zZXRfY29udGFpbnMsIGluc2VydF9hdXgsIHBvaW50ZXJfc2V0X2luc2VydCwKCXBvaW50ZXJfc2V0X3RyYXZlcnNlLCBwb2ludGVyX21hcF90LCBwb2ludGVyX21hcF9jcmVhdGUsCglwb2ludGVyX21hcF9jb250YWlucywgcG9pbnRlcl9tYXBfaW5zZXJ0LCBwb2ludGVyX21hcF90cmF2ZXJzZSk6CglMaWtld2lzZS4KCSogcG9pbnRlci1zZXQuaCAocG9pbnRlcl9zZXRfY29udGFpbnMsIHBvaW50ZXJfc2V0X2luc2VydCwKCXBvaW50ZXJfc2V0X3RyYXZlcnNlLCBwb2ludGVyX21hcF9jb250YWlucywgcG9pbnRlcl9tYXBfaW5zZXJ0LAoJcG9pbnRlcl9tYXBfdHJhdmVyc2UpOiBMaWtld2lzZS4KCSogcHJlZGljdC5jIChhc3NlcnRfaXNfZW1wdHkpOiBMaWtld2lzZS4KCSogdHJlZS1hZmZpbmUuYyAoZnJlZV9uYW1lX2V4cGFuc2lvbik6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jIChlZGdlX3RvX2Nhc2VzX2NsZWFudXApOiBMaWtld2lzZS4KCSogdHJlZS5jIChzaXplX2luX2J5dGVzLCBtYXhfaW50X3NpemVfaW5fYnl0ZXMpOiBMaWtld2lzZS4KCSogdHJlZS5oIChzaXplX2luX2J5dGVzLCBtYXhfaW50X3NpemVfaW5fYnl0ZXMpOiBMaWtld2lzZS4KCjIwMDctMDgtMTYgIFZpY3RvciBLYXBsYW5za3kgPHZpY3RvcmtAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5jIChuZXdfbG9vcF92ZWNfaW5mbyk6IEluaXRpYWxpemUgbmV3IAoJZmllbGQuCgkoZGVzdHJveV9sb29wX3ZlY19pbmZvKTogQWRkIGNhbGwgdG8gVkVDX2ZyZWUuCgkqIHRyZWUtdmVjdG9yaXplci5oIChtYXlfYWxpYXNfZGRycyk6IERlZmluZS4KCShMT09QX1ZJTkZPX01BWV9BTElBU19ERFJTKTogRGVmaW5lLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfZGF0YV9yZWZfZGVwZW5kZW5jZSk6CglDaGFuZ2UgcmVwb3J0aW5nIHRvIGR1bXAuCgkodmVjdF9pc19kdXBsaWNhdGVfZGRyKTogTmV3LgoJKHZlY3RfbWFya19mb3JfcnVudGltZV9hbGlhc190ZXN0KTogTmV3LgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZl9kZXBlbmRlbmNlcykgQWRkIGNhbGwgdG8KCXZlY3RfbWFya19mb3JfcnVudGltZV9hbGlhc190ZXN0LgoJKHZlY3RfZW5oYW5jZV9kYXRhX3JlZnNfYWxpZ25tZW50KTogRGVmaW5lIGxvY2FsIHZhcmlhYmxlCgl2ZWN0X3ZlcnNpb25pbmdfZm9yX2FsaWFzX3JlcXVpcmVkLCBkb24ndCBwZXJmb3JtCglwZWVsaW5nIGZvciBhbGlnbm1lbnQgaWYgdmVyc2lvbmluZyBmb3IgYWxpYXMgaXMKCXJlcXVpcmVkLgoJKHZlY3RfZW5oYW5jZV9kYXRhX3JlZnNfYWxpZ25tZW50KTogVXNlCglQQVJBTV9WRUNUX01BWF9WRVJTSU9OX0ZPUl9BTElHTk1FTlRfQ0hFQ0tTIGluc3RlYWQgb2YKCVBBUkFNX1ZFQ1RfTUFYX1ZFUlNJT05fQ0hFQ0tTLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMKCSh2ZWN0X2NyZWF0ZV9jb25kX2Zvcl9hbGlhc19jaGVja3MpOiBOZXcuCgkodmVjdF90cmFuc2Zvcm1fbG9vcCk6IEFkZCBjYWxsIHRvCgl2ZWN0X2NyZWF0ZV9jb25kX2Zvcl9hbGlhc19jaGVja3MuCgkodmVjdF92ZmFfc2VnbWVudF9zaXplKTogTmV3LgoJKiBwYXJhbXMuZGVmIChQQVJBTV9WRUNUX01BWF9WRVJTSU9OX0ZPUl9BTElHTk1FTlRfQ0hFQ0tTKToKCVJlbmFtZS4KCShQQVJBTV9WRUNUX01BWF9WRVJTSU9OX0ZPUl9BTElBU19DSEVDS1MpOiBEZWZpbmUuCgkqIGRvYy9pbnZva2UudGV4aQoJKHZlY3QtbWF4LXZlcnNpb24tZm9yLWFsaWdubWVudC1jaGVja3MpOiBEb2N1bWVudC4KCSh2ZWN0LW1heC12ZXJzaW9uLWZvci1hbGlhcy1jaGVja3MpOiBEb2N1bWVudC4KCSh2ZWN0LW1heC12ZXJzaW9uLWNoZWNrcyk6IFJlbW92ZS4KCjIwMDctMDgtMTYgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqcmVwX21vdmRpX3JleDY0KTogRW1pdCAicmVwIiBwcmVmaXggb24KCXRoZSBzYW1lIGxpbmUgYXMgdGhlIGluc3RydWN0aW9uIGZvciBhbGwgYXNtIGRpYWxlY3RzLgoJKCpyZXBfbW92c2kpOiBEaXR0by4KCSgqcmVwX21vdnNpX3JleDY0KTogRGl0dG8uCgkoKnJlcF9tb3ZxaSk6IERpdHRvLgoJKCpyZXBfbW92cWlfcmV4NjQpOiBEaXR0by4KCSgqcmVwX3N0b3NkaV9yZXg2NCk6IERpdHRvLgoJKCpyZXBfc3Rvc3NpKTogRGl0dG8uCgkoKnJlcF9zdG9zc2lfcmV4NjQpOiBEaXR0by4KCSgqcmVwX3N0b3NxaSk6IERpdHRvLgoJKCpyZXBfc3Rvc3FpX3JleDY0KTogRGl0dG8uCgkoKmNtcHN0cm5xaV9uel8xKTogRGl0dG8uCgkoKmNtcHN0cm5xaV9uel9yZXhfMSk6IERpdHRvLgoJKCpjbXBzdHJucWlfMSk6IERpdHRvLgoJKCpjbXBzdHJucWlfcmV4XzEpOiBEaXR0by4KCSgqc3RybGVucWlfMSk6IERpdHRvLgoJKCpzdHJsZW5xaV9yZXhfMSk6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9zeW5jLm1kICgqc3luY19jb21wYXJlX2FuZF9zd2FwPG1vZGU+KTogRW1pdCAibG9jayIKCXByZWZpeCBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBpbnN0cnVjdGlvbiBmb3IgYWxsIGFzbSBkaWFsZWN0cy4KCShzeW5jX2RvdWJsZV9jb21wYXJlX2FuZF9zd2FwPG1vZGU+KTogRGl0dG8uCgkoKnN5bmNfZG91YmxlX2NvbXBhcmVfYW5kX3N3YXBkaV9waWMpOiBEaXR0by4KCSgqc3luY19jb21wYXJlX2FuZF9zd2FwX2NjPG1vZGU+KTogRGl0dG8uCgkoc3luY19kb3VibGVfY29tcGFyZV9hbmRfc3dhcF9jYzxtb2RlPik6IERpdHRvLgoJKCpzeW5jX2RvdWJsZV9jb21wYXJlX2FuZF9zd2FwX2NjZGlfcGljKTogRGl0dG8uCgkoc3luY19vbGRfYWRkPG1vZGU+KTogRGl0dG8uCgkoc3luY19hZGQ8bW9kZT4pOiBEaXR0by4KCShzeW5jX3N1Yjxtb2RlPik6IERpdHRvLgoJKHN5bmNfaW9yPG1vZGU+KTogRGl0dG8uCgkoc3luY19hbmQ8bW9kZT4pOiBEaXR0by4KCShzeW5jX3hvcjxtb2RlPik6IERpdHRvLgoKMjAwNy0wOC0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjg5NwoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogQ2hlY2sgdGhhdCB0aGUgbWVtb3J5IHJldHVybmVkIGJ5CglmaW5kX3JlbG9hZHNfdG9wbGV2IHdhcyBub3QgdGhlIHJlc3VsdCBvZiBmb3JjaW5nIGEgY29uc3RhbnQKCXRvIG1lbW9yeS4KCShmaW5kX3JlbG9hZHNfdG9wbGV2KTogQWx3YXlzIHVzZSBzaW1wbGlmeV9nZW5fc3VicmVnIHRvIGdldAoJdGhlIHN1YnJlZyBvZiBhIGNvbnN0YW50LiAgSWYgdGhlIHJlc3VsdCBpcyBhbHNvIGEgY29uc3RhbnQsCglidXQgbm90IGEgbGVnaXRpbWF0ZSBvbmUsIGZvcmNlIGl0IGludG8gdGhlIGNvbnN0YW50IHBvb2wKCWFuZCByZWxvYWQgaXRzIGFkZHJlc3MuCgoyMDA3LTA4LTE1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfcnR4X2Nvc3RzKTogQWRkIENMWiwgQ1RaLCBhbmQKCVBPUENPVU5ULgoKMjAwNy0wOC0xNSAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9maWxlX3N0YXJ0KTogT3V0cHV0IGEgLmdudV9hdHRyaWJ1dGUKCWRpcmVjdGl2ZSBmb3IgdGhlIGN1cnJlbnQgdmVjdG9yIEFCSS4KCjIwMDctMDgtMTUgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIHRhcmdldC8zMjk2MwoJKiBjYWxsZXItc2F2ZS5jIChyZWdfc2F2ZV9jb2RlKTogU2V0IGludmFsaWRlIHN0YXR1cyBvbiByZXN0b3JlIGNvZGUuCgkKMjAwNy0wOC0xNSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGdvb2dsZS5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb21wdXRlX21lbW9yeV9wYXJ0aXRpb25zKTogVXNlCglhbGlhc19iaXRtYXBfb2JzdGFjayB0byBhbGxvY2F0ZSBiaXRtYXBzLgoJKHJlc2V0X2FsaWFzX2luZm8pOiBGYWN0b3Igb3V0IG9mIGluaXRfYWxpYXNfaW5mby4KCU1hcmsgYWxsIG5hbWUgdGFncyBub3QgYXNzb2NpYXRlZCB0byBhbiBTU0EgbmFtZSBmb3IgcmVuYW1pbmcuCgkoaW5pdF9hbGlhc19pbmZvKTogQ2FsbCBpdC4KCShjcmVhdGVfbmFtZV90YWdzKTogVGlkeS4gIEFkZCBjb21tZW50cy4KCShkdW1wX3BvaW50c190b19pbmZvX2Zvcik6IERvIG5vdCBjYWxsIGdldF9tZW1fc3ltX3N0YXRzX2Zvci4KCjIwMDctMDgtMTUgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAodnI0MTMwX3N3YXBfaW5zbnNfcCk6IFVzZSBuZXcgaW50ZXJmYWNlIHRvCglzY2hlZHVsZXIgZGVwZW5kZW5jaWVzLgoKMjAwNy0wOC0xNSAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc3Vic2kzX2NhcnJ5X3pleHQpOiBSZW1vdmUgIm0iIGNvbnN0cmFpbnQgZm9yCgkicmVnaXN0ZXJfb3BlcmFuZCIuCgkoKmlvcnNpXzFfemV4dCk6IExpa2V3aXNlLgoJKCppb3JzaV8xX3pleHRfaW1tKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3NzZS5tZDogKCpzc2U0XzFfZXh0cmFjdHBzKTogVXNlICJub25pbW1lZGlhdGVfb3BlcmFuZCIKCXdpdGggInJtIi8ieG0iIGNvbnN0cmFpbnQuCgkoc3NlMl92bXNxcnR2MmRmMik6IExpa2V3aXNlLgoKMjAwNy0wOC0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMzA3NAoJKiBlbWl0LXJ0bC5jICh0cnlfc3BsaXQpOiBVc2UgSU5TTl9MSVNUIGluc3RlYWQgb2YgRVhQUl9MSVNUIGZvcgoJUkVHX0xJQkNBTEwgbm90ZS4KCjIwMDctMDgtMTQgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1wYXNzLmggKFBST1BfcHRhKTogUmVtb3ZlZC4KCShUT0RPX3JlYnVpbGRfYWxpYXMpOiBOZXcuCgkocGFzc19tYXlfYWxpYXMpOiBSZW1vdmVkLgoJKiB0cmVlLXNzYS1jY3AuYyAoZXhlY3V0ZV9mb2xkX2FsbF9idWlsdGlucyk6IE9ubHkgcmVidWlsZAoJYWxpYXNpbmcgaWYgd2UgY2hhbmdlZCBzb21ldGhpbmcuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfbWF5X2FsaWFzZXMpOiBNYWtlIG5vbi1zdGF0aWMuICBVcGRhdGUKCVNTQSBpbnRlcm5hbGx5LgoJKHBhc3NfbWF5X2FsaWFzKTogUmVtb3ZlZC4KCShjcmVhdGVfc3RydWN0dXJlX3ZhcnMpOiBSZXR1cm4gVE9ET19yZWJ1aWxkX2FsaWFzLgoJKiB0cmVlLXNzYS1wcmUuYyAoZG9fcHJlKTogUmV0dXJuIFRPRE9fcmVidWlsZF9hbGlhcy4KCSogdHJlZS1zcmEuYyAodHJlZV9zcmEpOiBPbmx5IHJlYnVpbGQgYWxpYXNpbmcgaWYgc29tZXRoaW5nCgljaGFuZ2VkLgoJKHRyZWVfc3JhX2Vhcmx5KTogV2UgbmV2ZXIgYWZmZWN0IGFsaWFzaW5nIHJpZ2h0IG5vdy4KCSogdHJlZS1mbG93LmggKGNvbXB1dGVfbWF5X2FsaWFzZXMpOiBOZXcgcHJvdG90eXBlLgoJKiBwYXNzZXMuYzogUmVtb3ZlIHBhc3NfbWF5X2FsaWFzIGZyb20gdGhlIHBhc3Nlcy4KCShleGVjdXRlX2Z1bmN0aW9uX3RvZG8pOiBTdXBwb3J0IFRPRE9fcmVidWlsZF9hbGlhcy4JCgoyMDA3LTA4LTE0ICBLYWkgVGlldHogIDxrYWkudGlldHpAb25ldmlzaW9uLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobGVnaXRpbWl6ZV9hZGRyZXNzKTogTW92ZSBkbGxpbXBvcnRlZCB2YXJpYWJsZQoJY2hlY2sgaW5mcm9udCBvZiBsZWdpdGltaXppbmcgcGljIGFkZHJlc3Mgb2YgQ09OU1Qgc3ltYm9scy4KCjIwMDctMDgtMTQgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyOTQxCgkqIHRyZWUtZWguYyAoc3RydWN0IGxlaF90Zl9zdGF0ZSk6IEFkZCBnb3RvX3F1ZXVlX21hcCBmaWVsZC4KCShnb3RvX3F1ZXVlX2NtcCk6IFJlbW92ZS4KCShmaW5kX2dvdG9fcmVwbGFjZW1lbnQpOiBDaGFuZ2Ugc2VhcmNoIG1ldGhvZC4KCShtYXliZV9yZWNvcmRfaW5fZ290b19xdWV1ZSk6IEFkZCBhc3NlcnQuCgkobG93ZXJfdHJ5X2ZpbmFsbHkpOiBSZW1vdmUgcXNvcnQgY2FsbCwgYWRkIHBvaW50ZXJfbWFwX2Rlc3Ryb3kgY2FsbC4KCSogTWFrZWZpbGUuaW4gKHRyZWUtZWgubyk6IEFkZCBwb2ludGVyLXNldC5oIGRlcGVuZGVuY3kuCgoyMDA3LTA4LTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbGlhcy5jIChjb21wb25lbnRfdXNlc19wYXJlbnRfYWxpYXNfc2V0KTogQ29uc3RpZnkuCgkqIGFsaWFzLmggKGNvbXBvbmVudF91c2VzX3BhcmVudF9hbGlhc19zZXQpOiBMaWtld2lzZS4KCSogY2ZncnRsLmMgKHByaW50X3J0bF93aXRoX2JiKTogTGlrZXdpc2UuCgkqIGRvdWJsZS1pbnQuYyAodHJlZV90b19kb3VibGVfaW50LCBkb3VibGVfaW50X2ZpdHNfdG9fdHJlZV9wLAoJbXB6X2dldF9kb3VibGVfaW50KTogTGlrZXdpc2UuCgkqIGRvdWJsZS1pbnQuaCAoZG91YmxlX2ludF9maXRzX3RvX3RyZWVfcCwgdHJlZV90b19kb3VibGVfaW50LAoJbXB6X2dldF9kb3VibGVfaW50KTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoaXNfYWxpZ25pbmdfb2Zmc2V0LCB1bmRlZmluZWRfb3BlcmFuZF9zdWJ3b3JkX3AsCgltb3N0bHlfemVyb3NfcCwgYWxsX3plcm9zX3AsIHNhZmVfZnJvbV9wLCBpc19hbGlnbmluZ19vZmZzZXQpOgoJTGlrZXdpc2UuCgkqIGV4cHIuaCAoc2FmZV9mcm9tX3ApOiBMaWtld2lzZS4KCSogZ2ltcGxlLWxvdy5jICh0cnlfY2F0Y2hfbWF5X2ZhbGx0aHJ1LCBibG9ja19tYXlfZmFsbHRocnUpOgoJTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmMgKHNob3VsZF9jYXJyeV9sb2N1c19wLCB6ZXJvX3NpemVkX2ZpZWxkX2RlY2wsCgl6ZXJvX3NpemVkX3R5cGUsIGdvYV9saHNfZXhwcl9wKTogTGlrZXdpc2UuCgkqIG9tcC1sb3cuYyAoaXNfdmFyaWFibGVfc2l6ZWQsIHVzZV9wb2ludGVyX2Zvcl9maWVsZCk6IExpa2V3aXNlLgoJKiBydGwuaCAocHJpbnRfcnRsX3dpdGhfYmIpOiBMaWtld2lzZS4KCSogc2NoZWQtdmlzLmMgKHByaW50X2V4cCwgcHJpbnRfdmFsdWUsIHByaW50X3BhdHRlcm4pOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAoY29uc3RfZmlyc3Rfc3RtdCwgY29uc3RfbGFzdF9zdG10KTogTmV3LgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGJiX3N0bXRfbGlzdCk6IENvbnN0aWZ5LgoJKGNic2lfc3RhcnQsIGNic2lfbGFzdCwgY2JzaV9lbmRfcCwgY2JzaV9uZXh0LCBjYnNpX3ByZXYsCgljYnNpX3N0bXQpOiBOZXcuCgkqIHRyZWUtZmxvdy5oIChjb25zdF9ibG9ja19zdG10X2l0ZXJhdG9yLCBjYnNpX3N0YXJ0LCBjYnNpX2xhc3QsCgljb25zdF9maXJzdF9zdG10LCBjb25zdF9sYXN0X3N0bXQpOiBOZXcuCgkoYmxvY2tfbWF5X2ZhbGx0aHJ1LCBlbXB0eV9ibG9ja19wKTogQ29uc3RpZnkuCgkqIHRyZWUtaXRlcmF0b3IuYyAoRVhQUl9GSVJTVF9CT0RZLCBFWFBSX0xBU1RfQk9EWSwKCUVYUFJfT05MWV9CT0RZKTogTmV3LgoJKGV4cHJfZmlyc3QsIGV4cHJfbGFzdCwgZXhwcl9vbmx5KTogVXNlIG1hY3JvIGZvciBib2R5LgoJKGNvbnN0X2V4cHJfZmlyc3QsIGNvbnN0X2V4cHJfbGFzdCwgY29uc3RfZXhwcl9vbmx5KTogTmV3LgoJKiB0cmVlLWl0ZXJhdG9yLmggKGNvbnN0X3RyZWVfc3RtdF9pdGVyYXRvciwgY3RzaV9zdGFydCwKCWN0c2lfbGFzdCwgY3RzaV9lbmRfcCwgY3RzaV9vbmVfYmVmb3JlX2VuZF9wLCBjdHNpX25leHQsCgljdHNpX3ByZXYsIGN0c2lfc3RtdCk6IE5ldy4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGdldF9sb29wX2V4aXRfY29uZGl0aW9uKTogQ29uc3RpZnkuCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5oIChnZXRfbG9vcF9leGl0X2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKGxvb3Bfb25seV9leGl0X3AsCglkZXJpdmVfY29uc3RhbnRfdXBwZXJfYm91bmQpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtcGhpb3B0LmMgKGVtcHR5X2Jsb2NrX3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHJlZGlyZWN0aW9uX2Jsb2NrX3ApOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHNscGVlbF9jYW5fZHVwbGljYXRlX2xvb3BfcCk6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAoc2xwZWVsX2Nhbl9kdXBsaWNhdGVfbG9vcF9wKTogTGlrZXdpc2UuCgkqIHRyZWUtdnJwLmMgKHZycF9iaXRtYXBfZXF1YWxfcCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGdldF90eXBlX3N0YXRpY19ib3VuZHMpOiBMaWtld2lzZS4KCSogdHJlZS5oIChjb25zdF9leHByX2ZpcnN0LCBjb25zdF9leHByX2xhc3QsIGNvbnN0X2V4cHJfb25seSk6IE5ldy4KCShnZXRfdHlwZV9zdGF0aWNfYm91bmRzKTogQ29uc3RpZnkuCgoyMDA3LTA4LTE0ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJUFIgdGFyZ2V0LzMwMzE1CgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoQ0FOT05JQ0FMSVpFX0NPTVBBUklTT04pOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHBsdXNtaW51cykoYWRkc3ViKShTV0kpOiBOZXcuCgkoKjxhZGRzdWI+PG1vZGU+M19jY19vdmVyZmxvdyk6IE5ldy4KCSgqYWRkPG1vZGU+M19jY29ubHlfb3ZlcmZsb3cpOiBOZXcuCgkoKnN1Yjxtb2RlPjNfY2Nvbmx5X292ZXJmbG93KTogTmV3LgoJKCo8YWRkc3ViPnNpM196ZXh0X2NjX292ZXJmbG93KTogTmV3LgoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChmY21vdl9jb21wYXJpc29uX29wZXJhdG9yKTogQWNjZXB0CglDQ0Ntb2RlIGZvciBMVFUsIEdUVSwgTEVVIGFuZCBHRVUuCgkoaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkoaXg4Nl9jYXJyeV9mbGFnX29wZXJhdG9yKTogQ2FycnkgZmxhZyBpcyBzZXQgaWYgTFRVIG9yIEdUVSBpbiBDQ0Ntb2RlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHB1dF9jb25kaXRpb25fY29kZSk6IFN1cHBvcnQgQ0NDbW9kZS4KCShpeDg2X2NjX21vZGUpOiBVc2UgQ0NDbW9kZSB3aGVuIHRlc3RpbmcgZm9yIG92ZXJmbG93IG9mIFBMVVMKCW9yIE1JTlVTIGV4cHJlc3Npb25zLgoKMjAwNy0wOC0xNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAZ21haWwuY29tPgoKCVBSIGMvMzA0MjgKCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogRGlzYWxsb3cgdmVjdG9yIGZsb2F0IHR5cGVzIHdpdGgKCUJJVF9JT1JfRVhQUiwgQklUX0FORF9FWFBSLCBhbmQgQklUX1hPUl9FWFBSLgoKMjAwNy0wOC0xNCAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgoKCSogc2NoZWQtaW50LmggKHN0cnVjdCBfZGVwKTogUmVuYW1lIGZpZWxkICdraW5kJyB0byAndHlwZScuCgkoREVQX0tJTkQpOiBSZW5hbWUgdG8gREVQX1RZUEUuICBVcGRhdGUgYWxsIHVzZXMuCgkoZGVwX2RlZik6IE5ldyB0eXBlZGVmLgoJKGluaXRfZGVwXzEsIHNkX2RlYnVnX2RlcCk6IERlY2xhcmUgZnVuY3Rpb25zLgoJKERFUF9MSU5LX0tJTkQpOiBSZW5hbWUgdG8gREVQX0xJTktfVFlQRS4KCShkZWJ1Z19kZXBfbGlua3MpOiBSZW1vdmUuCgkoc3RydWN0IF9kZXBzX2xpc3QpOiBOZXcgZmllbGQgJ25fbGlua3MnLgoJKERFUFNfTElTVF9OX0xJTktTKTogTmV3IG1hY3JvLgoJKEZPUl9FQUNIX0RFUF9MSU5LKTogUmVtb3ZlLgoJKGNyZWF0ZV9kZXBzX2xpc3QsIGZyZWVfZGVwc19saXN0LCBkZWxldGVfZGVwc19saXN0KTogUmVtb3ZlCglkZWNsYXJhdGlvbi4KCShkZXBzX2xpc3RfZW1wdHlfcCwgZGVidWdfZGVwc19saXN0LCBhZGRfYmFja19kZXBfdG9fZGVwc19saXN0KTogRGl0dG8uCgkoZmluZF9saW5rX2J5X3Byb19pbl9kZXBzX2xpc3QsIGZpbmRfbGlua19ieV9jb25faW5fZGVwc19saXN0KTogRGl0dG8uCgkoY29weV9kZXBzX2xpc3RfY2hhbmdlX2NvbiwgbW92ZV9kZXBfbGluayk6IERpdHRvLgoJKHN0cnVjdCBoYWlmYV9pbnNuX2RhdGEpOiBTcGxpdCBmaWVsZCAnYmFja19kZXBzJyBpbnRvICdoYXJkX2JhY2tfZGVwcycKCWFuZCAnc3BlY19iYWNrX2RlcHMnLiAgTmV3IGZpZWxkICdyZXNvbHZlZF9mb3J3X2RlcHMnLiAgUmVtb3ZlIGZpZWxkCgknZGVwX2NvdW50Jy4KCShJTlNOX0JBQ0tfREVQUyk6IFJlbW92ZS4KCShJTlNOX0hBUkRfQkFDS19ERVBTLCBJTlNOX1NQRUNfQkFDS19ERVBTLCBJTlNOX1JFU09MVkVEX0ZPUldfREVQUyk6CglOZXcgbWFjcm9zLgoJKElOU05fREVQX0NPVU5UKTogUmVtb3ZlLgoJKGVudW0gREVQU19BREpVU1RfUkVTVUxUKTogQWRkIG5ldyBjb25zdGFudCBERVBfTk9ERVAuICBGaXggY29tbWVudHMuCgkoc3BlY19pbmZvLCBoYWlmYV9yZWNvdmVyeV9ibG9ja193YXNfYWRkZWRfZHVyaW5nX3NjaGVkdWxpbmdfcCk6CglEZWNsYXJlIGdsb2JhbCB2YXJpYWJsZXMuCgkoZGVwc19wb29sc19hcmVfZW1wdHlfcCwgc2NoZWRfZnJlZV9kZXBzKTogRGVjbGFyZSBmdW5jdGlvbnMuCgkoYWRkX2ZvcndfZGVwLCBjb21wdXRlX2ZvcndhcmRfZGVwZW5kZW5jZXMpOiBSZW1vdmUgZGVjbGFyYXRpb25zLgoJKGFkZF9vcl91cGRhdGVfYmFja19kZXAsIGFkZF9vcl91cGRhdGVfYmFja19mb3J3X2RlcCk6IERpdHRvLgoJKGFkZF9iYWNrX2ZvcndfZGVwLCBkZWxldGVfYmFja19mb3J3X2RlcCk6IERpdHRvLgoJKGRlYnVnX2RzLCBzY2hlZF9pbnNuX2lzX2xlZ2l0aW1hdGVfZm9yX3NwZWN1bGF0aW9uX3ApOiBEZWNsYXJlCglmdW5jdGlvbnMuCgkoU0RfTElTVF9OT05FLCBTRF9MSVNUX0hBUkRfQkFDSywgU0RfTElTVF9TUEVDX0JBQ0ssIFNEX0xJU1RfRk9SVyk6CglOZXcgY29uc3RhbnRzLgoJKFNEX0xJU1RfUkVTX0JBQ0ssIFNEX0xJU1RfUkVTX0ZPUlcsIFNEX0xJU1RfQkFDSyk6IERpdHRvLgoJKHNkX2xpc3RfdHlwZXNfZGVmKTogTmV3IHR5cGVkZWYuCgkoc2RfbmV4dF9saXN0KTogRGVjbGFyZSBmdW5jdGlvbi4KCShzdHJ1Y3QgX3NkX2l0ZXJhdG9yKTogTmV3IHR5cGUuCgkoc2RfaXRlcmF0b3JfZGVmKTogTmV3IHR5cGVkZWYuCgkoc2RfaXRlcmF0b3Jfc3RhcnQsIHNkX2l0ZXJhdG9yX2NvbmQsIHNkX2l0ZXJhdG9yX25leHQpOiBOZXcgaW5saW5lCglmdW5jdGlvbnMuCgkoRk9SX0VBQ0hfREVQKTogTmV3IGN5Y2xlIHdyYXBwZXIuCgkoc2RfbGlzdHNfc2l6ZSwgc2RfbGlzdHNfZW1wdHlfcCwgc2RfaW5pdF9pbnNuLCBzZF9maW5pc2hfaW5zbik6CglEZWNsYXJlIGZ1bmN0aW9ucy4KCShzZF9maW5kX2RlcF9iZXR3ZWVuLCBzZF9hZGRfZGVwLCBzZF9hZGRfb3JfdXBkYXRlX2RlcCk6IERpdHRvLgoJKHNkX3Jlc29sdmVfZGVwLCBzZF9jb3B5X2JhY2tfZGVwcywgc2RfZGVsZXRlX2RlcCwgc2RfZGVidWdfbGlzdHMpOgoJRGl0dG8uCgoJKiBzY2hlZC1kZXBzLmMgKGluaXRfZGVwXzEpOiBNYWtlIGdsb2JhbC4KCShEVU1QX0RFUF9QUk8sIERVTVBfREVQX0NPTiwgRFVNUF9ERVBfU1RBVFVTLCBEVU1QX0RFUF9BTEwpOiBOZXcKCWNvbnN0YW50cy4KCShkdW1wX2RlcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZHVtcF9kZXBfZmxhZ3MpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHNkX2RlYnVnX2RlcCk6IE5ldyBmdW5jdGlvbi4KCShhZGRfdG9fZGVwc19saXN0LCByZW1vdmVfZnJvbV9kZXBzX2xpc3QpOiBVcGRhdGUgJ25fbGlua3MnIGZpZWxkIG9mCgl0aGUgbGlzdC4KCShtb3ZlX2RlcF9saW5rKTogVXNlIHJlbW92ZV9mcm9tX2RlcHNfbGlzdCAoKSwgaW5zdGVhZCBvZgoJZGV0YWNoX2RlcF9saW5rICgpLgoJKGRlcF9saW5rc19jb25zaXN0ZW50X3AsIGR1bXBfZGVwX2xpbmtzLCBkZWJ1Z19kZXBfbGlua3MpOiBSZW1vdmUuCgkoZGVwX2xpbmtfaXNfZGV0YWNoZWRfcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZGVwc19vYnN0YWNrLCBkbF9vYnN0YWNrLCBkbl9vYnN0YWNrKTogUmVtb3ZlLiAgVXNlIGRuX3Bvb2wsIGRsX3Bvb2wKCWluc3RlYWQuCgkoZG5fcG9vbCwgZGxfcG9vbCk6IE5ldyBhbGxvY19wb29scy4KCShkbl9wb29sX2RpZmYsIGRsX3Bvb2xfZGlmZik6IE5ldyBzdGF0aWMgdmFyaWFibGVzLgoJKGNyZWF0ZV9kZXBfbm9kZSwgZGVsZXRlX2RlcF9ub2RlKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjcmVhdGVfZGVwc19saXN0KTogTWFrZSBpdCBzdGF0aWMuICBVc2UgYWxsb2NfcG9vbCAnZGxfcG9vbCcuCgkoZGVwc19saXN0X2VtcHR5X3ApOiBNYWtlIGl0IHN0YXRpYy4gIFVzZSAnbl9saW5rcycgZmllbGQuCgkoZGVwc19wb29sc19hcmVfZW1wdHlfcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoYWxsb2NfZGVwc19saXN0LCBkZWxldGVfZGVwc19saXN0KTogUmVtb3ZlLgoJKGR1bXBfZGVwc19saXN0LCBkZWJ1Z19kZXBzX2xpc3QsIGFkZF9iYWNrX2RlcF90b19kZXBzX2xpc3QpOiBSZW1vdmUuCgkoZmluZF9saW5rX2J5X3Byb19pbl9kZXBzX2xpc3QsIGZpbmRfbGlua19ieV9jb25faW5fZGVwc19saXN0KTogRGl0dG8uCgkoY29weV9kZXBzX2xpc3RfY2hhbmdlX2Nvbik6IFJlbW92ZS4gIFVzZSBzZF9jb3B5X2JhY2tfZGVwcyAoKSBpbnN0ZWFkLgoJKGZvcndhcmRfZGVwZW5kZW5jeV9jYWNoZSk6IFJlbW92ZS4KCShtYXliZV9hZGRfb3JfdXBkYXRlX2JhY2tfZGVwXzEsIGFkZF9vcl91cGRhdGVfYmFja19kZXBfMSk6IFJlbW92ZQoJJ2JhY2snIGZyb20gdGhlIG5hbWVzLiAgQ2hhbmdlIHNpZ25hdHVyZSB0byB1c2UgZGVwX3QgaW5zdGVhZCBvZgoJZXF1aXZhbGVudCBxdWFkLgoJKGFkZF9iYWNrX2RlcCk6IERpdHRvLiAgTWFrZSBnbG9iYWwuCgkoY2hlY2tfZGVwX3N0YXR1cyk6IFJlbmFtZSB0byBjaGVja19kZXAgKCkuCgkoc2RfbmV4dF9saXN0LCBzZF9saXN0c19zaXplLCBzZF9saXN0c19lbXB0eV9wLCBzZF9pbml0X2luc24pOgoJTmV3IGZ1bmN0aW9ucy4KCShzZF9maW5pc2hfaW5zbik6IERpdHRvLgoJKHNkX2ZpbmRfZGVwX2JldHdlZW5fbm9fY2FjaGUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHNkX2ZpbmRfZGVwX2JldHdlZW4pOiBOZXcgZnVuY3Rpb24uCgkoYXNrX2RlcGVuZGVuY3lfY2FjaGVzLCBzZXRfZGVwZW5kZW5jeV9jYWNoZXMpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCSh1cGRhdGVfZGVwZW5kZW5jeV9jYWNoZXMsIGNoYW5nZV9zcGVjX2RlcF90b19oYXJkLCB1cGRhdGVfZGVwKTogRGl0dG8uCgkoYWRkX29yX3VwZGF0ZV9kZXBfMSk6IFNlcGFyYXRlIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IGludG8KCWFza19kZXBlbmRlbmN5X2NhY2hlcyAoKSwgdXBkYXRlX2RlcGVuZGVuY3lfY2FjaGVzICgpLAoJY2hhbmdlX3NwZWNfZGVwX3RvX2hhcmQgKCksIHVwZGF0ZV9kZXAgKCkuCgkoZ2V0X2JhY2tfYW5kX2ZvcndfbGlzdHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHNkX2FkZF9kZXApOiBTZXBhcmF0ZSBzZXR0aW5nIG9mIGRlcGVuZGVuY3kgY2FjaGVzIGludG8KCXNldF9kZXBlbmRlbmN5X2NhY2hlcyAoKS4KCShzZF9hZGRfb3JfdXBkYXRlX2RlcCwgc2RfcmVzb2x2ZV9kZXAsIHNkX2NvcHlfYmFja19kZXBzKToKCU5ldyBmdW5jdGlvbnMuCgkoc2RfZGVsZXRlX2RlcCk6IERpdHRvLgoJKERVTVBfTElTVFNfU0laRSwgRFVNUF9MSVNUU19ERVBTLCBEVU1QX0xJU1RTX0FMTCk6IE5ldyBjb25zdGFudHMuCgkoZHVtcF9saXN0cyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoc2RfZGVidWdfbGlzdHMpOiBOZXcgZGVidWcgZnVuY3Rpb24uCgkoZGVsZXRlX2FsbF9kZXBlbmRlbmNlcywgZml4dXBfc2NoZWRfZ3JvdXBzKTogVXBkYXRlIHRvIHVzZQoJc2RfKiBpbmZyYXN0cnVjdHVyZS4KCShzY2hlZF9hbmFseXplXzIpOiBDcmVhdGUgZGF0YS1zcGVjdWxhdGl2ZSBkZXBlbmRlbmN5IG9ubHkgaWYKCWRhdGEtc3BlY3VsYXRpb24gaXMgZW5hYmxlZC4KCShzY2hlZF9hbmFseXplX2luc24pOiBJZiBpbnNuIGNhbm5vdCBiZSBzcGVjdWxhdGl2ZSwgbWFrZSBhbGwgaXRzCglkZXBlbmRlbmNpZXMgbm9uLXNwZWN1bGF0aXZlLgoJKHNjaGVkX2FuYWx5emUpOiBVc2Ugc2RfaW5pdF9pbnNuICgpLgoJKGFkZF9mb3J3X2RlcCwgY29tcHV0ZV9mb3J3YXJkX2RlcGVuZGVuY2llcyk6IFJlbW92ZS4KCShkZWxldGVfZGVwX25vZGVzX2luX2JhY2tfZGVwcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoc2NoZWRfZnJlZV9kZXBzKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGVwZW5kZW5jeV9jYWNoZXMpOiBJbml0IGFsbG9jX3Bvb2xzLgoJKGV4dGVuZF9kZXBlZGVuY3lfY2FjaGVzKTogVXBkYXRlIGFmdGVyIHJlbW92aW5nIG9mCglmb3J3YXJkX2RlcGVuZGVuY3lfY2FjaGUuCgkoZnJlZV9kZXBlbmRlbmN5X2NhY2hlcyk6IERpdHRvLiAgRnJlZSBhbGxvY19wb29scy4KCShhZGp1c3RfYWRkX3NvcnRlZF9iYWNrX2RlcCwgYWRqdXN0X2JhY2tfYWRkX2ZvcndfZGVwKTogUmVtb3ZlLgoJKGRlbGV0ZV9mb3J3X2RlcCwgYWRkX29yX3VwZGF0ZV9iYWNrX2RlcCwgYWRkX29yX3VwZGF0ZV9iYWNrX2ZvcndfZGVwKToKCURpdHRvLgoJKGFkZF9iYWNrX2ZvcndfZGVwLCBkZWxldGVfYmFja19mb3J3X2RlcCk6IERpdHRvLgoJKGFkZF9kZXBlbmRlbmNlKTogVXNlIGluaXRfZGVwICgpLgoJKGdldF9kZXBfd2Vha18xKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShnZXRfZGVwX3dlYWspOiBNb3ZlIGxvZ2ljIHRvIGdldF9kZXBfd2Vha18xICgpLgoJKGR1bXBfZHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uIG1vdmVkIGZyb20gaGFpZmEtc2NoZWQuYzoKCWRlYnVnX3NwZWNfc3RhdHVzICgpLgoJKGRlYnVnX2RzKTogTmV3IGRlYnVnIGZ1bmN0aW9uLgoJKGNoZWNrX2RlcF9zdGF0dXMpOiBSZW5hbWUgdG8gY2hlY2tfZGVwICgpLiAgVXBkYXRlIHRvIGNoZWNrIHdob2xlCglkZXBlbmRlbmNpZXMuCgoJKiBoYWlmYS1zY2hlZC5jIChzcGVjX2luZm8pOiBNYWtlIGdsb2JhbC4KCShhZGRlZF9yZWNvdmVyeV9ibG9ja19wKTogUmVuYW1lIHRvCgknaGFpZmFfcmVjb3ZlcnlfYmxvY2tfd2FzX2FkZGVkX2R1cmluZ19jdXJyZW50X3NjaGVkdWxlX2Jsb2NrX3AnLgoJKGhhaWZhX3JlY292ZXJ5X2Jsb2NrX3dhc19hZGRlZF9kdXJpbmdfc2NoZWR1bGluZ19wKTogTmV3IHZhcmlhYmxlLgoJKGRlcF9jb3N0LCBwcmlvcml0eSwgcmFua19mb3Jfc2NoZWR1bGUsIHNjaGVkdWxlX2luc24pOiBVcGRhdGUKCXRvIHVzZSBuZXcgaW50ZXJmYWNlcy4KCShva19mb3JfZWFybHlfcXVldWVfcmVtb3ZhbCk6IERpdHRvLgoJKHNjaGVkdWxlX2Jsb2NrKTogSW5pdGlhbGl6ZSBsb2dpY2FsIHVpZHMgb2YgaW5zbnMgZW1pdHRlZCBieSB0aGUKCXRhcmdldC4KCShzY2hlZF9pbml0KTogSW5pdGlhbGl6ZSBuZXcgdmFyaWFibGUuCgkoZml4X2ludGVyX3RpY2ssIHRyeV9yZWFkeSwgZml4X3RpY2tfcmVhZHkpOiBVcGRhdGUgdG8gdXNlIG5ldwoJaW50ZXJmYWNlcy4KCShleHRlbmRfZ2xvYmFsKTogSW5pdGlhbGl6ZSBpbnNuIGRhdGEuCgkoaW5pdF9oX2lfZCk6IFJlbW92ZSBjb2RlIHRoYXQgaXMgbm93IGhhbmRsZWQgaW4gc2RfaW5pdF9pbnNuICgpLgoJKHByb2Nlc3NfaW5zbl9mb3J3X2RlcHNfYmVfaW5fc3BlYyk6IENoYW5nZSBzaWduYXR1cmUuICBVcGRhdGUgdG8gdXNlCgluZXcgaW50ZXJmYWNlcy4KCShhZGRfdG9fc3BlY3VsYXRpdmVfYmxvY2spOiBVcGRhdGUgdG8gdXNlIG5ldyBpbnRlcmZhY2VzLgoJKGNyZWF0ZV9yZWNvdmVyeV9ibG9jayk6IFNldCBuZXcgdmFyaWFibGVzLgoJKGNyZWF0ZV9jaGVja19ibG9ja190d2luLCBmaXhfcmVjb3ZlcnlfZGVwcyk6IFVwZGF0ZSB0byB1c2UgbmV3CglpbnRlcmZhY2VzLgoJKHNjaGVkX2luc25faXNfbGVnaXRpbWF0ZV9mb3Jfc3BlY3VsYXRpb25fcCk6IE5ldyBmdW5jdGlvbi4KCShzcGVjdWxhdGVfaW5zbik6IE1vdmUgY2hlY2tpbmcgbG9naWMgdG8KCXNjaGVkX2luc25faXNfbGVnaXRpbWF0ZV9mb3Jfc3BlY3VsYXRpb25fcCAoKS4KCShzY2hlZF9yZW1vdmVfaW5zbik6IEZpbmFsaXplIHNjaGVkLWRlcHMgaW5mb3JtYXRpb24gb2YgaW5zdHJ1Y3Rpb24uCgkoY2xlYXJfcHJpb3JpdGllcywgYWRkX2p1bXBfZGVwZW5kZW5jaWVzKTogVXBkYXRlIHRvIHVzZSBuZXcKCWludGVyZmFjZXMuCgkoZGVidWdfc3BlY19zdGF0dXMpOiBSZW5hbWUgdG8gZHVtcF9kcyAoKSBhbmQgbW92ZSB0byBzY2hlZC1kZXBzLmMuCgkKCSogc2NoZWQtcmduLmMgKHNldF9zcGVjX2ZlZCwgZmluZF9jb25kaXRpb25hbF9wcm90ZWN0aW9uKTogVXBkYXRlCgl0byB1c2UgbmV3IGludGVyZmFjZXMuCgkoaXNfY29uZGl0aW9uYWxseV9wcm90ZWN0ZWQsIGlzX3BmcmVlLCBpc19wcmlza3kpIERpdHRvLgoJKG5ld19yZWFkeSk6IFRyeSB0byB1c2UgY29udHJvbCBzcGVjdWxhdGlvbiBvbmx5IGlmIGl0IGlzIGF2YWlsYWJsZS4KCShhZGRfYnJhbmNoX2RlcGVuZGVuY2VzKTogVXBkYXRlIHRvIHVzZSBuZXcgaW50ZXJmYWNlcy4KCShjb21wdXRlX2Jsb2NrX2JhY2t3YXJkX2RlcGVuZGVuY2VzKTogUmVuYW1lIHRvCgljb21wdXRlX2Jsb2NrX2RlcGVuZGVuY2VzICgpLiAgQ2FsbAoJdGFyZ2V0bS5zY2hlZC5kZXBlbmRlbmNpZXNfZXZhbHVhdGlvbl9ob29rICgpLgoJKGZyZWVfYmxvY2tfZGVwZW5kZW5jaWVzKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShkZWJ1Z19kZXBlbmRlbmNpZXMpOiBVcGRhdGUgdG8gdXNlIG5ldyBpbnRlcmZhY2VzLgoJKHNjaGVkdWxlX3JlZ2lvbik6IFJlbW92ZSBzZXBhcmF0ZSBjb21wdXRhdGlvbiBvZiBmb3J3YXJkIGRlcGVuZGVuY2llcy4KCU1vdmUgY2FsbCBvZiB0YXJnZXRtLnNjaGVkLmRlcGVuZGVuY2llc19ldmFsdWF0aW9uX2hvb2sgKCkgdG8KCWNvbXB1dGVfYmxvY2tfZGVwZW5kZW5jZXMgKCkuICBGcmVlIGRlcGVuZGVuY2llcyBhdCB0aGUgZW5kIG9mCglzY2hlZHVsaW5nIHRoZSByZWdpb24uCgoJKiBzY2hlZC1lYmIuYyAoZWFybGllc3RfYmxvY2tfd2l0aF9zaW1pbGlhcl9sb2FkKTogVXBkYXRlIHRvIHVzZQoJbmV3IGludGVyZmFjZXMuCgkoYWRkX2RlcHNfZm9yX3Jpc2t5X2luc25zKTogRGl0dG8uCgkoc2NoZWR1bGVfZWJiKTogUmVtb3ZlIHNlcGFyYXRlIGNvbXB1dGF0aW9uIG9mIGZvcndhcmQgZGVwZW5kZW5jaWVzLgoJRnJlZSBkZXBlbmRlbmNpZXMgYXQgdGhlIGVuZCBvZglzY2hlZHVsaW5nIHRoZSBlYmIuCgoJKiBkZGcuYyAoY3JlYXRlX2RkZ19kZXBlbmRlbmNlKTogVXBkYXRlIHRvIHVzZSBuZXcgaW50ZXJmYWNlcy4KCShidWlsZF9pbnRyYV9sb29wX2RlcHMpOiBEaXR0by4gIFJlbW92ZSBzZXBhcmF0ZSBjb21wdXRhdGlvbiBvZgoJZm9yd2FyZCBkZXBlbmRlbmNpZXMuICBGcmVlIHNjaGVkLWRlcHMgZGVwZW5kZW5jaWVzLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2RlcGVuZGVuY2llc19ldmFsdWF0aW9uX2hvb2spOiBVcGRhdGUKCXRvIHVzZSBuZXcgaW50ZXJmYWNlcy4KCShpYTY0X2RmYV9uZXdfY3ljbGUsIGlhNjRfZ2VuX2NoZWNrKTogRGl0dG8uCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaXNfY29zdGx5X2RlcGVuZGVuY2UpOiBVcGRhdGUgdG8gdXNlCgluZXcgaW50ZXJmYWNlcy4KCShpc19jb3N0bHlfZ3JvdXApOiBEaXR0by4KCjIwMDctMDgtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFsaWFzLmMgKHJ0eF9lcXVhbF9mb3JfbWVtcmVmX3ApOiBDb25zdGlmeS4KCSogYmFzaWMtYmxvY2suaCAoY29uc3RfZWRnZSwgY29uc3RfYmFzaWNfYmxvY2spOiBOZXcuCgkocmVnX3NldF90b19oYXJkX3JlZ19zZXQsIGRmc19lbnVtZXJhdGVfZnJvbSwgc2luZ2xlX3N1Y2NfcCwKCXNpbmdsZV9wcmVkX3AsIHNpbmdsZV9zdWNjX2VkZ2UsIHNpbmdsZV9wcmVkX2VkZ2UsIHNpbmdsZV9zdWNjLAoJc2luZ2xlX3ByZWQsIG1heWJlX2hvdF9iYl9wLCBwcm9iYWJseV9jb2xkX2JiX3AsCglwcm9iYWJseV9uZXZlcl9leGVjdXRlZF9iYl9wLCBlZGdlX3Byb2JhYmlsaXR5X3JlbGlhYmxlX3AsCglicl9wcm9iX25vdGVfcmVsaWFibGVfcCwgZm9yd2FyZGVyX2Jsb2NrX3AsIGZsb3dfbm9kZXNfcHJpbnQsCglpbnNpZGVfYmFzaWNfYmxvY2tfcCwgY29udHJvbF9mbG93X2luc25fcCwgZG9taW5hdGVkX2J5X3ApOgoJTGlrZXdpc2UuCgkqIGJiLXJlb3JkZXIuYyAoYmV0dGVyX2VkZ2VfcCwgcHVzaF90b19uZXh0X3JvdW5kX3ApOiBMaWtld2lzZS4KCSogYnQtbG9hZC5jIChiYXNpY19ibG9ja19mcmVxLCBpbnNuX3NldHNfYnRyX3AsIGNhbl9tb3ZlX3VwKToKCUxpa2V3aXNlLgoJKiBjZmdhbmFsLmMgKGZsb3dfYWN0aXZlX2luc25fcCwgZm9yd2FyZGVyX2Jsb2NrX3AsCglmbG93X25vZGVzX3ByaW50LCBkZnNfZW51bWVyYXRlX2Zyb20pOiBMaWtld2lzZS4KCSogY2ZnYnVpbGQuYyAoY291bnRfYmFzaWNfYmxvY2tzLCBpbnNpZGVfYmFzaWNfYmxvY2tfcCwKCWNvbnRyb2xfZmxvd19pbnNuX3AsIGNvdW50X2Jhc2ljX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKiBjZmdsb29wLmMgKGZsb3dfYmJfaW5zaWRlX2xvb3BfcCwgZ2xiX2VudW1fcCwKCWdldF9sb29wX2JvZHlfd2l0aF9zaXplLCBsb29wX2V4aXRfZWRnZV9wKTogTGlrZXdpc2UuCgkqIGNmZ2xvb3AuaCAoZmxvd19iYl9pbnNpZGVfbG9vcF9wLCBudW1fbG9vcF9pbnNucywKCWF2ZXJhZ2VfbnVtX2xvb3BfaW5zbnMsIGxvb3BfZXhpdF9lZGdlX3AsCglqdXN0X29uY2VfZWFjaF9pdGVyYXRpb25fcCwgY2FuX2R1cGxpY2F0ZV9sb29wX3ApOiBMaWtld2lzZS4KCSogY2ZnbG9vcGFuYWwuYyAoanVzdF9vbmNlX2VhY2hfaXRlcmF0aW9uX3AsIG51bV9sb29wX2luc25zLAoJYXZlcmFnZV9udW1fbG9vcF9pbnNucywgc2VxX2Nvc3QpOiBMaWtld2lzZS4KCSogY2ZnbG9vcG1hbmlwLmMgKHJwZV9lbnVtX3AsIGNhbl9kdXBsaWNhdGVfbG9vcF9wKTogTGlrZXdpc2UuCgkqIGRvbWluYW5jZS5jIChkb21pbmF0ZWRfYnlfcCk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jICh2YWxpZGF0ZV9zdWJyZWcpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGNhbl90aHJvd19pbnRlcm5hbCwgY2FuX3Rocm93X2V4dGVybmFsKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5oIChjYW5fdGhyb3dfaW50ZXJuYWwsIGNhbl90aHJvd19leHRlcm5hbCk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKGdjc2VfY29uc3RhbnRfcCwgb3Byc191bmNoYW5nZWRfcCwgb3Byc19hbnRpY2lwYXRhYmxlX3AsCglvcHJzX2F2YWlsYWJsZV9wLCBoYXNoX2V4cHIsIGV4cHJfZXF1aXZfcCwgb3Byc19ub3Rfc2V0X3AsCgljb21wdXRlX3RyYW5zcCwgbG9hZF9raWxsZWRfaW5fYmxvY2tfcCwgcmVnX2tpbGxlZF9vbl9lZGdlLAoJc2ltcGxlX21lbSwgc3RvcmVfb3BzX29rLCBsb2FkX2tpbGxzX3N0b3JlLCBmaW5kX2xvYWRzLAoJc3RvcmVfa2lsbGVkX2luX2luc24sIHN0b3JlX2tpbGxlZF9hZnRlciwgc3RvcmVfa2lsbGVkX2JlZm9yZSwKCWdjc2VfbWVtX29wZXJhbmQsIGltcGxpY2l0X3NldF9jb25kX3AsIHN0b3JlX2tpbGxlZF9pbl9wYXQpOgoJTGlrZXdpc2UuCgkqIGlmY3Z0LmMgKGNvdW50X2JiX2luc25zLCBjaGVhcF9iYl9ydHhfY29zdF9wLCBub2NlX29wZXJhbmRfb2ssCglub2NlX21lbV93cml0ZV9tYXlfdHJhcF9vcl9mYXVsdF9wKTogTGlrZXdpc2UuCgkqIHBvaW50ZXItc2V0LmMgKHBvaW50ZXJfc2V0X2NvbnRhaW5zLCBwb2ludGVyX21hcF9jb250YWlucyk6CglMaWtld2lzZS4KCSogcG9pbnRlci1zZXQuaCAocG9pbnRlcl9zZXRfY29udGFpbnMsIHBvaW50ZXJfbWFwX2NvbnRhaW5zKToKCUxpa2V3aXNlLgoJKiBwcmVkaWN0LmMgKGNhbl9wcmVkaWN0X2luc25fcCwgbWF5YmVfaG90X2JiX3AsCglwcm9iYWJseV9jb2xkX2JiX3AsIHByb2JhYmx5X25ldmVyX2V4ZWN1dGVkX2JiX3AsCgllZGdlX3Byb2JhYmlsaXR5X3JlbGlhYmxlX3AsIGJyX3Byb2Jfbm90ZV9yZWxpYWJsZV9wLAoJY2FuX3ByZWRpY3RfaW5zbl9wKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlZ19zZXRfdG9faGFyZF9yZWdfc2V0KTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKHJldHVybl9pbnNuX3ApOiBMaWtld2lzZS4KCSogcnRsLmggKHJlZ19zZXRfYmV0d2Vlbl9wLCByZWdfc2V0X3AsIHZhbGlkYXRlX3N1YnJlZyk6CglMaWtld2lzZS4KCSogcnRsYW5hbC5jIChyZWdfc2V0X2JldHdlZW5fcCwgcmVnX3NldF9wKTogTGlrZXdpc2UuCgkqIHRyYWNlci5jIChjb3VudF9pbnNucywgaWdub3JlX2JiX3AsIGJldHRlcl9wKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9naW1wbGVfdW5hcnlfZXhwciwgdmVyaWZ5X2dpbXBsZV9iaW5hcnlfZXhwciwKCXZlcmlmeV9naW1wbGVfbW9kaWZ5X3N0bXQpOiBMaWtld2lzZS4KCSogdHJlZS1jaHJlYy5jIChpc19ub3RfY29uc3RhbnRfZXZvbHV0aW9uLAoJaXNfbXVsdGl2YXJpYXRlX2NocmVjX3JlYywgaXNfbXVsdGl2YXJpYXRlX2NocmVjLAoJY2hyZWNfY29udGFpbnNfc3ltYm9scywgY2hyZWNfY29udGFpbnNfdW5kZXRlcm1pbmVkLAoJdHJlZV9jb250YWluc19jaHJlY3MsIGV2b2x1dGlvbl9mdW5jdGlvbl9pc19hZmZpbmVfbXVsdGl2YXJpYXRlX3AsCglldm9sdXRpb25fZnVuY3Rpb25faXNfdW5pdmFyaWF0ZV9wLCBhdm9pZF9hcml0aG1ldGljc19pbl90eXBlX3AsCgllcV9ldm9sdXRpb25zX3AsIHNjZXZfZGlyZWN0aW9uKTogTGlrZXdpc2UuCgkqIHRyZWUtY2hyZWMuaCAoYXV0b21hdGljYWxseV9nZW5lcmF0ZWRfY2hyZWNfcCwgdHJlZV9pc19jaHJlYywKCWVxX2V2b2x1dGlvbnNfcCwgaXNfbXVsdGl2YXJpYXRlX2NocmVjLCBjaHJlY19jb250YWluc19zeW1ib2xzLAoJY2hyZWNfY29udGFpbnNfc3ltYm9sc19kZWZpbmVkX2luX2xvb3AsCgljaHJlY19jb250YWluc191bmRldGVybWluZWQsIHRyZWVfY29udGFpbnNfY2hyZWNzLAoJZXZvbHV0aW9uX2Z1bmN0aW9uX2lzX2FmZmluZV9tdWx0aXZhcmlhdGVfcCwKCWV2b2x1dGlvbl9mdW5jdGlvbl9pc191bml2YXJpYXRlX3AsIGNocmVjX3plcm9wLAoJZXZvbHV0aW9uX2Z1bmN0aW9uX2lzX2NvbnN0YW50X3AsIGV2b2x1dGlvbl9mdW5jdGlvbl9pc19hZmZpbmVfcCwKCWV2b2x1dGlvbl9mdW5jdGlvbl9pc19hZmZpbmVfb3JfY29uc3RhbnRfcCwKCXRyZWVfZG9lc19ub3RfY29udGFpbl9jaHJlY3MsIGNocmVjX3R5cGUpOiBMaWtld2lzZS4KCSogdHJlZS1kYXRhLXJlZi5jICh0cmVlX2ZvbGRfZGl2aWRlc19wLAoJb2JqZWN0X2FkZHJlc3NfaW52YXJpYW50X2luX2xvb3BfcCwgZHJfbWF5X2FsaWFzX3AsCgl6aXZfc3Vic2NyaXB0X3AsIHNpdl9zdWJzY3JpcHRfcCwgZ2NkX29mX3N0ZXBzX21heV9kaXZpZGVfcCwKCXNhbWVfYWNjZXNzX2Z1bmN0aW9ucywgY29uc3RhbnRfYWNjZXNzX2Z1bmN0aW9ucywKCWFjY2Vzc19mdW5jdGlvbnNfYXJlX2FmZmluZV9vcl9jb25zdGFudF9wLCBmaW5kX3ZlcnRleF9mb3Jfc3RtdCk6CglMaWtld2lzZS4KCSogdHJlZS1mbG93LmggKHNjZXZfZGlyZWN0aW9uKTogTGlrZXdpc2UuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKGlkZW50aWNhbF9jb3BpZXNfcCwgaWRlbnRpY2FsX3N0bXRfbGlzdHNfcCk6CglMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAob3BfcHJpbyk6IExpa2V3aXNlLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoY2hyZWNfY29udGFpbnNfc3ltYm9sc19kZWZpbmVkX2luX2xvb3AsCglhbmFseXphYmxlX2NvbmRpdGlvbiwgYmFja2VkZ2VfcGhpX2FyZ19wKTogTGlrZXdpc2UuCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5oIChnZXRfY2hyZWNfbG9vcCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfbmFtZV9kZWNsLCBvcGVyYW5kX2J1aWxkX2NtcCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAoZGJkc19jb250aW51ZV9lbnVtZXJhdGlvbl9wKToKCUxpa2V3aXNlLgoKMjAwNy0wOC0xMyAgRGFuIEhpcHNjaG1hbiAgPGRzaEBnb29nbGUuY29tPgoKCVBSIGMvMzI5NTMKCSogYy1mb3JtYXQuYyAoY2hlY2tfZm9ybWF0X2FyZyk6IE1vdmUgY2hlY2sgZm9yIHplcm8tbGVuZ3RoCglmb3JtYXQgc3RyaW5ncyBiZWxvdyB0aGUgY2hlY2sgZm9yIHVudGVybWluYXRlZCBzdHJpbmdzLgoKMjAwNy0wOC0xMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAZ21haWwuY29tPgoKCVBSIEMvMzA0MjcKCSogYy10eXBlY2suYyAoYnVpbGRfdW5hcnlfb3AgPGNhc2UgQklUX05PVF9FWFBSPik6IFJlamVjdCB2ZWN0b3IgZmxvYXQKCXR5cGVzLgoKMjAwNy0wOC0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtX25lb24uaDogUmV2ZXJ0IEdQTHYzIHBhdGNoIHRvIHRoaXMgZmlsZS4KCjIwMDctMDgtMTIgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Znhjb3VkZXJ0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMzI4NjAKCSogYy1mb3JtYXQuYyAoZ2NjX2dmY19sZW5ndGhfc3BlY3MpOiBOZXcgYXJyYXkuCgkoZ2NjX2dmY19jaGFyX3RhYmxlKTogQWRkIHVuc2lnbmVkIHNwZWNpZmllciwgYW5kIHJlZmVyZW5jZXMgdG8KCXRoZSBsIGxlbmd0aCBtb2RpZmllci4KCShmb3JtYXRfdHlwZXNfb3JpZyk6IFVzZSB0aGUgbmV3IGdjY19nZmNfbGVuZ3RoX3NwZWNzLgoKMjAwNy0wOC0xMiAgU2EgTGl1ICA8c2FsaXVAZGUuaWJtLmNvbT4KCgkqIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IFJlbGluayB0aGUgaW5zbnMgd2l0aCBSRUdfTElCQ0FMTCBub3RlCglhbmQgd2l0aCBSRUdfUkVUVkFMIG5vdGUgYWZ0ZXIgc3BsaXQuCgoyMDA3LTA4LTExICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NjaGVkX3Jlb3JkZXIpOiBNYXJrIGN5Y2xlIHBhcmFtZXRlcgoJYXMgQVRUUklCVVRFX1VOVVNFRC4KCjIwMDctMDgtMTEgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCSAgICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKENDMV9DUFVfU1BFQyk6IERlZmluZSBhcyBlbXB0eSBzdHJpbmcgaWYKCUhBVkVfTE9DQUxfQ1BVX0RFVEVDVCBub3QgZGVmaW5lZC4KCjIwMDctMDgtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAocmVjb3JkX2NkdG9yX2ZuKTogRGVjbGFyZSBhbGwgY2R0b3JzIGFsd2F5cyBpbmxpbmVkLgoJKGNncmFwaF9wcm9jZXNzX25ld19mdW5jdGlvbnMpOiBIb25vciBwcmV2aW91cyB2YWx1ZSBvZgoJZGlzcmVnYXJkX2lubGluZV9saW1pdHMuCgkqIGlwYS1pbmxpbmUuYyAoY29tcHV0ZV9pbmxpbmVfcGFyYW1ldGVycyk6IExpa2V3aXNlLgoKMjAwNy0wOC0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGFsaWFzLmggKGFsaWFzX3NldF90eXBlKTogRGVmaW5lIG5ldyB0eXBlLgoJKEFMSUFTX1NFVF9NRU1PUllfQkFSUklFUik6IFVzZSBpdC4KCSogcnRsLmg6IEluY2x1ZGUgYWxpYXMuaC4KCShzdHJ1Y3QgbWVtX2F0dHJzKTogVXNlIGFsaWFzX3NldF90eXBlLgoJKiB0cmVlLmg6IEluY2x1ZGUgYWxpYXMuaAoJKHN0cnVjdCB0cmVlX3R5cGUpOiBVc2UgYWxpYXNfc2V0X3R5cGUuCgkoc3RydWN0IHRyZWVfc3RydWN0X2ZpZWxkX3RhZyk6IExpa2V3aXNlLgoJKHN0cnVjdCB0cmVlX2RlY2xfY29tbW9uKTogTGlrZXdpc2UuCgkqIGFsaWFzLmMgKHN0cnVjdCBhbGlhc19zZXRfZW50cnkpOiBVc2UgYWxpYXNfc2V0X3R5cGUuCgkoZ2V0X2FsaWFzX3NldF9lbnRyeSwgYWxpYXNfc2V0X3N1YnNldF9vZik6IExpa2V3aXNlLgoJKGFsaWFzX3NldHNfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKGFsaWFzX3NldHNfbXVzdF9jb25mbGljdF9wKTogTGlrZXdpc2UuCgkob2JqZWN0c19tdXN0X2NvbmZsaWN0X3ApOiBMaWtld2lzZS4KCShnZXRfYWxpYXNfc2V0LCBuZXdfYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkocmVjb3JkX2FsaWFzX3N1YnNldCwgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzKTogTGlrZXdpc2UuCgkodmFyYXJnc19zZXQsIGZyYW1lX3NldCk6IENoYW5nZSB0byBhbGlhc19zZXRfdHlwZS4KCShnZXRfdmFyYXJnc19hbGlhc19zZXQpOiBVc2UgYWxpYXNfc2V0X3R5cGUuCgkoZ2V0X2ZyYW1lX2FsaWFzX3NldCk6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChzZXRqbXBfYWxpYXNfc2V0KTogQ2hhbmdlIHRvIGFsaWFzX3NldF90eXBlLgoJKiBkc2UuYyAoc3RydWN0IHN0b3JlX2luZm8pOiBVc2UgYWxpYXNfc2V0X3R5cGUuCgkoc3RydWN0IHJlYWRfaW5mbywgc3RydWN0IGNsZWFyX2FsaWFzX21vZGVfaG9sZGVyKTogTGlrZXdpc2UuCgkoY2xlYXJfYWxpYXNfc2V0X2xvb2t1cCwgY2Fub25fYWRkcmVzcyk6IExpa2V3aXNlLgoJKHJlY29yZF9zdG9yZSwgY2hlY2tfbWVtX3JlYWRfcnR4KTogTGlrZXdpc2UuCgkoZHNlX3JlY29yZF9zaW5nbGV0b25fYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkoZHNlX2ludmFsaWRhdGVfc2luZ2xldG9uX2FsaWFzX3NldCk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChnZXRfbWVtX2F0dHJzKTogTGlrZXdpc2UuCgkoc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcyk6IExpa2V3aXNlLgoJKHNldF9tZW1fYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3JfZmllbGQsIHN0b3JlX2ZpZWxkKTogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmMgKHN0cnVjdCBnaW1wbGlmeV9pbml0X2N0b3JfcHJlZXZhbF9kYXRhKTogTGlrZXdpc2UuCgkqIGxhbmdob29rcy5jIChsaGRfZ2V0X2FsaWFzX3NldCk6IExpa2V3aXNlLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9nZXRfYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoYWx0ZXJfcmVnKTogTGlrZXdpc2UuCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgZmllbGRvZmYpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoc3RydWN0IGFsaWFzX21hcF9kKTogTGlrZXdpc2UuCgkobWF5X2FsaWFzX3AsIGdldF9zbXRfZm9yLCBjcmVhdGVfc2Z0KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWFsaWFzLXdhcm5pbmdzLmMgKG5vbnN0YW5kYXJkX2FsaWFzX3R5cGVzX3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoc2V0X3VpZHNfaW5fcHRzZXQpOiBMaWtld2lzZS4KCShtZXJnZV9zbXRzX2ludG8pOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGNvbnN0X2FsaWFzX3NldCk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChzdHJpY3RfYWxpYXNpbmdfd2FybmluZyk6IExpa2V3aXNlLgoJKGNfY29tbW9uX2dldF9hbGlhc19zZXQpOiBMaWtld2lzZS4KCSogZHNlLmggKGRzZV9yZWNvcmRfc2luZ2xldG9uX2FsaWFzX3NldCk6IFVwZGF0ZSBkZWNsYXJhdGlvbi4KCShkc2VfaW52YWxpZGF0ZV9zaW5nbGV0b25fYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmggKHNldF9tZW1fYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmggKGNfY29tbW9uX2dldF9hbGlhc19zZXQpOiBMaWtld2lzZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IENhc3QgTUVNX0FMSUFTX1NFVCB3aGVuIHByaW50aW5nIGl0LgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3NyX2FsaWFzX3NldCk6IENoYW5nZSB0bwoJYWxpYXNfc2V0X3R5cGUuCgkoYWxwaGFfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IFVzZSBhbGlhc19zZXRfdHlwZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChzZXR1cF9pbmNvbWluZ192YXJhcmdzXzY0KTogVXNlCglhbGlhc19zZXRfdHlwZS4KCShzZXR1cF9pbmNvbWluZ192YXJhcmdzX21zXzY0KTogTGlrZXdpc2UuCgkoaXg4Nl9HT1RfYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9idWlsdGluX3NhdmVyZWdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBMaWtld2lzZS4KCShzZXQpOiBDaGFuZ2UgdG8gYWxpYXNfc2V0X3R5cGUuCgkoZ2V0X1RPQ19hbGlhc19zZXQpOiBVc2UgYWxpYXNfc2V0X3R5cGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChnZXRfVE9DX2FsaWFzX3NldCk6IFVwZGF0ZQoJZGVjbGFyYXRpb24uCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9idWlsdGluX3NhdmVyZWdzKTogVXNlIGFsaWFzX3NldF90eXBlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfc3JfYWxpYXNfc2V0KTogQ2hhbmdlIHRvCglhbGlhc19zZXRfdHlwZS4KCShzdHJ1Y3RfdmFsdWVfYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluIChHVEZJTEVTKTogQWRkICQoc3JjZGlyKS9hbGlhcy5oLgoKMjAwNy0wOC0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvdnh3b3Jrcy1kdW1teS5oIChUQVJHRVRfVlhXT1JLUyk6IERlZmluZS4KCSogY29uZmlnL3Z4d29ya3MuaCAoVEFSR0VUX1ZYV09SS1MpOiBPdmVycmlkZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IERvbid0IGRlZmluZQoJIm1pcHMiIGlmIFRBUkdFVF9WWFdPUktTLgoKMjAwNy0wOC0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChhdm9pZF9saWtlbHlfc3BpbGxlZF9yZWcpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2NhbGwpOiBVc2UgaXQuCgoyMDA3LTA4LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBBZGQgT1BUX1djYXN0X3F1YWwgdG8gd2FybmluZ3MuCgoyMDA3LTA4LTEwICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIGNvbmZpZy9taXBzL3ByZWRpY2F0ZXMubWQgKGNvbnN0X2NhbGxfaW5zbl9vcGVyYW5kKTogSW52b2tlCglTWU1CT0xfUkVGX0xPTkdfQ0FMTF9QIG9ubHkgb24gU1lNQk9MX1JFRnMuCgoyMDA3LTA4LTEwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzMzMDQyCgkqIGNvbmZpZy9yczYwMDAvZHJpdmVyLXJzNjAwMC5jOiBJbmNsdWRlIGxpbmsuaC4KCVVzZSBFbGZXIGluc3RlYWQgb2Ygd29yZHNpemUtc3BlY2lmIHR5cGVkZWYuCgoyMDA3LTA4LTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaCAoQ09OU1RfQ0FTVCk6IE5ldy4KCSogYy1kZWNsLmMgKGNfbWFrZV9mbmFtZV9kZWNsKTogVXNlIGl0LgoJKiBjLWxleC5jIChjYl9pZGVudCwgbGV4X3N0cmluZyk6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChmcmVlX2FsbF90YWdnZWRfdHVfc2Vlbl91cF90byk6IExpa2V3aXNlLgoJKiBnY2MuYyAoc2V0X3NwZWMsIHJlYWRfc3BlY3MsIGZvcl9lYWNoX3BhdGgsIGV4ZWN1dGUsIGRvX3NwZWNfMSwKCWdpdmVfc3dpdGNoLCBzZXRfbXVsdGlsaWJfZGlyKTogTGlrZXdpc2UuCgkqIGdlbmd0eXBlLXBhcnNlLmMgKHN0cmluZ19zZXEsIHR5cGVkZWZfbmFtZSk6IExpa2V3aXNlLgoJKiBwYXNzZXMuYyAoZXhlY3V0ZV9vbmVfcGFzcyk6IExpa2V3aXNlLgoJKiBwcmVmaXguYyAodXBkYXRlX3BhdGgpOiBMaWtld2lzZS4KCSogcHJldHR5LXByaW50LmMgKHBwX2Jhc2VfZGVzdHJveV9wcmVmaXgpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9zdHJpbmcpOiBMaWtld2lzZS4KCjIwMDctMDgtMTAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoaXNfZXhlY19zdG10KTogUmVtb3ZlLgoJKGlzX2xhYmVsX3N0bXQpOiBSZW1vdmUuCgkqIHRyZWUtZmxvdy5oOiBSZW1vdmUgcHJvdG90eXBlcyBmb3IgaXNfZXhlY19zdG10LCBnZXRfZmlsZW5hbWUsIGFuZAoJaXNfbGFiZWxfc3RtdC4KCjIwMDctMDgtMTAgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBsb3dlci1zdWJyZWcuYyAocmVzb2x2ZV9zaGlmdF96ZXh0KTogRG9uJ3QgYWRqdXN0CglzcmNfcmVnX251bSBmb3Igd29yZG1vZGUgb3BlcmFuZHMuCgoyMDA3LTA4LTEwICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfU0NIRURfSU5JVCk6IERlZmluZS4KCShUQVJHRVRfU0NIRURfUkVPUkRFUjIpOiBEZWZpbmUuCgkobWlwc19tYXliZV9zd2FwX3JlYWR5KTogTmV3LgoJKG1pcHNfbGFzdF83NGtfYWdlbl9pbnNuKTogTmV3LgoJKG1pcHNfNzRrX2FnZW5faW5pdCk6IE5ldy4KCShtaXBzXzc0a19hZ2VuX3Jlb3JkZXIpOiBOZXcgZnVuY3Rpb24gdG8gZ3JvdXAgbG9hZHMgYW5kIHN0b3JlcwoJaW4gdGhlIHJlYWR5IHF1ZXVlLgoJKG1pcHNfc2NoZWRfaW5pdCk6IE5ldy4gIAoJKG1pcHNfc2NoZWRfcmVvcmRlcik6IERvbid0IGRvIGluaXRpYWxpemF0aW9uIGhlcmUuICBDYWxsCgltaXBzXzc0a19hZ2VuX3Jlb3JkZXIuCgkobWlwc192YXJpYWJsZV9pc3N1ZSk6IENhbGwgbWlwc183NGtfYWdlbl9pbml0LgoKMjAwNy0wOC0xMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogdHJlZS1mbG93LWlubGluZS5oIChnZXRfZmlsZW5hbWUpOiBSZW1vdmUuCgoyMDA3LTA4LTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfYWRkcmVzc19pbnNucyk6IEFkZCBhIGJvb2xlYW4KCWFyZ3VtZW50LgoJKG1pcHNfZmV0Y2hfaW5zbnMpOiBEZWxldGUgaW4gZmF2b3Igb2YuLi4KCShtaXBzX2xvYWRfc3RvcmVfaW5zbnMpOiAuLi50aGlzIG5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2FkZHJlc3NfaW5zbnMpOiBBZGQgYSBib29sZWFuIGFyZ3VtZW50Cgl0byBzYXkgd2hldGhlciBtdWx0aXdvcmQgbW92ZXMgX21pZ2h0XyBiZSBzcGxpdC4KCShtaXBzX2ZldGNoX2luc25zKTogRGVsZXRlIGluIGZhdm9yIG9mLi4uCgkobWlwc19sb2FkX3N0b3JlX2luc25zKTogLi4udGhpcyBuZXcgZnVuY3Rpb24uCgkobWlwc19ydHhfY29zdHMpOiBVcGRhdGUgdGhlIGNhbGwgdG8gbWlwc19hZGRyZXNzX2luc25zLgoJKG1pcHNfYWRkcmVzc19jb3N0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGxlbmd0aCk6IFVzZSBtaXBzX2xvYWRfc3RvcmVfaW5zbnMgaW5zdGVhZAoJb2YgbWlwc19mZXRjaF9pbnNucy4KCSogY29uZmlnL21pcHMvY29uc3RyYWludHMubWQgKFIpOiBVc2UgbWlwc19hZGRyZXNzX2luc25zIHJhdGhlcgoJdGhhbiBtaXBzX2ZldGNoX2luc25zLiAgQXNzdW1lIHRoYXQgdGhlIG1vdmUgbmV2ZXIgbmVlZHMgdG8gYmUgc3BsaXQuCgoyMDA3LTA4LTA5ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobWhhcmQtZmxvYXQsIG1zb2Z0LWZsb2F0KTogTWFrZSB0aGVzZQoJY29udHJvbCBUQVJHRVRfSEFSRF9GTE9BVF9BQkkgYW5kIFRBUkdFVF9TT0ZUX0ZMT0FUX0FCSSwgcmF0aGVyCgl0aGFuIFRBUkdFVF9IQVJEX0ZMT0FUIGFuZCBUQVJHRVRfU09GVF9GTE9BVC4gIAoJKiBjb25maWcvbWlwcy9taXBzLmggKG1pcHMxNl9oYXJkX2Zsb2F0KTogRGVsZXRlLgoJKFRBUkdFVF9IQVJEX0ZMT0FUX0FCSSwgVEFSR0VUX1NPRlRfRkxPQVRfQUJJKTogRGVsZXRlIHRoZXNlCglkZWZpbml0aW9ucywgYW5kIHJlcGxhY2Ugd2l0aC4uLi4KCShUQVJHRVRfSEFSRF9GTE9BVCwgVEFSR0VUX1NPRlRfRkxPQVQpOiBEZWZpbmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwczE2X2hhcmRfZmxvYXQpOiBEZWxldGUuICBSZXBsYWNlCglhbGwgcmVmZXJlbmNlcyB3aXRoIChUQVJHRVRfTUlQUzE2ICYmIFRBUkdFVF9IQVJEX0ZMT0FUX0FCSSkuCgkoTUlQU19NQVJDSF9DT05UUk9MU19TT0ZUX0ZMT0FUKTogVXBkYXRlIGNvbW1lbnRzLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBSZXBsYWNlIE1BU0tfU09GVF9GTE9BVCByZWZlcmVuY2VzIHdpdGgKCU1BU0tfU09GVF9GTE9BVF9BQkkuICBEZWxldGUgdHdpZGRsaW5nIHdpdGggTUFTS19TT0ZUX0ZMT0FUCglhbmQgbWlwczE2X2hhcmRfZmxvYXQgd2hlbiBUQVJHRVRfTUlQUzE2LgoJCjIwMDctMDgtMDkgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIGMvMzI3OTYKCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogQ2hlY2sgZm9yIG5vbiBwb2ludGVyIHR5cGVzIGJlZm9yZQoJY2FsbGluZyBpbnRfZml0c190eXBlX3AuCgoyMDA3LTA4LTA5ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyODEzCgkqIGZvbGQtY29uc3QuYyAob21pdF9vbmVfb3BlcmFuZCk6IFJldHVybiBvbmx5IHRoZSBvbW1pdHRlZCBleHByZXNzaW9uCglpZiB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IHN0YXRlbWVudC4KCShwZWRhbnRpY19vbWl0X29uZV9vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDA3LTA4LTA5ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGMtdHlwZWNrLmMgKHJlYWRvbmx5X2Vycm9yKTogSW1wcm92ZSBlcnJvciBmb3IgYXNzaWdubWVudC4KCQoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX2FkZGl0aXZlX2V4cHJlc3Npb24pOiBIYW5kbGUgcG9pbnRlci1wbHVzCglleHByZXNzaW9uLiAKCShwcF9jX2V4cHJlc3Npb24pOiBEaXR0by4KCjIwMDctMDgtMDkgIFNpbW9uIEJhbGR3aW4gIDxzaW1vbmJAZ29vZ2xlLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpOiBSZW1vdmVkIGVycm9uZW91cwoJYnJlYWsgdGhhdCB3YXMgcHJldmVudGluZyBzaW1wbGlmeV9hc3NvY2lhdGl2ZV9vcGVyYXRpb24oKSBmb3IgeG9yLgoKMjAwNy0wOC0wOSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoJICAgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgoJKiBkb2MvdG0udGV4aSAoQ0xaX0RFRklORURfVkFMVUVfQVRfWkVSTywgQ1RaX0RFRklORURfVkFMVUVfQVRfWkVSTyk6CglEb2N1bWVudCBjaGFuZ2UgaW4gaW50ZXJwcmV0YXRpb24gb2YgdmFsdWUgZnJvbSBib29sZWFuIHRvCgl0cmktc3RhdGUgaW50ZWdlci4KCSogb3B0YWJzLmMgKGV4cGFuZF9mZnMsIGV4cGFuZF9jdHopOiBOZXcgZnVuY3Rpb25zIHRvIGNvbXB1dGUKCWZmcyBhbmQgY3R6IHVzaW5nIGNsei4KCShleHBhbmRfdW5vcCk6IENhbGwgdGhlbS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQ0xaX0RFRklORURfVkFMVUVfQVRfWkVSTyk6IEZpeCBpdHMKCXJlc3VsdCB2YWx1ZS4KCShDVFpfREVGSU5FRF9WQUxVRV9BVF9aRVJPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQ0xaX0RFRklORURfVkFMVUVfQVRfWkVSTyk6IExpa2V3aXNlLCB0bwoJZW5hYmxlIHRoZSBuZXcgZmZzIGV4cGFuc2lvbiBvbiB0aGlzIHRhcmdldC4KCjIwMDctMDgtMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG9wdGFicy5jIChleHBhbmRfd2lkZW5fcGF0dGVybl9leHByKTogVXNlIG9wdGFicyBhY2Nlc3RvcnMuCgkoZXhwYW5kX3Rlcm5hcnlfb3ApOiBMaWtld2lzZS4KCShleHBhbmRfdmVjX3NoaWZ0X2V4cHIpOiBMaWtld2lzZS4KCShleHBhbmRfYmlub3BfZGlyZWN0bHkpOiBMaWtld2lzZS4KCShleHBhbmRfYmlub3ApOiBMaWtld2lzZS4KCShzaWduX2V4cGFuZF9iaW5vcCk6IExpa2V3aXNlLgoJKGV4cGFuZF90d292YWxfdW5vcCk6IExpa2V3aXNlLgoJKGV4cGFuZF90d292YWxfYmlub3ApOiBMaWtld2lzZS4KCShleHBhbmRfdHdvdmFsX2Jpbm9wX2xpYmZ1bmMpOiBMaWtld2lzZS4KCSh3aWRlbl9jbHopOiBMaWtld2lzZS4KCSh3aWRlbl9ic3dhcCk6IExpa2V3aXNlLgoJKGV4cGFuZF9wYXJpdHkpOiBMaWtld2lzZS4KCShleHBhbmRfdW5vcCk6IExpa2V3aXNlLgoJKGV4cGFuZF9hYnNfbm9qdW1wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NvcHlzaWduKTogTGlrZXdpc2UuCgkoZW1pdF9ub19jb25mbGljdF9ibG9jayk6IExpa2V3aXNlLgoJKGVtaXRfbGliY2FsbF9ibG9jayk6IExpa2V3aXNlLgoJKGNhbl9jb21wYXJlX3ApOiBMaWtld2lzZS4KCShwcmVwYXJlX2NtcF9pbnNuKTogTGlrZXdpc2UuCgkoZW1pdF9jbXBfYW5kX2p1bXBfaW5zbl8xKTogTGlrZXdpc2UuCgkocHJlcGFyZV9mbG9hdF9saWJfY21wKTogTGlrZXdpc2UuCgkoZW1pdF9jb25kaXRpb25hbF9hZGQpOiBMaWtld2lzZS4KCShnZW5fYWRkMl9pbnNuKTogTGlrZXdpc2UuCgkoaGF2ZV9hZGQyX2luc24pOiBMaWtld2lzZS4KCShnZW5fc3ViMl9pbnNuKTogTGlrZXdpc2UuCgkoaGF2ZV9zdWIyX2luc24pOiBMaWtld2lzZS4KCShjYW5fZXh0ZW5kX3ApOiBMaWtld2lzZS4KCShjYW5fZml4X3ApOiBMaWtld2lzZS4KCShjYW5fZmxvYXRfcCk6IExpa2V3aXNlLgoJKGV4cGFuZF9mbG9hdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9maXgpOiBMaWtld2lzZS4KCShleHBhbmRfc2ZpeF9vcHRhYik6IExpa2V3aXNlLgoJKG5ld19vcHRhYik6IExpa2V3aXNlLgoJKG5ld19jb252ZXJ0X29wdGFiKTogTGlrZXdpc2UuCgkoaW5pdF9saWJmdW5jcyk6IExpa2V3aXNlLgoJKGluaXRfaW50ZXJjbGFzc19jb252X2xpYmZ1bmNzKTogTGlrZXdpc2UuCgkoaW5pdF9pbnRyYWNsYXNzX2NvbnZfbGliZnVuY3MpOiBMaWtld2lzZS4KCShzZXRfY29udl9saWJmdW5jKTogTGlrZXdpc2UuCgkoaW5pdF9vcHRhYnMpOiBMaWtld2lzZS4KCShkZWJ1Z19vcHRhYl9saWJmdW5jcyk6IExpa2V3aXNlLgoJKGdlbl9jb25kX3RyYXApOiBMaWtld2lzZS4KCSogb3B0YWJzLmggKG9wdGFiX2hhbmRsZXIsIGNvbnZlcnRfb3B0YWJfaGFubGRlcik6IE5ldy4KCSogZ2Vub3Bpbml0LmM6IFVwZGF0ZSBvcHRhYnMgZ2VuZXJhdGlvbiB0YWJsZS4KCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEpOiBVc2Ugb3B0YWJzIGFjY2VzdG9ycy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWF0aGZuKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tYXRoZm5fMyk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2ludGVyY2xhc3NfbWF0aGZuKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc2luY29zKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fY2V4cGkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9wb3dpKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChkb19qdW1wKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogTGlrZXdpc2UuCgkobW92ZV9ieV9waWVjZXMpOiBMaWtld2lzZS4KCShtb3ZlX2J5X3BpZWNlc19uaW5zbnMpOiBMaWtld2lzZS4KCShjYW5fc3RvcmVfYnlfcGllY2VzKTogTGlrZXdpc2UuCgkoc3RvcmVfYnlfcGllY2VzXzEpOiBMaWtld2lzZS4KCShlbWl0X21vdmVfdmlhX2ludGVnZXIpOiBMaWtld2lzZS4KCShlbWl0X21vdmVfY29tcGxleCk6IExpa2V3aXNlLgoJKGVtaXRfbW92ZV9jY21vZGUpOiBMaWtld2lzZS4KCShlbWl0X21vdmVfaW5zbl8xKTogTGlrZXdpc2UuCgkoZW1pdF9zaW5nbGVfcHVzaF9pbnNuKTogTGlrZXdpc2UuCgkoc3RvcmVfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCShleHBhbmRfZXhwcl9yZWFsXzEpOiBMaWtld2lzZS4KCShkb19zdG9yZV9mbGFnKTogTGlrZXdpc2UuCgkqIGFkYS9taXNjLmMgKGduYXRfY29tcHV0ZV9sYXJnZXN0X2FsaWdubWVudCk6IExpa2V3aXNlLgoJKGVudW1lcmF0ZV9tb2Rlcyk6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9zdXBwb3J0YWJsZV9kcl9hbGlnbm1lbnQpOiBMaWtld2lzZS4KCShzdXBwb3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24pOiBMaWtld2lzZS4KCShzdXBwb3J0YWJsZV9uYXJyb3dpbmdfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGRfMSk6IExpa2V3aXNlLgoJKGV4dHJhY3RfYml0X2ZpZWxkXzEpOiBMaWtld2lzZS4KCShleHBhbmRfbXVsdF9oaWdocGFydF9vcHRhYik6IExpa2V3aXNlLgoJKGV4cGFuZF9zbW9kX3BvdzIpOiBMaWtld2lzZS4KCShleHBhbmRfZGl2bW9kKTogTGlrZXdpc2UuCgkoZW1pdF9zdG9yZV9mbGFnKTogTGlrZXdpc2UuCgkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jCgkodmVjdF9wYXR0ZXJuX3JlY29nXzEpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jCgkobm9udGVtcG9yYWxfc3RvcmVfcCk6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfbW9kZWxfcmVkdWN0aW9uX2Nvc3QpOiBMaWtld2lzZS4KCSh2ZWN0X2NyZWF0ZV9lcGlsb2dfZm9yX3JlZHVjdGlvbik6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV9yZWR1Y3Rpb24pOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkodmVjdF9zdHJpZGVkX3N0b3JlX3N1cHBvcnRlZCk6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV9zdG9yZSk6IExpa2V3aXNlLgoJKHZlY3Rfc3RyaWRlZF9sb2FkX3N1cHBvcnRlZCk6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV9sb2FkKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbik6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3QtZ2VuZXJpYy5jCgkodHlwZV9mb3Jfd2lkZXN0X3ZlY3Rvcl9tb2RlKTogTGlrZXdpc2UuCgkoZXhwYW5kX3ZlY3Rvcl9vcGVyYXRpb25zXzEpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwdS9zcHUuYyAoc3B1X2V4cGFuZF9tb3YpOiBMaWtld2lzZS4KCShzcHVfZW1pdF92ZWN0b3JfY29tcGFyZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jCgkocnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUpOiBMaWtld2lzZS4KCSogc3RtdC5jIChhZGRfY2FzZV9ub2RlKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoZ2VuX3JlbG9hZCk6CgoyMDA3LTA4LTA5ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJKiB0cmVlLmggKGZpeGVkX3plcm9wKTogRGVjbGFyZSBhcyB0YWtpbmcgYSBjb25zdF90cmVlLgoJKiB0cmVlLmMgKGZpeGVkX3plcm9wKTogVGFrZSBhIGNvbnN0X3RyZWUuCgoyMDA3LTA4LTA5ICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV9zdG9yZSk6IFJlbW92ZSBjYWxsIHRvCgljb3B5X3ZpcnR1YWxfb3BlcmFuZHMoKSBhbmQgY2FsbCBtYXJrX3N5bWJvbHNfZm9yX3JlbmFtaW5nKCkgZm9yCgl0aGUgY3JlYXRlZCB2ZWN0b3Igc3RvcmUuCgkodmVjdF9zZXR1cF9yZWFsaWdubWVudCk6IERvbid0IGNhbGwgY29weV92aXJ0dWFsX29wZXJhbmRzKCkgYW5kCgl1cGRhdGVfdnVzZXNfdG9fcHJlaGVhZGVyKCkuIAoJKHZlY3Rvcml6YWJsZV9sb2FkKTogRG9uJ3QgY2FsbCBjb3B5X3ZpcnR1YWxfb3BlcmFuZHMoKS4gCgkodXBkYXRlX3Z1c2VzX3RvX3ByZWhlYWRlcik6IFJlbW92ZS4KCjIwMDctMDgtMDggIENoYW8teWluZyBGdSAgPGZ1QG1pcHMuY29tPgoKCSogdHJlZS5kZWYgKEZJWEVEX1BPSU5UX1RZUEUpOiBOZXcgdHlwZS4KCShGSVhFRF9DU1QpOiBOZXcgY29uc3RhbnQuCgkoRklYRURfQ09OVkVSVF9FWFBSKTogTmV3IGV4cHIuCgkqIGRvYy9jLXRyZWUudGV4aSAoVHlwZXMpOiBEb2N1bWVudCBGSVhFRF9QT0lOVF9UWVBFLgoJKEV4cHJlc3Npb25zKTogRG9jdW1lbnQgRklYRURfQ1NUIGFuZCBGSVhFRF9DT05WRVJUX0VYUFIuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfYmFzZSk6IEFkZCBzYXR1cmF0aW5nX2ZsYWcuCglSZW1vdmUgb25lIGJpdCBvZiBzcGFyZSBmb3Igc2F0dXJhdGluZ19mbGFnLgoJKE5VTUVSSUNBTF9UWVBFX0NIRUNLKTogU3VwcG9ydCBGSVhFRF9QT0lOVF9UWVBFLgoJKE5PTl9TQVRfRklYRURfUE9JTlRfVFlQRV9QLCBTQVRfRklYRURfUE9JTlRfVFlQRV9QLAoJRklYRURfUE9JTlRfVFlQRV9QKTogRGVmaW5lLgoJKFRZUEVfU0FUVVJBVElORyk6IERlZmluZS4KCShUUkVFX0ZJWEVEX0NTVF9QVFIsIFRSRUVfRklYRURfQ1NUKTogRGVmaW5lLgoJKHN0cnVjdCB0cmVlX2ZpeGVkX2NzdCk6IE5ldy4KCShUWVBFX0lCSVQsIFRZUEVfRkJJVCk6IERlZmluZS4KCSh0cmVlX25vZGUpOiBBZGQgZml4ZWRfY3N0LgoJKGVudW0gdHJlZV9pbmRleCk6IEFkZCBuZXcgZW51bWVyYXRpb24gdmFsdWVzIG9mCglUSV9TQVRfU0ZSQUNUX1RZUEUsIFRJX1NBVF9GUkFDVF9UWVBFLCBUSV9TQVRfTEZSQUNUX1RZUEUsCglUSV9TQVRfTExGUkFDVF9UWVBFLCBUSV9TQVRfVVNGUkFDVF9UWVBFLCBUSV9TQVRfVUZSQUNUX1RZUEUsCglUSV9TQVRfVUxGUkFDVF9UWVBFLCBUSV9TQVRfVUxMRlJBQ1RfVFlQRSwgVElfU0ZSQUNUX1RZUEUsCglUSV9GUkFDVF9UWVBFLCBUSV9MRlJBQ1RfVFlQRSwgVElfTExGUkFDVF9UWVBFLCBUSV9VU0ZSQUNUX1RZUEUsCglUSV9VRlJBQ1RfVFlQRSwgVElfVUxGUkFDVF9UWVBFLCBUSV9VTExGUkFDVF9UWVBFLAoJVElfU0FUX1NBQ0NVTV9UWVBFLCBUSV9TQVRfQUNDVU1fVFlQRSwgVElfU0FUX0xBQ0NVTV9UWVBFLAoJVElfU0FUX0xMQUNDVU1fVFlQRSwgVElfU0FUX1VTQUNDVU1fVFlQRSwgVElfU0FUX1VBQ0NVTV9UWVBFLAoJVElfU0FUX1VMQUNDVU1fVFlQRSwgVElfU0FUX1VMTEFDQ1VNX1RZUEUsIFRJX1NBQ0NVTV9UWVBFLAoJVElfQUNDVU1fVFlQRSwgVElfTEFDQ1VNX1RZUEUsIFRJX0xMQUNDVU1fVFlQRSwgVElfVVNBQ0NVTV9UWVBFLAoJVElfVUFDQ1VNX1RZUEUsIFRJX1VMQUNDVU1fVFlQRSwgVElfVUxMQUNDVU1fVFlQRSwKCVRJX1FRX1RZUEUsIFRJX0hRX1RZUEUsX1RZUEUsIFRJX1NRX1RZUEUsIFRJX0RRX1RZUEUsIFRJX1RRX1RZUEUsCglUSV9VUVFfVFlQRSwgVElfVUhRX1RZUEUsIFRJX1VTUV9UWVBFLCBUSV9VRFFfVFlQRSwgVElfVVRRX1RZUEUsCglUSV9TQVRfUVFfVFlQRSwgVElfU0FUX0hRX1RZUEUsIFRJX1NBVF9TUV9UWVBFLCBUSV9TQVRfRFFfVFlQRSwKCVRJX1NBVF9UUV9UWVBFLCBUSV9TQVRfVVFRX1RZUEUsIFRJX1NBVF9VSFFfVFlQRSwgVElfU0FUX1VTUV9UWVBFLAoJVElfU0FUX1VEUV9UWVBFLCBUSV9TQVRfVVRRX1RZUEUsIFRJX0hBX1RZUEUsIFRJX1NBX1RZUEUsIFRJX0RBX1RZUEUsCglUSV9UQV9UWVBFLCBUSV9VSEFfVFlQRSwgVElfVVNBX1RZUEUsIFRJX1VEQV9UWVBFLCBUSV9VVEFfVFlQRSwKCVRJX1NBVF9IQV9UWVBFLCBUSV9TQVRfU0FfVFlQRSwgVElfU0FUX0RBX1RZUEUsIFRJX1NBVF9UQV9UWVBFLAoJVElfU0FUX1VIQV9UWVBFLCBUSV9TQVRfVVNBX1RZUEUsIFRJX1NBVF9VREFfVFlQRSwgVElfU0FUX1VUQV9UWVBFLgoJKHNhdF9zaG9ydF9mcmFjdF90eXBlX25vZGUsIHNhdF9mcmFjdF90eXBlX25vZGUsCglzYXRfbG9uZ19mcmFjdF90eXBlX25vZGUsIHNhdF9sb25nX2xvbmdfZnJhY3RfdHlwZV9ub2RlLAoJc2F0X3Vuc2lnbmVkX3Nob3J0X2ZyYWN0X3R5cGVfbm9kZSwgc2F0X3Vuc2lnbmVkX2ZyYWN0X3R5cGVfbm9kZSwKCXNhdF91bnNpZ25lZF9sb25nX2ZyYWN0X3R5cGVfbm9kZSwKCXNhdF91bnNpZ25lZF9sb25nX2xvbmdfZnJhY3RfdHlwZV9ub2RlLCBzaG9ydF9mcmFjdF90eXBlX25vZGUsCglmcmFjdF90eXBlX25vZGUsIGxvbmdfZnJhY3RfdHlwZV9ub2RlLCBsb25nX2xvbmdfZnJhY3RfdHlwZV9ub2RlLAoJdW5zaWduZWRfc2hvcnRfZnJhY3RfdHlwZV9ub2RlLCB1bnNpZ25lZF9mcmFjdF90eXBlX25vZGUsCgl1bnNpZ25lZF9sb25nX2ZyYWN0X3R5cGVfbm9kZSwgdW5zaWduZWRfbG9uZ19sb25nX2ZyYWN0X3R5cGVfbm9kZSwKCXNhdF9zaG9ydF9hY2N1bV90eXBlX25vZGUsIHNhdF9hY2N1bV90eXBlX25vZGUsCglzYXRfbG9uZ19hY2N1bV90eXBlX25vZGUsIHNhdF9sb25nX2xvbmdfYWNjdW1fdHlwZV9ub2RlLAoJc2F0X3Vuc2lnbmVkX3Nob3J0X2FjY3VtX3R5cGVfbm9kZSwgc2F0X3Vuc2lnbmVkX2FjY3VtX3R5cGVfbm9kZSwKCXNhdF91bnNpZ25lZF9sb25nX2FjY3VtX3R5cGVfbm9kZSwKCXNhdF91bnNpZ25lZF9sb25nX2xvbmdfYWNjdW1fdHlwZV9ub2RlLCBzaG9ydF9hY2N1bV90eXBlX25vZGUsCglhY2N1bV90eXBlX25vZGUsIGxvbmdfYWNjdW1fdHlwZV9ub2RlLCBsb25nX2xvbmdfYWNjdW1fdHlwZV9ub2RlLAoJdW5zaWduZWRfc2hvcnRfYWNjdW1fdHlwZV9ub2RlLCB1bnNpZ25lZF9hY2N1bV90eXBlX25vZGUsCgl1bnNpZ25lZF9sb25nX2FjY3VtX3R5cGVfbm9kZSwgdW5zaWduZWRfbG9uZ19sb25nX2FjY3VtX3R5cGVfbm9kZSwKCXFxX3R5cGVfbm9kZSwgaHFfdHlwZV9ub2RlLCBzcV90eXBlX25vZGUsIGRxX3R5cGVfbm9kZSwgdHFfdHlwZV9ub2RlLAoJdXFxX3R5cGVfbm9kZSwgdWhxX3R5cGVfbm9kZSwgdXNxX3R5cGVfbm9kZSwgdWRxX3R5cGVfbm9kZSwKCXV0cV90eXBlX25vZGUsIHNhdF9xcV90eXBlX25vZGUsIHNhdF9ocV90eXBlX25vZGUsIHNhdF9zcV90eXBlX25vZGUsCglzYXRfZHFfdHlwZV9ub2RlLCBzYXRfdHFfdHlwZV9ub2RlLCBzYXRfdXFxX3R5cGVfbm9kZSwKCXNhdF91aHFfdHlwZV9ub2RlLCBzYXRfdXNxX3R5cGVfbm9kZSwgc2F0X3VkcV90eXBlX25vZGUsCglzYXRfdXRxX3R5cGVfbm9kZSwgaGFfdHlwZV9ub2RlLCBzYV90eXBlX25vZGUsIGRhX3R5cGVfbm9kZSwKCXRhX3R5cGVfbm9kZSwgdWhhX3R5cGVfbm9kZSwgdXNhX3R5cGVfbm9kZSwgdWRhX3R5cGVfbm9kZSwKCXV0YV90eXBlX25vZGUsIHNhdF9oYV90eXBlX25vZGUsIHNhdF9zYV90eXBlX25vZGUsIHNhdF9kYV90eXBlX25vZGUsCglzYXRfdGFfdHlwZV9ub2RlLCBzYXRfdWhhX3R5cGVfbm9kZSwgc2F0X3VzYV90eXBlX25vZGUsCglzYXRfdWRhX3R5cGVfbm9kZSwgc2F0X3V0YV90eXBlX25vZGUpOiBOZXcgbWFjcm8uCgkobWFrZV9mcmFjdF90eXBlLCBtYWtlX2FjY3VtX3R5cGUpOiBEZWNsYXJlLgoJKG1ha2Vfc2lnbmVkX2ZyYWN0X3R5cGUsIG1ha2VfdW5zaWduZWRfZnJhY3RfdHlwZSwKCW1ha2Vfc2F0X3NpZ25lZF9mcmFjdF90eXBlLCBtYWtlX3NhdF91bnNpZ25lZF9mcmFjdF90eXBlLAoJbWFrZV9zaWduZWRfYWNjdW1fdHlwZSwgbWFrZV91bnNpZ25lZF9hY2N1bV90eXBlLAoJbWFrZV9zYXRfc2lnbmVkX2FjY3VtX3R5cGUsIG1ha2Vfc2F0X3Vuc2lnbmVkX2FjY3VtX3R5cGUsCgltYWtlX29yX3JldXNlX3NpZ25lZF9mcmFjdF90eXBlLCBtYWtlX29yX3JldXNlX3Vuc2lnbmVkX2ZyYWN0X3R5cGUsCgltYWtlX29yX3JldXNlX3NhdF9zaWduZWRfZnJhY3RfdHlwZSwKCW1ha2Vfb3JfcmV1c2Vfc2F0X3Vuc2lnbmVkX2ZyYWN0X3R5cGUsIG1ha2Vfb3JfcmV1c2Vfc2lnbmVkX2FjY3VtX3R5cGUsCgltYWtlX29yX3JldXNlX3Vuc2lnbmVkX2FjY3VtX3R5cGUsIG1ha2Vfb3JfcmV1c2Vfc2F0X3NpZ25lZF9hY2N1bV90eXBlLAoJbWFrZV9vcl9yZXVzZV9zYXRfdW5zaWduZWRfYWNjdW1fdHlwZSk6IE5ldyBtYWNyby4KCShmaXhlZF96ZXJvcCk6IERlY2xhcmUuCgkqIGRlZmF1bHRzLmggKFNIT1JUX0ZSQUNUX1RZUEVfU0laRSwgRlJBQ1RfVFlQRV9TSVpFLAoJTE9OR19GUkFDVF9UWVBFX1NJWkUsIExPTkdfTE9OR19GUkFDVF9UWVBFX1NJWkUsCglTSE9SVF9BQ0NVTV9UWVBFX1NJWkUsIEFDQ1VNX1RZUEVfU0laRSwgTE9OR19BQ0NVTV9UWVBFX1NJWkUsCglMT05HX0xPTkdfQUNDVU1fVFlQRV9TSVpFKTogRGVmaW5lLgoJKiB0cmVlc3RydWN0LmRlZjogQWRkIFRTX0ZJWEVEX0NTVC4KCSogTWFrZWZpbGUuaW4gKGMtcHJldHR5LXByaW50Lm8pOiBBZGQgZGVwZW5kZW5jZSBvbiBmaXhlZC12YWx1ZS5oLgoJKHRyZWUubyk6IExpa2V3aXNlLgoJKHRyZWUtZHVtcC5vKTogTGlrZXdpc2UuCgkocHJpbnQtdHJlZS5vKTogTGlrZXdpc2UuCgkodHJlZS1wcmV0dHktcHJpbnQubyk6IExpa2V3aXNlLgoJKGZvbGQtY29uc3Qubyk6IExpa2V3aXNlLgoJKiB0cmVlLWNvbXBsZXguYyAoc29tZV9ub256ZXJvcCk6IEhhbmRsZSBGSVhFRF9DU1QuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9mb3JtYWxfdG1wX3Jocyk6IEhhbmRsZSBGSVhFRF9DU1QuCgkoaXNfZ2ltcGxlX21pbl9pbnZhcmlhbnQpOiBIYW5kbGUgRklYRURfQ1NULgoJKiBzdG9yLWxheW91dC5jIChpbnRfbW9kZV9mb3JfbW9kZSk6IEhhbmRsZSBNT0RFX0ZSQUNULCBNT0RFX1VGUkFDVCwKCU1PREVfQUNDVU0sIE1PREVfVUFDQ1VNLCBNT0RFX1ZFQ1RPUl9GUkFDVCwgTU9ERV9WRUNUT1JfVUZSQUNULAoJTU9ERV9WRUNUT1JfQUNDVU0sIE1PREVfVkVDVE9SX1VBQ0NVTS4KCShsYXlvdXRfdHlwZSk6IEhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLgoJKG1ha2VfZnJhY3RfdHlwZSwgbWFrZV9hY2N1bV90eXBlKTogTmV3IGZ1bmN0aW9ucy4KCSogdHJlZS1icm93c2VyLmMgKGJyb3dzZV90cmVlKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkqIHRyZWUtZHVtcC5jIChmaXhlZC12YWx1ZS5oKTogTmV3IGluY2x1ZGUuCgkoZHVtcF9maXhlZCk6IE5ldyBmdW5jdGlvbi4KCShkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUgYW5kIEZJWEVEX0NTVC4KCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfdHlwZV8xKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBIYW5kbGUgRklYRURfQ1NUIGFuZCBGSVhFRF9DT05WRVJUX0VYUFIuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGZpeGVkLXZhbHVlLmgpOiBOZXcgaW5jbHVkZS4KCShkdW1wX2dlbmVyaWNfbm9kZSk6IEhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLCBGSVhFRF9DU1QsIGFuZAoJRklYRURfQ09OVkVSVF9FWFBSLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoZ2V0X3NjYWxhcl9ldm9sdXRpb24pOiBIYW5kbGUgRklYRURfQ1NULgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKGZvcl9lYWNoX2luZGV4KTogSGFuZGxlIEZJWEVEX0NTVC4KCSogdHJlZS1zc2EtcHJlLmMgKHBvb2xpZnlfdHJlZSk6IEhhbmRsZSBGSVhFRF9DU1QuCgkqIHRyZWUtc3NhLXJlYXNzb2MuYyAoYnJlYWtfdXBfc3VidHJhY3RfYmIpOiBXZSBjYW4gZG8gcmVhc3NvY2lhdGlvbgoJZm9yIG5vbi1zYXR1cmF0aW5nIGZpeGVkLXBvaW50IHR5cGVzLgoJKHJlYXNzb2NpYXRlX2JiKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGZpeGVkLXZhbHVlLmgpOiBOZXcgaW5jbHVkZS4KCShmY29uc3QwLCBmY29uc3QxKTogTmV3IGFycmF5LgoJKGluaXRfZW1pdF9vbmNlKTogSW5pdGlhbGl6ZSBmY29uc3QwIGFuZCBmY29uc3QxIGZvciBmaXhlZC1wb2ludCBtb2Rlcy4KCSogdHJlZS12ZWN0LWdlbmVyaWMuYyBleHBhbmRfdmVjdG9yX29wZXJhdGlvbik6IFN1cHBvcnQKCU1PREVfVkVDVE9SX0ZSQUNULCBNT0RFX1ZFQ1RPUl9VRlJBQ1QsIE1PREVfVkVDVE9SX0FDQ1VNLCBhbmQKCU1PREVfVkVDVE9SX1VBQ0NVTS4KCSh0eXBlX2Zvcl93aWRlc3RfdmVjdG9yX21vZGUpOiBBZGQgb25lIHBhcmFtZXRlciBmb3IgdGhlIAoJc2F0dXJhdGluZyBmbGFnLgoJQ2hlY2sgc2NhbGFyIEZSQUNULCBVRlJBQ1QsIEFDQ1VNLCBhbmQgVUFDQ1VNIG1vZGUgdG8gc2VsZWN0IHRoZWlyCgl2ZWN0b3IgbW9kZS4KCVBhc3MgdGhlIHNhdHAgcGFyYW1ldGVyIHRvIHR5cGVfZm9yX21vZGUgZm9yIGZpeGVkLXBvaW50IHR5cGVzLgoJKGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uc18xKTogUGFzcyB0aGUgc2F0dXJhdGluZyBmbGFnIHRvCgl0eXBlX2Zvcl93aWRlc3RfdmVjdG9yX21vZGUuCglTdXBwb3J0IE1PREVfVkVDVE9SX0ZSQUNULCBNT0RFX1ZFQ1RPUl9VRlJBQ1QsIE1PREVfVkVDVE9SX0FDQ1VNLAoJYW5kIE1PREVfVkVDVE9SX1VBQ0NVTS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2lzX3NpbXBsZV9jb25kKTogU3VwcG9ydCBGSVhFRF9DU1QuCgkodmVjdG9yaXphYmxlX2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGZpeGVkLXZhbHVlLmgpOiBOZXcgaW5jbHVkZS4KCSh0cmVlX2NvZGVfc2l6ZSk6IFN1cHBvcnQgRklYRURfQ1NULgoJKGJ1aWxkX2ZpeGVkKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX29uZV9jc3QpOiBTdXBwb3J0IEZJWEVEX1BPSU5UX1RZUEUgZm9yIGFjY3VtIHR5cGVzLgoJKGZpeGVkX3plcm9wKTogTmV3IGZ1bmN0aW9uLgoJKHRyZWVfbm9kZV9zdHJ1Y3R1cmUpOiBTdXBwb3J0IEZJWEVEX0NTVC4KCSh0eXBlX2NvbnRhaW5zX3BsYWNlaG9sZGVyXzEpOiBTdXBwb3J0IEZJWEVEX1BPSU5UX1RZUEUuCgkoYnVpbGRfdHlwZV9hdHRyaWJ1dGVfcXVhbF92YXJpYW50KTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkodHlwZV9oYXNoX2VxKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkoc2ltcGxlX2NzdF9lcXVhbCk6IFN1cHBvcnQgRklYRURfQ1NULgoJKGl0ZXJhdGl2ZV9oYXNoX2V4cHIpOiBIYW5kbGUgRklYRURfQ1NULgoJKGdldF91bndpZGVuZWQpOiBNYWtlIHN1cmUgdHlwZSBpcyBub3QgRklYRURfUE9JTlRfVFlQRS4KCShnZXRfbmFycm93ZXIpOiBMaWtld2lzZS4KCSh2YXJpYWJseV9tb2RpZmllZF90eXBlX3ApOiBIYW5kbGUgRklYRURfUE9JTlRfVFlQRS4KCShtYWtlX29yX3JldXNlX2ZyYWN0X3R5cGUsIG1ha2Vfb3JfcmV1c2VfYWNjdW1fdHlwZSk6IE5ldyBmdW5jdGlvbnMuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IFVzZSBNQUtFX0ZJWEVEX1RZUEVfTk9ERV9GQU1JTFkgYW5kCglNQUtFX0ZJWEVEX01PREVfTk9ERSBtYWNyb3MgdG8gaW5pdGlhbGl6ZSBmaXhlZC1wb2ludCB0eXBlCglub2Rlcy4KCShidWlsZF92ZWN0b3JfdHlwZV9mb3JfbW9kZSk6IEhhbmRsZSBNT0RFX1ZFQ1RPUl9GUkFDVCwKCU1PREVfVkVDVE9SX1VGUkFDVCwgTU9ERV9WRUNUT1JfQUNDVU0sIE1PREVfVkVDVE9SX1VBQ0NVTS4KCShpbml0aWFsaXplcl96ZXJvcCk6IFN1cHBvcnQgRklYRURfQ1NULgoJKHdhbGtfdHJlZSk6IEhhbmRsZSBGSVhFRF9DU1QgYW5kIEZJWEVEX1BPSU5UX1RZUEUuCgkqIGR3YXJmMm91dC5jIChiYXNlX3R5cGVfZGllKTogVXNlIERXX0FURV9zaWduZWRfZml4ZWQgb3IKCURXX0FURV91bnNpZ25lZF9maXhlZCB0byBkZXNjcmliZSBGSVhFRF9QT0lOVF9UWVBFLgoJKGlzX2Jhc2VfdHlwZSk6IEhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLgoJKGFkZF90eXBlX2F0dHJpYnV0ZSk6IEhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLgoJKGdlbl90eXBlX2RpZV93aXRoX3VzYWdlKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkqIHByaW50LXRyZWUuYyAoZml4ZWQtdmFsdWUuaCk6IE5ldyBpbmNsdWRlLgoJKHByaW50X25vZGVfYnJpZWYpOiBTdXBwb3J0IEZJWEVEX0NTVC4KCShwcmludF9ub2RlKTogU3VwcG9ydCBGSVhFRF9QT0lOVF9UWVBFIGFuZCBGSVhFRF9DU1QuCgkqIGMtcHJldHR5LXByaW50LmMgKGZpeGVkLXZhbHVlLmgpOiBOZXcgaW5jbHVkZS4KCShwcF9jX3R5cGVfc3BlY2lmaWVyKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuICBOZWVkIHRvIHBhc3MKCVRZUEVfU0FUVVJBVElORyB0byBjX2NvbW1vbl90eXBlX2Zvcl9tb2RlIGZvciBmaXhlZC1wb2ludCBtb2Rlcy4KCShwcF9jX2RpcmVjdF9hYnN0cmFjdF9kZWNsYXJhdG9yKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCglTdXBwb3J0IGZpeGVkLXBvaW50IHR5cGVzIGZvciBpbm5lciBpdGVtcyBpbiBWRUNUT1JfVFlQRS4KCShwcF9jX2RpcmVjdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19maXhlZF9jb25zdGFudCk6IE5ldyBmdW5jdGlvbi4KCShwcF9jX2NvbnN0YW50KTogSGFuZGxlIEZJWEVEX0NTVC4KCShwcF9jX3ByaW1hcnlfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZpeGVkLXZhbHVlLmgpOiBOZXcgaW5jbHVkZS4KCShuZWdhdGVfZXhwcl9wKTogUmV0dXJuIHRydWUgZm9yIEZJWEVEX0NTVC4KCShmb2xkX25lZ2F0ZV9leHByKTogU3VwcG9ydCBGSVhFRF9DU1QuCgkoc3BsaXRfdHJlZSk6IFN1cHBvcnQgRklYRURfQ1NULgoJKGNvbnN0X2Jpbm9wKTogU3VwcG9ydCBGSVhFRF9DU1QuCgkoZm9sZF9jb252ZXJ0X2NvbnN0X2ludF9mcm9tX2ZpeGVkKTogTmV3IGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbQoJZml4ZWQgdG8gaW50LgoJKGZvbGRfY29udmVydF9jb25zdF9yZWFsX2Zyb21fZml4ZWQpOiBOZXcgZnVuY3Rpb24gdG8gY29udmVydCBmcm9tCglmaXhlZCB0byByZWFsLgoJKGZvbGRfY29udmVydF9jb25zdF9maXhlZF9mcm9tX2ZpeGVkKTogTmV3IGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbQoJZml4ZWQgdG8gYW5vdGhlciBmaXhlZC4KCShmb2xkX2NvbnZlcnRfY29uc3RfZml4ZWRfZnJvbV9pbnQpOiBOZXcgZnVuY3Rpb24gdG8gY29udmVydCBmcm9tCglpbnQgdG8gZml4ZWQuCgkoZm9sZF9jb252ZXJ0X2NvbnN0X2ZpeGVkX2Zyb21fcmVhbCk6IE5ldyBmdW5jdGlvbiB0byBjb252ZXJ0IGZyb20KCXJlYWwgdG8gZml4ZWQuCgkoZm9sZF9jb252ZXJ0X2NvbnN0KTogU3VwcG9ydCBjb252ZXJzaW9ucyBmcm9tIGZpeGVkIHRvIGludCwgZnJvbQoJZml4ZWQgdG8gcmVhbCwgZnJvbSBmaXhlZCB0byBmaXhlZCwgZnJvbSBpbnQgdG8gZml4ZWQsIGFuZCBmcm9tIHJlYWwKCXRvIGZpeGVkLgoJKGZvbGRfY29udmVydCk6IFN1cHBvcnQgRklYRURfQ1NUIGFuZCBGSVhFRF9QT0lOVF9UWVBFLgoJKG9wZXJhbmRfZXF1YWxfcCk6IFN1cHBvcnQgRklYRURfQ1NULgoJKG1ha2VfcmFuZ2UpOiBGb3IgZml4ZWQtcG9pbnQgbW9kZXMsIHdlIG5lZWQgdG8gcGFzcyB0aGUKCXNhdHVyYXRpbmcgZmxhZyBhcyB0aGUgMm5kIHBhcmFtZXRlci4KCSh0cmVlX3N3YXBfb3BlcmFuZHNfcCk6IEhhbmRsZSBGSVhFRF9DU1QuCgkoZm9sZF9wbHVzbWludXNfbXVsdF9leHByKTogRm9yIGZyYWN0IG1vZGVzLCB3ZSBjYW5ub3QgZ2VuZXJhdGUKCWNvbnN0YW50IDEuCgkoZm9sZF91bmFyeSk6IFN1cHBvcnQgRklYRURfQ09OVkVSVF9FWFBSLgoJKGZvbGRfYmluYXJ5KTogSGFuZGxlIEZJWEVEX0NTVC4KCU1ha2Ugc3VyZSB0aGUgdHlwZSBpcyBub3Qgc2F0dXJhdGluZywgYmVmb3JlIGFzc29jaWF0aW5nIG9wZXJhdGlvbnMuCglFeDogQSArIEIgKyBDLCBBICogQiAqIEMsIChBMSAqIEMxKSArLy0gKEEyICogQzIpLgoJKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV93YXJudl9wKTogSGFuZGxlIEZJWEVEX0NTVC4KCShmb2xkX25lZ2F0ZV9jb25zdCk6IFN1cHBvcnQgRklYRURfQ1NULgoJKGZvbGRfcmVsYXRpb25hbF9jb25zdCk6IFN1cHBvcnQgRklYRURfQ1NULgoJKiBnaW1wbGlmeS5jIChvbXBfZmlyc3Rwcml2YXRpemVfdHlwZV9zaXplcyk6IEhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLgoJKGdpbXBsaWZ5X2V4cHIpOiBIYW5kbGUgRklYRURfQ1NULgoJKGdpbXBsaWZ5X3R5cGVfc2l6ZXMpOiBIYW5kbGUgRklYRURfUE9JTlRfVFlQRS4KCSogaXBhLXByb3AuYyAoaXBhX2NhbGxzaXRlX2NvbXB1dGVfcGFyYW0pOiBTdXBwb3J0IEZJWEVEX0NTVC4KCSogaXBhLXR5cGUtZXNjYXBlLmMgKHR5cGVfdG9fY29uc2lkZXIpOiBIYW5kbGUgRklYRURfUE9JTlRfVFlQRS4KCSogZG9jL3RtLnRleGkgKFR5cGUgTGF5b3V0KTogRG9jdW1lbnQgU0hPUlRfRlJBQ1RfVFlQRV9TSVpFLAoJRlJBQ1RfVFlQRV9TSVpFLCBMT05HX0ZSQUNUX1RZUEVfU0laRSwgTE9OR19MT05HX0ZSQUNUX1RZUEVfU0laRSwKCVNIT1JUX0FDQ1VNX1RZUEVfU0laRSwgQUNDVU1fVFlQRV9TSVpFLCBMT05HX0FDQ1VNX1RZUEVfU0laRSwKCUxPTkdfTE9OR19BQ0NVTV9UWVBFX1NJWkUuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IEhhbmRsZSBGSVhFRF9QT0lOVF9UWVBFLgoJKiBjLWF1eC1pbmZvLmMgKGdlbl90eXBlKTogSGFuZGxlIEZJWEVEX1BPSU5UX1RZUEUuCgkqIHRyZWUtc3JhLmMgKGlzX3NyYV9zY2FsYXJfdHlwZSk6IFN1cHBvcnQgRklYRURfUE9JTlRfVFlQRS4KCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogU3VwcG9ydCBNT0RFX0ZSQUNULCBNT0RFX1VGUkFDVCwKCU1PREVfQUNDVU0sIGFuZCBNT0RFX1VBQ0NVTS4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3RfaXNfc2ltcGxlX3JlZHVjdGlvbik6IENoZWNrIGZvciBzYXR1cmF0aW5nCglmaXhlZC1wb2ludCB0eXBlcyB0byBkaXNhYmxlIHJlZHVjdGlvbi4KCSogZXhwbG93LmMgKHByb21vdGVfbW9kZSk6IFN1cHBvcnQgRklYRURfUE9JTlRfVFlQRS4KCjIwMDctMDgtMDggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAveC1yczYwMDA6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChDQzFfU1BFQyk6IEFkZCBjYzFfY3B1LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChFWFRSQV9TUEVDUyk6IEFkZCBjYzFfY3B1LgoJKEVYVFJBX1NQRUNfRlVOQ1RJT05TKTogRGVmaW5lLgoJKEhBVkVfTE9DQUxfQ1BVX0RFVEVDVCk6IERlZmluZS4KCShDQzFfQ1BVX1NQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvZHJpdmVyLXJzNjAwMC5jOiBOZXcgZmlsZS4KCSogY29uZmlnL3JzNjAwMC9haXguaCAoQ0MxX1NQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoQ0MxX1NQRUMpOiBBZGQgY2MxX2NwdS4KCSogY29uZmlnLmhvc3Q6IEFkZCB4LXJzNjAwMCB0byBob3N0X3htYWtlX2ZpbGUgaWYgaG9zdCBhbmQgdGFyZ2V0CglhcmUgcnM2MDAwIG9yIHBvd2VycGMuCgoyMDA3LTA4LTA4ICBQYW9sbyBCb256aW5pIDxwYW9sby5ib256aW5pQGx1LnVuaXNpLmNoPgoKCSogY29uZmlnL2kzODYvdC1jcnRzdHVmZiAoQ1JUU1RVRkZfVF9DRkxBR1MpOiBVc2UgKz0uCgoyMDA3LTA4LTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgkgICAgTmlnZWwgU3RlcGhlbnMgIDxuaWdlbEBtaXBzLmNvbT4KCSAgICBEYXZpZCBVbmcgIDxkYXZpZHVAbWlwcy5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1tY29kZS1yZWFkYWJsZSk6IERvY3VtZW50LgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobWNvZGUtcmVhZGFibGUpOiBOZXcgb3B0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChTWU1CT0xfMzJfSElHSCk6IE5ldyBzeW1ib2wgdHlwZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChtaXBzX2NvZGVfcmVhZGFibGVfc2V0dGluZyk6IE5ldyBlbnVtLgoJKG1pcHNfY29kZV9yZWFkYWJsZSk6IERlY2xhcmUuCgkoVEFSR0VUX01JUFMxNl9URVhUX0xPQURTLCBUQVJHRVRfTUlQUzE2X1BDUkVMX0xPQURTKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfTUlQUzE2X1NIT1JUX0pVTVBfVEFCTEVTKTogTmV3IG1hY3JvLgoJKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IFVzZSBpdC4KCShDQVNFX1ZFQ1RPUl9NT0RFLCBDQVNFX1ZFQ1RPUl9QQ19SRUxBVElWRSk6IExpa2V3aXNlLiAgUmVtb3ZlCglib2lsZXItcGxhdGUgY29tbWVudHMuCgkoQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogVXNlIFRBUkdFVF9NSVBTMTZfU0hPUlRfSlVNUF9UQUJMRVMuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jb2RlX3JlYWRhYmxlKTogTmV3IHZhcmlhYmxlLgoJKG1pcHNfY2xhc3NpZnlfc3ltYm9sKTogT25seSByZXR1cm4gU1lNQk9MX1BDX1JFTEFUSVZFIGZvcgoJTUlQUzE2IGxhYmVscyBpZiBUQVJHRVRfTUlQUzE2X1NIT1JUX0pVTVBfVEFCTEVTLiAgVXNlIGJvdGggdGhlCgljb250ZXh0IGFuZCAtbWNvZGUtcmVhZGFibGUgc2V0dGluZyB0byByZXN0cmljdCB0aGUgdXNlIG9mCglTWU1CT0xfUENfUkVMQVRJVkUgZm9yIE1JUFMxNiBjb25zdGFudCBwb29sIHJlZmVyZW5jZXMuCglPbmx5IHJldHVybiBUQVJHRVRfRk9SQ0VfVE9fTUVNIGlmIFBDLXJlbGF0aXZlIGxvYWRzIGFyZSBhbGxvd2VkLgoJKG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcCk6IEhhbmRsZSBTWU1CT0xfMzJfSElHSC4KCShtaXBzX2Jsb2Nrc19mb3JfY29uc3RhbnRfcCk6IE9ubHkgcmV0dXJuIGZhbHNlIGZvcgoJVEFSR0VUX01JUFMxNl9QQ1JFTF9MT0FEUy4KCShtaXBzX3N5bWJvbF9pbnNuc18xKTogVHJlYXQgSElHSHMgYXMgMiBleHRlbmRlZCBpbnN0cnVjdGlvbnMKCWZvciBNSVBTMTYuICBIYW5kbGUgU1lNQk9MXzMyX0hJR0guCgkobWlwc19jb25zdF9pbnNucyk6IEFsbG93IEhJR0hzIGZvciBNSVBTMTYgdG9vLgoJKG1pcHNfdW5zcGVjX2FkZHJlc3Nfb2Zmc2V0KTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbS4uLgoJKG1pcHNfdW5zcGVjX2FkZHJlc3MpOiAuLi5oZXJlLgoJKG1pcHNfb3V0cHV0X21vdmUpOiBIYW5kbGUgTUlQUzE2IEhJR0ggbW92ZXMuICBVc2UgImxpIiB0byBsb2FkCgkxNi1iaXQgc3ltYm9saWMgY29uc3RhbnRzLiAgQXNzZXJ0IGFwcHJvcm9waWF0ZSBjb25kaXRpb25zIGZvcgoJdXNpbmcgdGhlICJsYSIgYW5kICJkbGEiIG1hY3Jvcy4KCShtaXBzX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgLW1jb2RlLXJlYWRhYmxlPS4KCShvdmVycmlkZV9vcHRpb25zKTogVXNlICVoaS8lbG8gcmVsb2NhdGlvbnMgZm9yIFRBUkdFVF9NSVBTMTYgdG9vLgoJU2V0IHVwIG1pcHNfbG9fcmVsb2NzW1NZTUJPTF8zMl9ISUdIXS4KCShtaXBzX3N0cmlwX3Vuc3BlY19hZGRyZXNzKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbS4uLgoJKHByaW50X29wZXJhbmRfcmVsb2MpOiAuLi5oZXJlLgoJKHByaW50X29wZXJhbmQpOiBQYXNzIGNvbnN0YW50cyB0aHJvdWdoIG1pcHNfc3RyaXBfdW5zcGVjX2FkZHJlc3MuCgkocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogTGlrZXdpc2UuCgkobWlwc19vdXRwdXRfbWlfdGh1bmspOiBSZW1vdmUgZ3VhcmQgb2YgbWlwczE2X2xheV9vdXRfY29uc3RhbnRzLgoJKG1pcHNfc2VsZWN0X3J0eF9zZWN0aW9uKTogUmVtb3ZlIE1JUFMxNiBoYW5kbGluZy4KCShtaXBzMTZfZ3BfcHNldWRvX3JlZyk6IENoZWNrIGN1cnJlbnRseV9leHBhbmRpbmdfdG9fcnRsLgoJKG1pcHMxNl9yZXdyaXRlX3Bvb2xfcmVmcyk6IFdyYXAgdGhlIGxhYmVscyBpbiBhbiBhZGRyZXNzIFVOU1BFQy4KCShtaXBzMTZfbGF5X291dF9jb25zdGFudHMpOiBEbyBub3RoaW5nIHVubGVzcwoJVEFSR0VUX01JUFMxNl9QQ1JFTF9MT0FEUy4KCShtaXBzX2F2b2lkX2hhemFyZHMpOiBSZW1vdmUgZ3VhcmQgb2YgbWlwczE2X2xheV9vdXRfY29uc3RhbnRzLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBTcGxpdCBISUdIcyBmb3IgTUlQUzE2LgoJKHRhYmxlanVtcCk6IFVzZSBUQVJHRVRfTUlQUzE2X1NIT1JUX0pVTVBfVEFCTEVTLgoKMjAwNy0wOC0wOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2VtaXRfbW92ZSk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19lbWl0X21vdmUpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19mb3JjZV90ZW1wb3JhcnkpOiBVc2UgbWlwc19lbWl0X21vdmUgaW5zdGVhZCBvZiBlbWl0X21vdmVfaW5zbi4KCShtaXBzX2xlZ2l0aW1pemVfY29uc3RfbW92ZSk6IExpa2V3aXNlLgoJKG1pcHNfbGVnaXRpbWl6ZV9tb3ZlKTogTGlrZXdpc2UuCgkobWlwc19zcGxpdF82NGJpdF9tb3ZlKTogTGlrZXdpc2UuCgkobWlwc19yZXN0b3JlX2dwKTogTGlrZXdpc2UuCgkobWlwc19sb2FkX2NhbGxfYWRkcmVzcyk6IExpa2V3aXNlLgoJKG1pcHNfZW1pdF9mY2NfcmVsb2FkKTogTGlrZXdpc2UuCgkobWlwc19zZXRfcmV0dXJuX2FkZHJlc3MpOiBMaWtld2lzZS4KCShtaXBzX2Jsb2NrX21vdmVfc3RyYWlnaHQpOiBMaWtld2lzZS4KCShtaXBzX2Jsb2NrX21vdmVfbG9vcCk6IExpa2V3aXNlLgoJKG1pcHNfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IExpa2V3aXNlLgoJKG1pcHNfc2F2ZV9yZWcpOiBMaWtld2lzZS4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKG1pcHNfcmVzdG9yZV9yZWcpOiBMaWtld2lzZS4KCShtaXBzX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKG1pcHNfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IExpa2V3aXNlLgoJKG1pcHNfYnVpbHRpbl9icmFuY2hfYW5kX21vdmUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZml4dW5zX3RydW5jZGZzaTIpOiBMaWtld2lzZS4KCShmaXh1bnNfdHJ1bmNkZmRpMik6IExpa2V3aXNlLgoJKGZpeHVuc190cnVuY3Nmc2kyKTogTGlrZXdpc2UuCgkoZml4dW5zX3RydW5jc2ZkaTIpOiBMaWtld2lzZS4KCShsb2FkZ3BfYWJzb2x1dGUpOiBMaWtld2lzZS4KCShidWlsdGluX3NldGptcF9zZXR1cCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fbG9uZ2ptcCk6IExpa2V3aXNlLgoJKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoKMjAwNy0wOC0wOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX3NwbGl0X3N5bWJvbCk6IEFkZCBhIG1vZGUgYW5kCglhbiAicnR4ICoiIGFyZ3VtZW50LiAgUmV0dXJuIGEgYm9vbC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NwbGl0X3N5bWJvbCk6IEFjY2VwdCBhcmJpdHJhcnkgc291cmNlCgl2YWx1ZXMgYW5kIHJldHVybiB0cnVlIGlmIHRoZXkgY2FuIGJlIHNwbGl0LiAgVGFrZSB0aGUgc2FtZSBraW5kIG9mCgltb2RlIGFyZ3VtZW50IGFzIG1pcHNfc3ltYm9sX2luc25zLiAgQWRkIGEgImxvX3N1bV9vdXQiIHBhcmFtZXRlcgoJYW5kIHN0b3JlIHRoZSBsb19zdW0gdGhlcmUgaWYgbm9ubnVsbC4gIFVzZSB0aGUgc3ltYm9sIHR5cGUgdG8KCWRldGVybWluZSB3aGV0aGVyIGEgJGdwIG9yIEhJR0ggaXMgbmVlZGVkLgoJKG1pcHNfbGVnaXRpbWl6ZV9hZGRyZXNzKTogVXBkYXRlIGNhbGwgdG8gbWlwc19zcGxpdF9zeW1ib2wgYW5kCglzaW1wbGlmeSBhY2NvcmRpbmdseS4KCShtaXBzX2xlZ2l0aW1pemVfY29uc3RfbW92ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbiB0aGUgY29tYmluZSBkZWZpbmVfc3BsaXQsCgljaGVjayBtaXBzX3NwbGl0X3N5bWJvbCBpbnN0ZWFkIG9mIHNwbGl0dGFibGVfc3ltYm9saWNfb3BlcmFuZC4KCVVwZGF0ZSB1c2Ugb2YgbWlwc19zcGxpdF9zeW1ib2wgaW4gdGhlIGdlbmVyYXRvciBjb2RlLgoJKiBjb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kIChzcGxpdHRhYmxlX3N5bWJvbGljX29wZXJhbmQpOiBEZWxldGUuCgoyMDA3LTA4LTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zeW1ib2xpY19hZGRyZXNzX3ApOiBEZWxldGUuCgkobWlwc19zeW1ib2xfaW5zbnNfMSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShtaXBzX3N5bWJvbF9pbnNucyk6IC4uLmhlcmUuICBUYWtlIGEgbW9kZSBhcmd1bWVudC4gIFRyZWF0IGxvYWRzCglhbmQgc3RvcmVzIHNlcGFyYXRlbHkgZnJvbSBsb2FkIGFkZHJlc3Nlcy4KCShtaXBzX2NsYXNzaWZ5X2FkZHJlc3MpOiBSZXBsYWNlIHVzZXMgb2YgbWlwc19zeW1ib2xpY19hZGRyZXNzX3AKCXdpdGggdXNlcyBvZiBtaXBzX3N5bWJvbF9pbnNucy4KCShtaXBzX2FkZHJlc3NfaW5zbnMpOiBVcGRhdGUgY2FsbHMgdG8gbWlwc19zeW1ib2xfaW5zbnMuCgkobWlwc19jb25zdF9pbnNucyk6IExpa2V3aXNlLgoJKG1pcHNfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTGlrZXdpc2UuCgoyMDA3LTA4LTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKFNZTUJPTF9GT1JDRV9UT19NRU0pOiBOZXcgc3ltYm9sIHR5cGUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBTa2lwIFRBUkdFVF9BQklDQUxMUwoJYmxvY2sgZm9yIGxvY2FsbHktYmluZGluZyBzeW1ib2xzIGlmIFRBUkdFVF9BQlNPTFVURV9BQklDQUxMUy4KCVJldHVybiBTWU1CT0xfRk9SQ0VfVE9fTUVNIGluc3RlYWQgb2YgU1lNQk9MX0FCU09MVVRFIGZvcgoJbm9uLWNhbGwgY29udGV4dHMgaWYgVEFSR0VUX01JUFMxNi4KCShtaXBzX3N5bWJvbGljX2NvbnN0YW50X3ApOiBIYW5kbGUgU1lNQk9MX0ZPUkNFX1RPX01FTS4KCShtaXBzX3N5bWJvbGljX2FkZHJlc3NfcCk6IExpa2V3aXNlLiAgUmVtb3ZlIHNwZWNpYWwgVEFSR0VUX01JUFMxNgoJY29kZSBmb3IgU1lNQk9MX0FCU09MVVRFLgoJKG1pcHNfc3ltYm9sX2luc25zKTogTGlrZXdpc2UuCgoyMDA3LTA4LTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfc3ltYm9sX2NvbnRleHQpOiBOZXcgZW51bWVyYXRpb24uCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBUYWtlIGEgY29udGV4dCBhcmd1bWVudC4KCShtaXBzX3N5bWJvbGljX2NvbnN0YW50X3ApOiBMaWtld2lzZS4gIFVwZGF0ZSB0aGUgY2FsbCB0bwoJbWlwc19jbGFzc2lmeV9zeW1ib2wuCgkobWlwc19jbGFzc2lmeV9hZGRyZXNzKTogVXBkYXRlIHRoZSBjYWxscyB0byBtaXBzX3N5bWJvbGljX2NvbnN0YW50X3AuCgkobWlwc19jb25zdF9pbnNucyk6IExpa2V3aXNlLiAgVXBkYXRlIHRoZSBjYWxsIHRvIG1pcHNfY2xhc3NpZnlfc3ltYm9sLgoJKG1pcHNfbGVnaXRpbWl6ZV9hZGRyZXNzKTogVXBkYXRlIHRoZSBjYWxsIHRvIG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcC4KCShwcmludF9vcGVyYW5kX3JlbG9jKTogQWRkIGEgY29udGV4dCBhcmd1bWVudC4gIFVwZGF0ZSB0aGUgY2FsbCB0bwoJbWlwc19zeW1ib2xpY19jb25zdGFudF9wLgoJKHByaW50X29wZXJhbmQpOiBVcGRhdGUgdGhlIGNhbGxzIHRvIHByaW50X29wZXJhbmRfcmVsb2MuCgkocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogVXNlIHByaW50X29wZXJhbmRfcmVsb2MgcmF0aGVyIHRoYW4KCXByaW50X29wZXJhbmQuCgkobWlwc19yZXdyaXRlX3NtYWxsX2RhdGFfcCk6IEFkZCBhIGNvbnRleHQgYXJndW1lbnQuICBVcGRhdGUgdGhlIGNhbGwKCXRvIG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcC4KCShtaXBzX3NtYWxsX2RhdGFfcGF0dGVybl8xKTogTWFrZSBEQVRBIHRoZSBjb250YWluaW5nIG1lbS4KCVVwZGF0ZSB0aGUgY2FsbCB0byBtaXBzX3Jld3JpdGVfc21hbGxfZGF0YV9wLgoJKG1pcHNfcmV3cml0ZV9zbWFsbF9kYXRhXzEpOiBMaWtld2lzZS4KCShtaXBzX3VzZV9hbmNob3JzX2Zvcl9zeW1ib2xfcCk6IFVwZGF0ZSB0aGUgY2FsbCB0bwoJbWlwc19zeW1ib2xpY19jb25zdGFudF9wLgoJKiBjb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kIChjb25zdF9jYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgoJKHNwbGl0dGFibGVfc3ltYm9saWNfb3BlcmFuZCk6IExpa2V3aXNlLgoJKG1vdmVfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGFic29sdXRlX3N5bWJvbGljX29wZXJhbmQpOiBMaWtld2lzZS4KCShnb3RfZGlzcF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZ290X3BhZ2Vfb2ZzdF9vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDA3LTA4LTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKFNZTUJPTF9HRU5FUkFMKTogUmVuYW1lIHRvLi4uCgkoU1lNQk9MX0FCU09MVVRFKTogLi4udGhpcy4KCShTWU1CT0xfU01BTExfREFUQSk6IFJlbmFtZSB0by4uLgoJKFNZTUJPTF9HUF9SRUxBVElWRSk6IC4uLnRoaXMuCgkoU1lNQk9MX0NPTlNUQU5UX1BPT0wpOiBSZW5hbWUgdG8uLi4KCShTWU1CT0xfUENfUkVMQVRJVkUpOiAuLi50aGlzLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY2xhc3NpZnlfc3ltYm9sLCBtaXBzX3N5bWJvbGljX2NvbnN0YW50X3ApCgkobWlwc19zeW1ib2xpY19hZGRyZXNzX3AsIG1pcHNfc3ltYm9sX2luc25zLCBvdmVycmlkZV9vcHRpb25zKQoJKG1pcHNfcmV3cml0ZV9zbWFsbF9kYXRhX3AsIG1pcHNfdXNlX2FuY2hvcnNfZm9yX3N5bWJvbF9wKTogVXBkYXRlCglhZnRlciBhYm92ZSBjaGFuZ2VzLgoJKiBjb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kIChjb25zdF9jYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgoJKGdlbmVyYWxfc3ltYm9saWNfb3BlcmFuZCk6IFJlbmFtZSB0by4uLgoJKGFic29sdXRlX3N5bWJvbGljX29wZXJhbmQpOiAuLi50aGlzLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBVcGRhdGUgYWZ0ZXIgYWJvdmUgY2hhbmdlcy4KCjIwMDctMDgtMDggIFZsYWRpbWlyIFlhbm92c2t5ICA8eWFub3ZAaWwuaWJtLmNvbT4KCSAgICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBkZGcuYyAocHJpbnRfZGRnKTogQWRkIGR1bXAgaW5mb3JtYXRpb24uCgkqIG1vZHVsby1zY2hlZC5jIChwcmludF9ub2RlX3NjaGVkX3BhcmFtcyk6IEFkZCBwYXJhbWV0ZXIgYW5kCgl2ZXJib3NpdHkuCgkoY2FsY3VsYXRlX21heGlpKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKHVuZG9fZ2VuZXJhdGVfcmVnX21vdmVzKTogTGlrZXdpc2UuCgkodW5kb19wZXJtdXRlX3BhcnRpYWxfc2NoZWR1bGUpOiBMaWtld2lzZS4KCShrZXJuZWxfbnVtYmVyX29mX2N5Y2xlcyk6IExpa2V3aXNlLgoJKE1BWElJX0ZBQ1RPUik6IE5ldyBkZWZpbml0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgdXBwZXIgYm91bmQgb2YgSUkuCgkoc21zX3NjaGVkdWxlKTogVXNlIGl0LiAgUmVtb3ZlIHByb2ZpdGFiaWxpdHkgY2hlY2tzLgoJKHNtc19zY2hlZHVsZV9ieV9vcmRlcik6IEZpeCBvcmRlciBvZiBub2RlcyB3aXRoaW4gdGhlIGN5Y2xlLgoKMjAwNy0wOC0wOCAgU2FtdWVsIFRoaWJhdWx0ICA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KCgkqIGNvbmZpZy9pMzg2L2dudS5oIChTVEFSVEZJTEVfU1BFQyk6IFVzZSBnY3J0MC5vIGluIHByb2ZpbGUgbW9kZSwgYWRkCgktcHJvZmlsZSBvcHRpb24sIGFkZCBwaWUgc3VwcG9ydC4KCShFTkRGSUxFX1NQRUMpOiBOZXcgc3BlYy4KCSogY29uZmlnL2dudS5oIChMSUJfU1BFQyk6IEFkZCAtcHJvZmlsZSBvcHRpb24uCgoyMDA3LTA4LTA4ICBTYW11ZWwgVGhpYmF1bHQgIDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgoKCSogY29uZmlnL2kzODYvZ251LmggKENQUF9TUEVDKTogQWRkIC1wdGhyZWFkIG9wdGlvbi4KCSogY29uZmlnL2dudS5oIChMSUJfU1BFQyk6IExpa2V3aXNlLgoKMjAwNy0wOC0wNyAgWWF6IFNhaXRvICA8c2FpdG9AZ29vZ2xlLmNvbT4KCSAgICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogY29tbW9uLm9wdCAoZmluc3RydW1lbnQtZnVuY3Rpb25zLWV4Y2x1ZGUtZnVuY3Rpb24tbGlzdCk6IE5ldwoJb3B0aW9uLgoJKGZpbnN0cnVtZW50LWZ1bmN0aW9ucy1leGNsdWRlLWZpbGUtbGlzdCk6IE5ldyBvcHRpb24uCgkqIG9wdHMuYyAoY2hhcl9wKTogRGVmaW5lIGFuZCBERUZfVkVDLgoJKGZsYWdfaW5zdHJ1bWVudF9mdW5jdGlvbnNfZXhjbHVkZV9mdW5jdGlvbnMpOiBOZXcgc3RhdGljCgl2YXJpYWJsZS4KCShmbGFnX2luc3RydW1lbnRfZnVuY3Rpb25zX2V4Y2x1ZGVfZmlsZXMpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGFkZF9pbnN0cnVtZW50X2Z1bmN0aW9uc19leGNsdWRlX2xpc3QpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGZsYWdfaW5zdHJ1bWVudF9mdW5jdGlvbnNfZXhjbHVkZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIG5ldyBvcHRpb25zLgoJKiBmbGFncy5oIChmbGFnX2luc3RydW1lbnRfZnVuY3Rpb25zX2V4Y2x1ZGVfcCk6IERlY2xhcmUuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2Z1bmN0aW9uX3RyZWUpOiBDYWxsCglmbGFnX2luc3RydW1lbnRfZnVuY3Rpb25zX2V4Y2x1ZGVfcC4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSk6IE1lbnRpb24gbmV3IG9wdGlvbnMuCgkoQ29kZSBHZW4gT3B0aW9ucyk6IERvY3VtZW50IG5ldyBvcHRpb25zLgoKMjAwNy0wOC0wNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyNzc2CgkqIGxvd2VyLXN1YnJlZy5jIChyZXNvbHZlX2Nsb2JiZXIpOiBDYWxsIHJlc29sdmVfcmVnX25vdGVzLgoJKHJlc29sdmVfdXNlKTogTGlrZXdpc2UuCgkoZGVjb21wb3NlX211bHRpd29yZF9zdWJyZWdzKTogUmVtb3ZlICJjaGFuZ2VkIiBsb2NhbCB2YXJpYWJsZS4KCjIwMDctMDgtMDcgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjOiBEZWZpbmUgSEFWRV9HTlVfQVMgaWYgJGdhc19mbGFnIGlzIHllcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGdjYy5jIFtIQVZFX0dOVV9BU106IEFkZCAiJXt2fSAle3c6LVd9ICV7SSp9ICIgdG8gYXNtX29wdGlvbnMKCXNwZWMgc3RyaW5nLgoKMjAwNy0wOC0wNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGxvd2VyLXN1YnJlZy5jIChyZXNvbHZlX2Nsb2JiZXIpOiBJZiB0aGUgY2xvYmJlciBoYXMgYSBMSUJDQUxMCglub3RlLCBqdXN0IGRlbGV0ZSB0aGUgaW5zbi4KCjIwMDctMDgtMDcgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJUFIgYm9vdHN0cmFwLzMyOTczCgkqIGdlbmd0eXBlLWxleC5sOiBJZ25vcmUgYmFja3NsYXNoL25ld2xpbmUgcGFpciB3aGlsZSBzY2FubmluZyBhCglzdHJ1Y3QgZGVmaW5pdGlvbi4KCjIwMDctMDgtMDcgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBsb3dlci1zdWJyZWcuYyAocmVzb2x2ZV9zdWJyZWdfdXNlKTogUmVtb3ZlIGFzc2VydGlvbi4KCShmaW5kX2RlY29tcG9zYWJsZV9zaGlmdF96ZXh0LCByZXNvbHZlX3NoaWZ0X3pleHQpOiBOZXcgZnVuY3Rpb25zLgoJKGRlY29tcG9zZV9tdWx0aXdvcmRfc3VicmVncyk6IFVzZSB0aGUgZnVuY3Rpb25zIGFib3ZlIHRvIGRlY29tcG9zZQoJbXVsdGl3b3JkIHNoaWZ0cyBhbmQgemVyby1leHRlbmRzLgoKMjAwNy0wOC0wNyAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKFRlc3QgRGlyZWN0aXZlcyk6IEZpeCAiY29tcGlsZSIgYW5kCgkiYXNzZW1ibGUiIGRlc2NyaXB0aW9ucyB3aGljaCB3ZXJlIHN3YXBwZWQuCgoyMDA3LTA4LTA2ICBDaGFvLXlpbmcgRnUgIDxmdUBtaXBzLmNvbT4KCgkqIGZpeGVkLXZhbHVlLmg6IE5ldyBmaWxlLgoJKiBmaXhlZC12YWx1ZS5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogQWRkIGZpeGVkLXZhbHVlLm8uCgkoZml4ZWQtdmFsdWUubyk6IE5ldyBydWxlLgoJKEdURklMRVMpOiBBZGQgZml4ZWQtdmFsdWUuaC4KCSogZG91YmxlLWludC5jIChkb3VibGVfaW50X3NjbXApOiBXZSBzaG91bGQgdXNlIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQKCXRvIGNvbXBhcmUgYS5sb3cgYW5kIGIubG93LgoJKiBnZW5ndHlwZS5jIChtYWluKTogSGFuZGxlIEZJWEVEX1ZBTFVFX1RZUEUgdHlwZSBhcyBzY2FsYXIgdHlwZWRlZi4KCjIwMDctMDgtMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCSAgICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8zMTg2OAoJKiBjb25maWcuZ2NjICh4ODZfNjQtKi1mcmVlYnNkKik6IEFkZCBpMzg2L3QtY3J0c3R1ZmYgdG8KCXRtYWtlX2ZpbGUuCgkoeDg2XzY0LSotbmV0YnNkKik6IExpa2V3aXNlLgoJKHg4Nl82NC0qLWxpbnV4Kik6IExpa2V3aXNlLgoJKHg4Nl82NC0qLWtmcmVlYnNkKi1nbnUpOiBMaWtld2lzZS4KCSh4ODZfNjQtKi1rbmV0YnNkKi1nbnUpOiBMaWtld2lzZS4KCShpWzM0NTY3XTg2LSotc29sYXJpczIuMVswLTldKik6IExpa2V3aXNlLgoKCSogY29uZmlnL2kzODYvdC1saW51eDY0IChDUlRTVFVGRl9UX0NGTEFHUyk6IFJlbW92ZWQuCgoJKiBjb25maWcvaTM4Ni90LWNydHN0dWZmIChDUlRTVFVGRl9UX0NGTEFHUyk6IFVwZGF0ZSBjb21tZW50cy4KCUFkZCAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzLgoKCSogY29uZmlnL3QtZnJlZWJzZCAoQ1JUU1RVRkZfVF9DRkxBR1NfUyk6IEFkZCAkKENSVFNUVUZGX1RfQ0ZMQUdTKS4KCSogY29uZmlnL3QtbGliYy1vayAoQ1JUU1RVRkZfVF9DRkxBR1NfUyk6IExpa2V3aXNlLgoJKiBjb25maWcvdC1seW54IChDUlRTVFVGRl9UX0NGTEFHU19TKTogTGlrZXdpc2UuCgkqIGNvbmZpZy90LW5ldGJzZCAoQ1JUU1RVRkZfVF9DRkxBR1NfUyk6IExpa2V3aXNlLgoJKiBjb25maWcvdC1zdnI0IChDUlRTVFVGRl9UX0NGTEFHU19TKTogTGlrZXdpc2UuCgoyMDA3LTA4LTA2ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9jX21vZGVfZm9yX3N1ZmZpeCk6IE5ldy4KCShUQVJHRVRfQ19NT0RFX0ZPUl9TVUZGSVgpOiBOZXcuCgoyMDA3LTA4LTA2ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2Rpdi5tZCAobTJzdWJyZjRfY29uZCk6IENoYW5nZSAnZycgdG8gJ0cnLgoKMjAwNy0wOC0wNiAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKE1PREVTX1RJRUFCTEVfUCk6IEZpeCB0eXBvLgoKMjAwNy0wOC0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZDogQ2hlY2sgVEFSR0VUXyBtYWNyb3MgYW5kIG9wdGltaXplX3NpemUKCWJlZm9yZSBjaGVja2luZyBmdW5jdGlvbiByZXR1cm5zIGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLgoKMjAwNy0wOC0wNiAgQWxmcmVkIE1pbmFyaWsgIDxhLm1pbmFyaWtAYW9uLmF0PgoKCVBSIHBjaC8xMzY3NgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZCAuaHAsIC5oeHgsIC5ocHAsIC5oLCAuSFBQLCAudGNjIGFzIGMrKyBoZWFkZXIuCgoyMDA4LTA4LTA1ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyOTg4CgkqIHRyZWUuYyAoYnVpbGQyX3N0YXQpOiBJbnN0ZWFkIG9mIGNoZWNraW5nIGZvciBJTlRFR0VSX1RZUEUsIGNoZWNrCglmb3IgSU5URUdSQUxfVFlQRV9QLgoKMjAwOC0wOC0wNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIC0tZW5hYmxlLWNoZWNraW5nPWRmIGZyb20gZGVmYXVsdCBzZXR0aW5ncy4KCSogdHJlZS1wYXNzLmggKFRPRE9fZGZfdmVyaWZ5KTogTmV3LiAgU2hpZnQgVE9ET19tYXJrX2ZpcnN0X2luc3RhbmNlLgoJKiBkZi1jb3JlLmMgKGRmX2ZpbmlzaF9wYXNzKSBbRU5BQkxFX0NIRUNLSU5HXTogU2NoZWR1bGUgdmVyaWZpY2F0aW9uCglpZiB0aGUgcGFyYW1ldGVyIGlzIHRydWUuCgkoZGZfYW5hbHl6ZSkgWyFFTkFCTEVfREZfQ0hFQ0tJTkddOiBBbHNvIGRvIHZlcmlmaWNhdGlvbiBpZiB0aGUKCURGX1ZFUklGWV9TQ0hFRFVMRUQgZmxhZyBpcyB0cnVlLgoJKiBkZi5oIChlbnVtIGRmX2NoYW5nZWFibGVfZmxhZ3MpOiBBZGQgREZfVkVSSUZZX1NDSEVEVUxFRC4KCShkZl9maW5pc2hfcGFzcyk6IEFkanVzdCBwcm90b3R5cGUuCgkqIHBhc3Nlcy5jIChleGVjdXRlX3RvZG8pOiBTY2hlZHVsZSB2ZXJpZmljYXRpb24gaWYgVE9ET19kZl92ZXJpZnkgaXMKCXRydWUuCgoJKiBzZWUuYyAocGFzc19zZWUpOiBBZGQgVE9ET19kZl92ZXJpZnkuCgkqIGxvb3AtaW5pdC5jIChwYXNzX3J0bF9tb3ZlX2xvb3BfaW52YXJpYW50cyk6IEFkZCBUT0RPX2RmX3ZlcmlmeS4KCSogZ2xvYmFsLmMgKHJlc3Rfb2ZfaGFuZGxlX2dsb2JhbF9hbGxvYyk6IFNjaGVkdWxlIHZlcmlmaWNhdGlvbgoJYWZ0ZXIgdGhlIHBhc3MuCgkqIGxvY2FsLWFsbG9jLmMgKHJlc3Rfb2ZfaGFuZGxlX2xvY2FsX2FsbG9jKTogU2NoZWR1bGUgdmVyaWZpY2F0aW9uCgliZWZvcmUgdGhlIHBhc3MuCgkqIGZ1bmN0aW9uLmMgKHBhc3NfdGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZSk6IEFkZCBUT0RPX2RmX3ZlcmlmeS4KCSogZ2NzZS5jIChyZXN0X29mX2hhbmRsZV9nY3NlKTogQWRqdXN0IGNhbGwgdG8gZGZfZmluaXNoX3Bhc3MuCgkqIGxvb3AtaXYuYyAoaXZfYW5hbHlzaXNfZG9uZSk6IFNjaGVkdWxlIHZlcmlmaWNhdGlvbiBhZnRlciB0aGUgcGFzcy4KCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9vdXRwdXRfbWlfdGh1bmspOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcmVvcmcpOiBBZGp1c3QgY2FsbCB0byBkZl9maW5pc2hfcGFzcy4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX3Jlb3JnKTogQWRqdXN0IGNhbGwgdG8gZGZfZmluaXNoX3Bhc3MuCgoyMDA3LTA4LTA1ICBWbGFkaW1pciBZYW5vdnNreSAgPHlhbm92QGlsLmlibS5jb20+CgkgICAgUmV2aXRhbCBFcmVzIDxlcmVzQGlsLmlibS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1mbW9kdWxvLXNjaGVkLWFsbG93LXJlZ21vdmVzKTogRG9jdW1lbnQgbmV3CglmbGFnLgoJKiBkZGcuYyAoY3JlYXRlX2RkZ19kZXBlbmRlbmNlKTogUmVuYW1lIHRvLi4uCgkoY3JlYXRlX2RkZ19kZXBfZnJvbV9pbnRyYV9sb29wX2xpbmspOiBUaGlzLiAgRG8gbm90IGNoZWNrCglmb3IgaW50ZXJsb29wIGVkZ2VzLiAgRG8gbm90IGNyZWF0ZSBhbnRpIGRlcGVuZGVuY2UgZWRnZSB3aGVuCglhIHRydWUgZGVwZW5kZW5jZSBlZGdlIGV4aXN0cyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIGFuZAoJLWZtb2R1bG8tc2NoZWQtYWxsb3ctcmVnbW92ZXMgaXMgc2V0LgoJKGJ1aWxkX2ludHJhX2xvb3BfZGVwcyk6IENhbGwgY3JlYXRlX2RkZ19kZXBfZnJvbV9pbnRyYV9sb29wX2xpbmsuCgkoYWRkX2Nyb3NzX2l0ZXJhdGlvbl9yZWdpc3Rlcl9kZXBzKTogQ3JlYXRlIGFudGkgZGVwZW5kZW5jZSBlZGdlCgl3aGVuIC1mbm8tbW9kdWxvLXNjaGVkLWFsbG93LXJlZ21vdmVzIGlzIHNldC4KCSogY29tbW9uLm9wdCAoLWZtb2R1bG8tc2NoZWQtYWxsb3ctcmVnbW92ZXMpOiBOZXcgZmxhZy4KCjIwMDctMDgtMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKG1vdnNpKTogQWRkIGJyYWNlcy4KCjIwMDctMDgtMDQgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzI3ODAKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSA8Y2FzZSBNSU5VU19FWFBSPik6IEZpeCB0aGUgdHlwZSBvZgoJb3BlcmFuZHMgZm9yIHRoZSBmb2xkaW5nIG9mICJBIC0gKEEgJiBCKSIgaW50byAifkIgJiBBIjsgY2FzdCB0aGVtCgl0byB0eXBlLgoKMjAwNy0wOC0wMyAgWmRlbmVrIER2b3JhayAgPG9va0B1Y3cuY3o+CgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAodGhyZWFkX3Rocm91Z2hfYWxsX2Jsb2Nrcyk6IFVzZSBsb29wcycKCXN0YXRlIGFjY2Vzc29yIGZ1bmN0aW9ucy4KCSogY2ZnbG9vcG1hbmlwLmMgKHJlbW92ZV9wYXRoLCBjcmVhdGVfcHJlaGVhZGVycywKCWZvcmNlX3NpbmdsZV9zdWNjX2xhdGNoZXMsIGZpeF9sb29wX3N0cnVjdHVyZSk6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKHJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2EsCgl0cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlKTogRGl0dG8uCgkqIGNmZ2xvb3BhbmFsLmMgKG1hcmtfaXJyZWR1Y2libGVfbG9vcHMpOiBEaXR0by4KCSogbG9vcC1pbml0LmMgKGxvb3Bfb3B0aW1pemVyX2luaXQsIGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXplKToKCURpdHRvLgoJKiB0cmVlLWNmZ2NsZWFudXAuYyAoY2xlYW51cF90cmVlX2NmZ19ub2xvb3AsIHJlcGFpcl9sb29wX3N0cnVjdHVyZXMsCgljbGVhbnVwX3RyZWVfY2ZnKTogRGl0dG8uCgkqIHRyZWUtY2ZnLmMgKHRyZWVfbWVyZ2VfYmxvY2tzKTogRGl0dG8uCgkqIGNmZ2xvb3AuYyAocmVzY2FuX2xvb3BfZXhpdCwgcmVjb3JkX2xvb3BfZXhpdHMsCglyZWxlYXNlX3JlY29yZGVkX2V4aXRzLCBnZXRfbG9vcF9leGl0X2VkZ2VzLCB2ZXJpZnlfbG9vcF9zdHJ1Y3R1cmUsCglsb29wX3ByZWhlYWRlcl9lZGdlLCBzaW5nbGVfZXhpdCk6IERpdHRvLgoJKGZsb3dfbG9vcHNfZmluZCk6IERvIG5vdCBjbGVhciBsb29wcy0+c3RhdGUuCgkqIGNmZ2xvb3AuaCAobG9vcHNfc3RhdGVfc2F0aXNmaWVzX3AsIGxvb3BzX3N0YXRlX3NldCwKCWxvb3BzX3N0YXRlX2NsZWFyKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDctMDgtMDMgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzIzOTkKCSogdHJlZS1zc2EtYWRkcmVzcy5jIChhZGRfdG9fcGFydHMpOiBVc2UgUE9JTlRFUl9QTFVTX0VYUFIKCXdoZW4gYWRkaW5nIHRvIHRoZSBiYXNlIGFuZCBjb252ZXJ0IEVMVCB0byBzaXpldHlwZSBpbnN0ZWFkIG9mIHR5cGUuCgoyMDA3LTA4LTAzICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyMzA0CgkqIGlwYS1yZWZlcmVuY2UuYyAoaGFzX3Byb3Blcl9zY29wZV9mb3JfYW5hbHlzaXMpOiBSZXR1cm4gZmFsc2Ugd2hlbgoJdGhlIGRlY2wncyB0eXBlIGhhcyBUWVBFX05FRURTX0NPTlNUUlVDVElORyBzZXQuCgoyMDA3LTA4LTAzICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyOTM1CgkqIGZvbGQtY29udmVydC5jIChmb2xkX25lZ2F0ZV9leHByIDxOT1BfRVhQUj4pOiBDb252ZXJ0IGJhY2sgdG8gdGhlCgkgY29ycmVjdCB0eXBlIHRoZSBuZWdhdGUgZXhwcmVzc2lvbi4KCjIwMDctMDgtMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoc2V0dXBfaW5jb21pbmdfdmFyYXJnc182NCk6IFRvbGVyYXRlIDY0Yml0CglwcmVmZXJyZWQgc3RhY2sgYm91bmRhcnkuCgoyMDA3LTA4LTAzICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzdHJ1Y3QgcHJvY2Vzc29yX2Nvc3QpOiBDaGFuZ2UKCWwxX2NhY2hlX2xpbmVzIHRvIGwxX2NhY2hlX3NpemUuICBBZGQgbDJfY2FjaGVfc2l6ZS4KCSgqX2Nvc3QpOiBDb252ZXJ0IGwxIGNhY2hlIGluZm9ybWF0aW9uIHRvIGtpbG9ieXRlcy4gIEFkZCBsMiBjYWNoZQoJaW5mb3JtYXRpb24uCgkocmlvczFfY29zdHMsIHJpb3MyX2Nvc3QpOiBDb3JyZWN0IGNhY2hlIGxpbmUgc2l6ZS4KCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBsMi1jYWNoZS1zaXplIHBhcmFtZXRlci4KCjIwMDctMDgtMDMgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoJICAgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0Bnb29nbGUuY29tPgoKCVBSIDMxNTIxCgkqIHRyZWUtdnJwLmMgKHNpbXBsaWZ5X2Rpdl9vcl9tb2RfdXNpbmdfcmFuZ2VzKTogQWxzbyBzaW1wbGlmeQoJaWYgdGhlIHJhbmdlIGluY2x1ZGVzIDAuCgoyMDA3LTA4LTAzICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zcHUvc3B1Lm1kIChkZnRzdiwgZGZ0c3ZfY2VsbGVkcCk6IEF0dGFjaCB0aGUgYXBwcm9wcmlhdGUKCW1vZGUgdG8gdW5zcGVjIGV4cHJlc3Npb25zIHRvIHNpbGVuY2UgYSB3YXJuaW5nIGZyb20gdGhlIGdlbmVyYXRvcgoJcHJvZ3JhbXMuCgkKMjAwNy0wOC0wMiAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9jb25zdHJhaW50cy5tZCAoIlUiKTogTWFrZSBjb25zdHJhaW50IHZlY3RvciBvbmx5LgoKMjAwNy0wOC0wMiAgTmF0aGFuIEZyb3lkICA8ZnJveWRuakBjb2Rlc291cmNlcnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjU0NDYKCSogYy1vYmpjLWNvbW1vbi5jIChjX2Nhbm5vdF9pbmxpbmVfdHJlZV9mbik6IENoZWNrIGZvciBhbgoJYWx3YXlzX2lubGluZSBhdHRyaWJ1dGUgb24gdGhlIGZ1bmN0aW9uIGRlY2wuCgoyMDA3LTA4LTAyICBOYXRoYW4gRnJveWQgIDxmcm95ZG5qQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNTQ0NQoJKiB2YXJhc20uYyAoZGVmYXVsdF9iaW5kc19sb2NhbF9wXzEpOiBDb25zdWx0IGZsYWdfd2hvbGVfcHJvZ3JhbQoJaWYgd2UgYXJlIGNvbXBpbGluZyB3aXRoIC1mUElDLgoKMjAwNy0wOC0wMiAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoJICAgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgoJKiBsb25nbG9uZy5oIFtfX21pcHNfX10gKGNvdW50X2xlYWRpbmdfemVyb3MsIENPVU5UX0xFQURJTkdfWkVST1NfMCk6CglEZWZpbmUgZm9yIE1JUFMzMiBhbmQgTUlQUzY0LgoKMjAwNy0wOC0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9ob3N0LWhwdXguYzogQ2hhbmdlIGNvcHlyaWdodCBoZWFkZXIgdG8gcmVmZXIgdG8gdmVyc2lvbgoJMyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kIHRvIHBvaW50IHJlYWRlcnMgYXQgdGhlCglDT1BZSU5HMyBmaWxlIGFuZCB0aGUgRlNGJ3MgbGljZW5zZSB3ZWIgcGFnZS4KCSogY29uZmlnL2FscGhhL3ByZWRpY2F0ZXMubWQsIGNvbmZpZy9hbHBoYS92bXMtbGQuYywKCWNvbmZpZy9hbHBoYS9saW51eC5oLCBjb25maWcvYWxwaGEvYWxwaGEub3B0LAoJY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oLCBjb25maWcvYWxwaGEvdm1zLmgsIGNvbmZpZy9hbHBoYS9lbGYuaCwKCWNvbmZpZy9hbHBoYS92bXMtdW53aW5kLmgsIGNvbmZpZy9hbHBoYS9ldjQubWQsCgljb25maWcvYWxwaGEvZXY2Lm1kLCBjb25maWcvYWxwaGEvYWxwaGEuYywgY29uZmlnL2FscGhhL3Ztcy1jYy5jLAoJY29uZmlnL2FscGhhL2FscGhhLmgsIGNvbmZpZy9hbHBoYS9zeW5jLm1kLAoJY29uZmlnL2FscGhhL29wZW5ic2QuaCwgY29uZmlnL2FscGhhL2FscGhhLm1kLAoJY29uZmlnL2FscGhhL2FscGhhLW1vZGVzLmRlZiwgY29uZmlnL2FscGhhL2V2NS5tZCwKCWNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaCwgY29uZmlnL2FscGhhL2ZyZWVic2QuaCwKCWNvbmZpZy9hbHBoYS9vc2Y1LmgsIGNvbmZpZy9hbHBoYS9uZXRic2QuaCwgY29uZmlnL2FscGhhL3ZtczY0LmgsCgljb25maWcvYWxwaGEvY29uc3RyYWludHMubWQsIGNvbmZpZy9hbHBoYS9vc2YuaCwKCWNvbmZpZy9hbHBoYS94bS12bXMuaCwgY29uZmlnL2FscGhhL3VuaWNvc21rLmgsIGNvbmZpZy9saW51eC5oLAoJY29uZmlnL2Zydi9wcmVkaWNhdGVzLm1kLCBjb25maWcvZnJ2L2Zydi5oLCBjb25maWcvZnJ2L2xpbnV4LmgsCgljb25maWcvZnJ2L2Zydi5tZCwgY29uZmlnL2Zydi9mcnYub3B0LCBjb25maWcvZnJ2L2Zydi1tb2Rlcy5kZWYsCgljb25maWcvZnJ2L2Zydi1hc20uaCwgY29uZmlnL2Zydi9mcnYtcHJvdG9zLmgsCgljb25maWcvZnJ2L2Zydi1hYmkuaCwgY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL3MzOTAvdHBmLmgsCgljb25maWcvczM5MC9zMzkwLmMsIGNvbmZpZy9zMzkwL3ByZWRpY2F0ZXMubWQsIGNvbmZpZy9zMzkwL3MzOTAuaCwKCWNvbmZpZy9zMzkwL2xpbnV4LmgsIGNvbmZpZy9zMzkwL3RwZi5tZCwgY29uZmlnL3MzOTAvdHBmLm9wdCwKCWNvbmZpZy9zMzkwLzIwNjQubWQsIGNvbmZpZy9zMzkwLzIwODQubWQsIGNvbmZpZy9zMzkwL3MzOTAubWQsCgljb25maWcvczM5MC9zMzkwLm9wdCwgY29uZmlnL3MzOTAvczM5MC1tb2Rlcy5kZWYsCgljb25maWcvczM5MC9maXhkZmRpLmgsIGNvbmZpZy9zMzkwL2NvbnN0cmFpbnRzLm1kLAoJY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCwgY29uZmlnL3MzOTAvczM5MHguaCwgY29uZmlnL2VsZm9zLmgsCgljb25maWcvZGJ4Y29mZi5oLCBjb25maWcvbTMyYy9wcmVkaWNhdGVzLm1kLCBjb25maWcvbTMyYy9jb25kLm1kLAoJY29uZmlnL20zMmMvbTMyYy5jLCBjb25maWcvbTMyYy9taW5tYXgubWQsIGNvbmZpZy9tMzJjL2Jsa21vdi5tZCwKCWNvbmZpZy9tMzJjL20zMmMtcHJhZ21hLmMsIGNvbmZpZy9tMzJjL20zMmMuaCwKCWNvbmZpZy9tMzJjL3Byb2xvZ3VlLm1kLCBjb25maWcvbTMyYy9tMzJjLmFiaSwKCWNvbmZpZy9tMzJjL211bGRpdi5tZCwgY29uZmlnL20zMmMvYml0b3BzLm1kLCBjb25maWcvbTMyYy9tb3YubWQsCgljb25maWcvbTMyYy9hZGRzdWIubWQsIGNvbmZpZy9tMzJjL20zMmMubWQsIGNvbmZpZy9tMzJjL20zMmMub3B0LAoJY29uZmlnL20zMmMvdC1tMzJjLCBjb25maWcvbTMyYy9tMzJjLW1vZGVzLmRlZiwKCWNvbmZpZy9tMzJjL2p1bXAubWQsIGNvbmZpZy9tMzJjL3NoaWZ0Lm1kLAoJY29uZmlnL20zMmMvbTMyYy1wcm90b3MuaCwgY29uZmlnL2xpYmdsb3NzLmgsCgljb25maWcvc3B1L3NwdS1wcm90b3MuaCwgY29uZmlnL3NwdS9wcmVkaWNhdGVzLm1kLAoJY29uZmlnL3NwdS9zcHUtYnVpbHRpbnMuaCwgY29uZmlnL3NwdS9zcHUuYywKCWNvbmZpZy9zcHUvc3B1LWJ1aWx0aW5zLmRlZiwgY29uZmlnL3NwdS9zcHUtYnVpbHRpbnMubWQsCgljb25maWcvc3B1L3NwdS5oLCBjb25maWcvc3B1L3NwdS1lbGYuaCwgY29uZmlnL3NwdS9jb25zdHJhaW50cy5tZCwKCWNvbmZpZy9zcHUvc3B1Lm1kLCBjb25maWcvc3B1L3NwdS1jLmMsIGNvbmZpZy9zcHUvc3B1Lm9wdCwKCWNvbmZpZy9zcHUvc3B1LW1vZGVzLmRlZiwgY29uZmlnL3NwdS90LXNwdS1lbGYsIGNvbmZpZy9pbnRlcml4LmgsCgljb25maWcvc3BhcmMvaHlwZXJzcGFyYy5tZCwgY29uZmlnL3NwYXJjL3ByZWRpY2F0ZXMubWQsCgljb25maWcvc3BhcmMvbGludXguaCwgY29uZmlnL3NwYXJjL3NwNjQtZWxmLmgsCgljb25maWcvc3BhcmMvc3VwZXJzcGFyYy5tZCwgY29uZmlnL3NwYXJjL2N5cHJlc3MubWQsCgljb25maWcvc3BhcmMvb3BlbmJzZDEtNjQuaCwgY29uZmlnL3NwYXJjL29wZW5ic2Q2NC5oLAoJY29uZmlnL3NwYXJjL25pYWdhcmEubWQsIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCwKCWNvbmZpZy9zcGFyYy9sb25nLWRvdWJsZS1zd2l0Y2gub3B0LCBjb25maWcvc3BhcmMvdWx0cmEzLm1kLAoJY29uZmlnL3NwYXJjL3NwYXJjLm9wdCwgY29uZmlnL3NwYXJjL3N5bmMubWQsCgljb25maWcvc3BhcmMvc3AtZWxmLmgsIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCwKCWNvbmZpZy9zcGFyYy91bHRyYTFfMi5tZCwgY29uZmlnL3NwYXJjL2JpYXJjaDY0LmgsCgljb25maWcvc3BhcmMvc3BhcmMuYywgY29uZmlnL3NwYXJjL2xpdHRsZS1lbmRpYW4ub3B0LAoJY29uZmlnL3NwYXJjL3N5c3Y0LW9ubHkuaCwgY29uZmlnL3NwYXJjL3NwYXJjLmgsCgljb25maWcvc3BhcmMvbGludXg2NC5oLCBjb25maWcvc3BhcmMvZnJlZWJzZC5oLAoJY29uZmlnL3NwYXJjL3NvbDIuaCwgY29uZmlnL3NwYXJjL3J0ZW1zZWxmLmgsCgljb25maWcvc3BhcmMvbmV0YnNkLWVsZi5oLCBjb25maWcvc3BhcmMvdnh3b3Jrcy5oLAoJY29uZmlnL3NwYXJjL3NwYXJjLW1vZGVzLmRlZiwgY29uZmlnL3NwYXJjL3NwYXJjbGV0Lm1kLAoJY29uZmlnL3NwYXJjL3N5c3Y0LmgsIGNvbmZpZy92eC1jb21tb24uaCwgY29uZmlnL25ldGJzZC1hb3V0LmgsCgljb25maWcvZmxhdC5oLCBjb25maWcvbTMyci9tMzJyLm1kLCBjb25maWcvbTMyci9wcmVkaWNhdGVzLm1kLAoJY29uZmlnL20zMnIvbGl0dGxlLmgsIGNvbmZpZy9tMzJyL20zMnIuYywgY29uZmlnL20zMnIvbTMyci5vcHQsCgljb25maWcvbTMyci9saW51eC5oLCBjb25maWcvbTMyci9jb25zdHJhaW50cy5tZCwKCWNvbmZpZy9tMzJyL20zMnIuaCwgY29uZmlnL20zMnIvbTMyci1wcm90b3MuaCwgY29uZmlnL3Z4d29ya3Mub3B0LAoJY29uZmlnL2Rhcndpbi1jLmMsIGNvbmZpZy9kYXJ3aW4ub3B0LCBjb25maWcvaTM4Ni9pMzg2LmgsCgljb25maWcvaTM4Ni9jeWdtaW5nLmgsIGNvbmZpZy9pMzg2L2xpbnV4LmgsIGNvbmZpZy9pMzg2L2N5Z3dpbi5oLAoJY29uZmlnL2kzODYvaTM4Ni5tZCwgY29uZmlnL2kzODYvbmV0d2FyZS1jcnQwLmMsCgljb25maWcvaTM4Ni9zY281LmgsIGNvbmZpZy9pMzg2L21teC5tZCwgY29uZmlnL2kzODYvdngtY29tbW9uLmgsCgljb25maWcvaTM4Ni9rYW9zLWkzODYuaCwgY29uZmlnL2kzODYvd2lubnQtc3R1YnMuYywKCWNvbmZpZy9pMzg2L25ldGJzZDY0LmgsIGNvbmZpZy9pMzg2L2RqZ3BwLmgsIGNvbmZpZy9pMzg2L2dhcy5oLAoJY29uZmlnL2kzODYvc29sMi5oLCBjb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCwKCWNvbmZpZy9pMzg2L25ldHdhcmUtbGliZ2NjLmMsIGNvbmZpZy9pMzg2L3N5c3Y1LmgsCgljb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kLCBjb25maWcvaTM4Ni9nZW9kZS5tZCwKCWNvbmZpZy9pMzg2L3g4Ni02NC5oLCBjb25maWcvaTM4Ni9rZnJlZWJzZC1nbnUuaCwKCWNvbmZpZy9pMzg2L2ZyZWVic2Q2NC5oLCBjb25maWcvaTM4Ni92eHdvcmtzYWUuaCwKCWNvbmZpZy9pMzg2L3BlbnRpdW0ubWQsIGNvbmZpZy9pMzg2L2x5bnguaCwgY29uZmlnL2kzODYvaTM4NmVsZi5oLAoJY29uZmlnL2kzODYvcnRlbXNlbGYuaCwgY29uZmlnL2kzODYvbmV0YnNkLWVsZi5oLAoJY29uZmlnL2kzODYvcHByby5tZCwgY29uZmlnL2kzODYvazYubWQsIGNvbmZpZy9pMzg2L25ldHdhcmUuYywKCWNvbmZpZy9pMzg2L25ldHdhcmUuaCwgY29uZmlnL2kzODYvaTM4Ni1tb2Rlcy5kZWYsCgljb25maWcvaTM4Ni9zeXN2NC1jcHAuaCwgY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4LmgsCgljb25maWcvaTM4Ni9jeWd3aW4xLmMsIGNvbmZpZy9pMzg2L2RqZ3BwLm9wdCwgY29uZmlnL2kzODYvdXdpbi5oLAoJY29uZmlnL2kzODYvdW5peC5oLCBjb25maWcvaTM4Ni9wdHg0LWkuaCwgY29uZmlnL2kzODYveG0tZGpncHAuaCwKCWNvbmZpZy9pMzg2L2F0dC5oLCBjb25maWcvaTM4Ni93aW5udC5jLCBjb25maWcvaTM4Ni9iZW9zLWVsZi5oLAoJY29uZmlnL2kzODYvc29sMi0xMC5oLCBjb25maWcvaTM4Ni9kYXJ3aW42NC5oLCBjb25maWcvaTM4Ni9zc2UubWQsCgljb25maWcvaTM4Ni9pMzg2Lm9wdCwgY29uZmlnL2kzODYvYnNkLmgsIGNvbmZpZy9pMzg2L2N5Z21pbmcub3B0LAoJY29uZmlnL2kzODYveG0tbWluZ3czMi5oLCBjb25maWcvaTM4Ni9saW51eDY0LmgsCgljb25maWcvaTM4Ni9vcGVuYnNkZWxmLmgsIGNvbmZpZy9pMzg2L3htLWN5Z3dpbi5oLAoJY29uZmlnL2kzODYvc2NvNS5vcHQsIGNvbmZpZy9pMzg2L2Rhcndpbi5oLCBjb25maWcvaTM4Ni9taW5ndzMyLmgsCgljb25maWcvaTM4Ni93aW5udC1jeHguYywgY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4My5oLAoJY29uZmlnL2kzODYvbndsZC5jLCBjb25maWcvaTM4Ni9ud2xkLmgsIGNvbmZpZy9pMzg2L2hvc3QtY3lnd2luLmMsCgljb25maWcvaTM4Ni9jeWd3aW4yLmMsIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgsCgljb25maWcvaTM4Ni9zeW5jLm1kLCBjb25maWcvaTM4Ni9vcGVuYnNkLmgsCgljb25maWcvaTM4Ni9ob3N0LW1pbmd3MzIuYywgY29uZmlnL2kzODYvaTM4Ni1hb3V0LmgsCgljb25maWcvaTM4Ni9udG8uaCwgY29uZmlnL2kzODYvYmlhcmNoNjQuaCwKCWNvbmZpZy9pMzg2L2kzODYtY29mZi5oLCBjb25maWcvaTM4Ni9mcmVlYnNkLmgsCgljb25maWcvaTM4Ni9kcml2ZXItaTM4Ni5jLCBjb25maWcvaTM4Ni9rbmV0YnNkLWdudS5oLAoJY29uZmlnL2kzODYvaG9zdC1pMzg2LWRhcndpbi5jLCBjb25maWcvaTM4Ni92eHdvcmtzLmgsCgljb25maWcvaTM4Ni9jcnRkbGwuaCwgY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaTM4Ni9zeXN2NC5oLAoJY29uZmlnL2Rhcndpbi1wcm90b3MuaCwgY29uZmlnL2xpbnV4Lm9wdCwgY29uZmlnL3NvbDIuYywKCWNvbmZpZy9zb2wyLmgsIGNvbmZpZy9zaC9zeW1iaWFuLmMsIGNvbmZpZy9zaC9zaC1wcm90b3MuaCwKCWNvbmZpZy9zaC9saW51eC5oLCBjb25maWcvc2gvZWxmLmgsIGNvbmZpZy9zaC9zdXBlcmguaCwKCWNvbmZpZy9zaC9zaDQubWQsIGNvbmZpZy9zaC9jb2ZmLmgsIGNvbmZpZy9zaC9uZXdsaWIuaCwKCWNvbmZpZy9zaC9lbWJlZC1lbGYuaCwgY29uZmlnL3NoL3N5bWJpYW4tcHJlLmgsIGNvbmZpZy9zaC9ydGVtcy5oLAoJY29uZmlnL3NoL2thb3Mtc2guaCwgY29uZmlnL3NoL3NoNGEubWQsIGNvbmZpZy9zaC9jb25zdHJhaW50cy5tZCwKCWNvbmZpZy9zaC9zaDY0LmgsIGNvbmZpZy9zaC9zaC5vcHQsIGNvbmZpZy9zaC9zeW1iaWFuLXBvc3QuaCwKCWNvbmZpZy9zaC9zaC1jLmMsIGNvbmZpZy9zaC9wcmVkaWNhdGVzLm1kLCBjb25maWcvc2gvc2guYywKCWNvbmZpZy9zaC9zaC5oLCBjb25maWcvc2gvc2htZWRpYS5tZCwgY29uZmlnL3NoL3NoLW1vZGVzLmRlZiwKCWNvbmZpZy9zaC9saXR0bGUuaCwgY29uZmlnL3NoL3NoMS5tZCwgY29uZmlnL3NoL3NoNC0zMDAubWQsCgljb25maWcvc2gvc3VwZXJoNjQuaCwgY29uZmlnL3NoL3J0ZW1zZWxmLmgsCgljb25maWcvc2gvbmV0YnNkLWVsZi5oLCBjb25maWcvc2gvc2gubWQsIGNvbmZpZy9zaC92eHdvcmtzLmgsCgljb25maWcvdXNlZ2FzLmgsIGNvbmZpZy9zdnIzLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS1wcm90b3MuaCwKCWNvbmZpZy9wZHAxMS8yYnNkLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS5tZCwgY29uZmlnL3BkcDExL3BkcDExLmMsCgljb25maWcvcGRwMTEvcGRwMTEub3B0LCBjb25maWcvcGRwMTEvcGRwMTEtbW9kZXMuZGVmLAoJY29uZmlnL3BkcDExL3BkcDExLmgsIGNvbmZpZy9hdnIvcnRlbXMuaCwgY29uZmlnL2F2ci9hdnItcHJvdG9zLmgsCgljb25maWcvYXZyL3ByZWRpY2F0ZXMubWQsIGNvbmZpZy9hdnIvY29uc3RyYWludHMubWQsCgljb25maWcvYXZyL2F2ci5tZCwgY29uZmlnL2F2ci9hdnIuYywgY29uZmlnL2F2ci9hdnIub3B0LAoJY29uZmlnL2F2ci9hdnIuaCwgY29uZmlnL3NvbDItcHJvdG9zLmgsIGNvbmZpZy9kYnhlbGYuaCwKCWNvbmZpZy9seW54Lm9wdCwgY29uZmlnL2NyeC9jcnguaCwgY29uZmlnL2NyeC9jcngtcHJvdG9zLmgsCgljb25maWcvY3J4L2NyeC5tZCwgY29uZmlnL2NyeC9jcnguYywgY29uZmlnL2NyeC9jcngub3B0LAoJY29uZmlnL2M0eC9jNHgtYy5jLCBjb25maWcvYzR4L2M0eC5jLCBjb25maWcvYzR4L2M0eC5vcHQsCgljb25maWcvYzR4L2M0eC1tb2Rlcy5kZWYsIGNvbmZpZy9jNHgvcnRlbXMuaCwKCWNvbmZpZy9jNHgvcHJlZGljYXRlcy5tZCwgY29uZmlnL2M0eC9jNHguaCwKCWNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oLCBjb25maWcvYzR4L2M0eC5tZCwgY29uZmlnL2tmcmVlYnNkLWdudS5oLAoJY29uZmlnL3h0ZW5zYS9wcmVkaWNhdGVzLm1kLCBjb25maWcveHRlbnNhL3h0ZW5zYS5jLAoJY29uZmlnL3h0ZW5zYS9saW51eC5oLCBjb25maWcveHRlbnNhL3h0ZW5zYS5oLAoJY29uZmlnL3h0ZW5zYS9lbGYuaCwgY29uZmlnL3h0ZW5zYS94dGVuc2EubWQsCgljb25maWcveHRlbnNhL3h0ZW5zYS5vcHQsIGNvbmZpZy94dGVuc2EvY29uc3RyYWludHMubWQsCgljb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaCwgY29uZmlnL2RieC5oLAoJY29uZmlnL3N0b3JteTE2L3ByZWRpY2F0ZXMubWQsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5tZCwKCWNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jLCBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYub3B0LAoJY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmgsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi1wcm90b3MuaCwKCWNvbmZpZy9ob3N0LXNvbGFyaXMuYywgY29uZmlnL2ZyMzAvZnIzMC5oLAoJY29uZmlnL2ZyMzAvcHJlZGljYXRlcy5tZCwgY29uZmlnL2ZyMzAvZnIzMC1wcm90b3MuaCwKCWNvbmZpZy9mcjMwL2ZyMzAubWQsIGNvbmZpZy9mcjMwL2ZyMzAuYywgY29uZmlnL2ZyMzAvZnIzMC5vcHQsCgljb25maWcvdnh3b3Jrc2FlLmgsIGNvbmZpZy9zb2wyLWMuYywgY29uZmlnL2x5bnguaCwKCWNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmgsIGNvbmZpZy9tNjhoYzExL3ByZWRpY2F0ZXMubWQsCgljb25maWcvbTY4aGMxMS9tNjhoYzExLm1kLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMsCgljb25maWcvbTY4aGMxMS9tNjhoYzExLm9wdCwgY29uZmlnL202OGhjMTEvbTY4aGMxMS5oLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMi5oLCBjb25maWcvb3BlbmJzZC1vbGRnYXMuaCwKCWNvbmZpZy9ob3N0LWxpbnV4LmMsIGNvbmZpZy9pbnRlcml4My5oLCBjb25maWcvY3Jpcy9jcmlzLmMsCgljb25maWcvY3Jpcy9wcmVkaWNhdGVzLm1kLCBjb25maWcvY3Jpcy9saW51eC5oLAoJY29uZmlnL2NyaXMvY3Jpcy5oLCBjb25maWcvY3Jpcy9hb3V0LmgsIGNvbmZpZy9jcmlzL2NyaXMubWQsCgljb25maWcvY3Jpcy9saW51eC5vcHQsIGNvbmZpZy9jcmlzL2NyaXMub3B0LCBjb25maWcvY3Jpcy9lbGYub3B0LAoJY29uZmlnL2NyaXMvYW91dC5vcHQsIGNvbmZpZy9jcmlzL2NyaXMtcHJvdG9zLmgsCgljb25maWcvdnh3b3Jrcy1kdW1teS5oLCBjb25maWcvbmV0YnNkLmgsIGNvbmZpZy9uZXRic2QtZWxmLmgsCgljb25maWcvaXEyMDAwL2lxMjAwMC5oLCBjb25maWcvaXEyMDAwL3ByZWRpY2F0ZXMubWQsCgljb25maWcvaXEyMDAwL2lxMjAwMC1wcm90b3MuaCwgY29uZmlnL2lxMjAwMC9pcTIwMDAubWQsCgljb25maWcvaXEyMDAwL2lxMjAwMC5jLCBjb25maWcvaXEyMDAwL2lxMjAwMC5vcHQsCgljb25maWcvaG9zdC1kYXJ3aW4uYywgY29uZmlnL210L210Lm1kLCBjb25maWcvbXQvbXQuYywKCWNvbmZpZy9tdC9tdC5vcHQsIGNvbmZpZy9tdC90LW10LCBjb25maWcvbXQvbXQuaCwKCWNvbmZpZy9tdC9tdC1wcm90b3MuaCwgY29uZmlnL3N2cjQuaCwgY29uZmlnL2hvc3QtZGFyd2luLmgsCgljb25maWcvY2hvcnVzLmgsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYywKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAub3B0LCBjb25maWcvbW4xMDMwMC9wcmVkaWNhdGVzLm1kLAoJY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oLCBjb25maWcvbW4xMDMwMC9saW51eC5oLAoJY29uZmlnL21uMTAzMDAvY29uc3RyYWludHMubWQsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAtcHJvdG9zLmgsCgljb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kLCBjb25maWcvaWE2NC9wcmVkaWNhdGVzLm1kLAoJY29uZmlnL2lhNjQvaXRhbml1bTEubWQsIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmgsCgljb25maWcvaWE2NC9pYTY0LWMuYywgY29uZmlnL2lhNjQvc3luYy5tZCwgY29uZmlnL2lhNjQvaWE2NC5jLAoJY29uZmlnL2lhNjQvaXRhbml1bTIubWQsIGNvbmZpZy9pYTY0L2lhNjQuaCwgY29uZmlnL2lhNjQvdmVjdC5tZCwKCWNvbmZpZy9pYTY0L2ZyZWVic2QuaCwgY29uZmlnL2lhNjQvaWE2NC5tZCwKCWNvbmZpZy9pYTY0L2lhNjQtbW9kZXMuZGVmLCBjb25maWcvaWE2NC9jb25zdHJhaW50cy5tZCwKCWNvbmZpZy9pYTY0L2hwdXguaCwgY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCwgY29uZmlnL3dpbmRpc3MuaCwKCWNvbmZpZy9nb2Zhc3QuaCwgY29uZmlnL3J0ZW1zLmgsIGNvbmZpZy9zb2wyLTEwLmgsCgljb25maWcvbTY4ay9wcmVkaWNhdGVzLm1kLCBjb25maWcvbTY4ay9tNjhrLm1kLAoJY29uZmlnL202OGsvbGludXguaCwgY29uZmlnL202OGsvbTY4ay1tb2Rlcy5kZWYsCgljb25maWcvbTY4ay9wcmludC1zeXNyb290LXN1ZmZpeC5zaCwgY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCwKCWNvbmZpZy9tNjhrL2NvZmYuaCwgY29uZmlnL202OGsvbTY4ay1ub25lLmgsIGNvbmZpZy9tNjhrL2llZWUub3B0LAoJY29uZmlnL202OGsvb3BlbmJzZC5oLCBjb25maWcvbTY4ay9tNjhrLWFvdXQuaCwKCWNvbmZpZy9tNjhrL202OGsub3B0LCBjb25maWcvbTY4ay9tNjgwMjAtZWxmLmgsCgljb25maWcvbTY4ay9tNjhrZWxmLmgsIGNvbmZpZy9tNjhrL202OGstZGV2aWNlcy5kZWYsCgljb25maWcvbTY4ay91Y2xpbnV4LW9sZGFiaS5oLCBjb25maWcvbTY4ay9tNjhrLmMsCgljb25maWcvbTY4ay9jb25zdHJhaW50cy5tZCwgY29uZmlnL202OGsvcnRlbXNlbGYuaCwKCWNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaCwgY29uZmlnL202OGsvbTY4ay5oLAoJY29uZmlnL202OGsvdWNsaW51eC5oLCBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZCwKCWNvbmZpZy9yczYwMDAvaG9zdC1kYXJ3aW4uYywgY29uZmlnL3JzNjAwMC82eHgubWQsCgljb25maWcvcnM2MDAwL2xpbnV4LmgsIGNvbmZpZy9yczYwMDAvZWFiaS5oLAoJY29uZmlnL3JzNjAwMC9haXg0MS5vcHQsIGNvbmZpZy9yczYwMDAveGNvZmYuaCwKCWNvbmZpZy9yczYwMDAvc2VjdXJlcGx0LmgsIGNvbmZpZy9yczYwMDAvbGludXhzcGUuaCwKCWNvbmZpZy9yczYwMDAvZWFiaWFsdGl2ZWMuaCwgY29uZmlnL3JzNjAwMC84NTQwLm1kLAoJY29uZmlnL3JzNjAwMC9kYXJ3aW44LmgsIGNvbmZpZy9yczYwMDAva2Fvcy1wcGMuaCwKCWNvbmZpZy9yczYwMDAvd2luZGlzcy5oLCBjb25maWcvcnM2MDAwLzYwMy5tZCwKCWNvbmZpZy9yczYwMDAvYWl4NDEuaCwgY29uZmlnL3JzNjAwMC9jZWxsLm1kLAoJY29uZmlnL3JzNjAwMC9tcGMubWQsIGNvbmZpZy9yczYwMDAvYWl4NDMuaCwgY29uZmlnL3JzNjAwMC9iZW9zLmgsCgljb25maWcvcnM2MDAwL2dudS5oLCBjb25maWcvcnM2MDAwL3J0ZW1zLmgsIGNvbmZpZy9yczYwMDAvYWl4Lm9wdCwKCWNvbmZpZy9yczYwMDAvZGFyd2luLm1kLCBjb25maWcvcnM2MDAwL2RhcndpbjY0LmgsCgljb25maWcvcnM2MDAwL2RlZmF1bHQ2NC5oLCBjb25maWcvcnM2MDAwLzd4eC5tZCwKCWNvbmZpZy9yczYwMDAvZGFyd2luLm9wdCwgY29uZmlnL3JzNjAwMC9zcGUubWQsCgljb25maWcvcnM2MDAwL3JzNjAwMC5vcHQsIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYywKCWNvbmZpZy9yczYwMDAvcmlvczIubWQsIGNvbmZpZy9yczYwMDAvbGludXhhbHRpdmVjLmgsCgljb25maWcvcnM2MDAwLzc0NTAubWQsIGNvbmZpZy9yczYwMDAvbGludXg2NC5oLAoJY29uZmlnL3JzNjAwMC9jb25zdHJhaW50cy5tZCwgY29uZmlnL3JzNjAwMC80NDAubWQsCgljb25maWcvcnM2MDAwL2Rhcndpbi5oLCBjb25maWcvcnM2MDAwL2hvc3QtcHBjNjQtZGFyd2luLmMsCgljb25maWcvcnM2MDAwL3JzNjAwMC5jLCBjb25maWcvcnM2MDAwL2FpeDUyLmgsCgljb25maWcvcnM2MDAwL3JzNjAwMC5oLCBjb25maWcvcnM2MDAwL3Bvd2VyNi5tZCwKCWNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCwgY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kLAoJY29uZmlnL3JzNjAwMC9haXg2NC5vcHQsIGNvbmZpZy9yczYwMDAvcmlvczEubWQsCgljb25maWcvcnM2MDAwL3JzNjAwMC1tb2Rlcy5kZWYsIGNvbmZpZy9yczYwMDAvcnM2NC5tZCwKCWNvbmZpZy9yczYwMDAvZWFiaXNpbS5oLCBjb25maWcvcnM2MDAwL3N5c3Y0bGUuaCwKCWNvbmZpZy9yczYwMDAvZGFyd2luNy5oLCBjb25maWcvcnM2MDAwL2RmcC5tZCwKCWNvbmZpZy9yczYwMDAvbGludXg2NC5vcHQsIGNvbmZpZy9yczYwMDAvc3luYy5tZCwKCWNvbmZpZy9yczYwMDAvdnh3b3Jrc2FlLmgsIGNvbmZpZy9yczYwMDAvcG93ZXI1Lm1kLAoJY29uZmlnL3JzNjAwMC9seW54LmgsIGNvbmZpZy9yczYwMDAvYmlhcmNoNjQuaCwKCWNvbmZpZy9yczYwMDAvcnM2MDAwLm1kLCBjb25maWcvcnM2MDAwL3N5c3Y0Lm9wdCwKCWNvbmZpZy9yczYwMDAvZWFiaXNwZS5oLCBjb25maWcvcnM2MDAwL2U1MDAuaCwKCWNvbmZpZy9yczYwMDAvZnJlZWJzZC5oLCBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCwKCWNvbmZpZy9yczYwMDAvbmV0YnNkLmgsIGNvbmZpZy9yczYwMDAvZTUwMC1kb3VibGUuaCwKCWNvbmZpZy9yczYwMDAvYWl4LmgsIGNvbmZpZy9yczYwMDAvdnh3b3Jrcy5oLAoJY29uZmlnL3JzNjAwMC80MHgubWQsIGNvbmZpZy9yczYwMDAvYWl4NTEuaCwKCWNvbmZpZy9yczYwMDAvc3lzdjQuaCwgY29uZmlnL2FyYy9hcmMtcHJvdG9zLmgsIGNvbmZpZy9hcmMvYXJjLm1kLAoJY29uZmlnL2FyYy9hcmMuYywgY29uZmlnL2FyYy9hcmMub3B0LCBjb25maWcvYXJjL2FyYy1tb2Rlcy5kZWYsCgljb25maWcvYXJjL2FyYy5oLCBjb25maWcvbWNvcmUvbWNvcmUtZWxmLmgsCgljb25maWcvbWNvcmUvbWNvcmUtcHJvdG9zLmgsIGNvbmZpZy9tY29yZS9wcmVkaWNhdGVzLm1kLAoJY29uZmlnL21jb3JlL21jb3JlLm1kLCBjb25maWcvbWNvcmUvbWNvcmUuYywKCWNvbmZpZy9tY29yZS9tY29yZS5vcHQsIGNvbmZpZy9tY29yZS9tY29yZS5oLAoJY29uZmlnL21jb3JlL21jb3JlLXBlLmgsIGNvbmZpZy9kYXJ3aW4uYywgY29uZmlnL2ZyZWVic2QtbnRoci5oLAoJY29uZmlnL3Njb3JlL3ByZWRpY2F0ZXMubWQsIGNvbmZpZy9zY29yZS9zY29yZS12ZXJzaW9uLmgsCgljb25maWcvc2NvcmUvc2NvcmUtcHJvdG9zLmgsIGNvbmZpZy9zY29yZS9taXNjLm1kLAoJY29uZmlnL3Njb3JlL2VsZi5oLCBjb25maWcvc2NvcmUvc2NvcmUuYywgY29uZmlnL3Njb3JlL21hYy5tZCwKCWNvbmZpZy9zY29yZS9zY29yZTcubWQsIGNvbmZpZy9zY29yZS9zY29yZS5oLAoJY29uZmlnL3Njb3JlL3Njb3JlLWNvbnYuaCwgY29uZmlnL3Njb3JlL3Njb3JlLW1kYXV4LmMsCgljb25maWcvc2NvcmUvc2NvcmUubWQsIGNvbmZpZy9zY29yZS9zY29yZS5vcHQsCgljb25maWcvc2NvcmUvc2NvcmUtbW9kZXMuZGVmLCBjb25maWcvc2NvcmUvc2NvcmUtbWRhdXguaCwKCWNvbmZpZy9zY29yZS9tdWwtZGl2LlMsIGNvbmZpZy9hcm0vdWNsaW51eC1lbGYuaCwKCWNvbmZpZy9hcm0vc2VtaS5oLCBjb25maWcvYXJtL2Vjb3MtZWxmLmgsIGNvbmZpZy9hcm0vYXJtMTAyMGUubWQsCgljb25maWcvYXJtL3N5bWJpYW4uaCwgY29uZmlnL2FybS9saW51eC1lbGYuaCwKCWNvbmZpZy9hcm0vYXJtMTAyNmVqcy5tZCwgY29uZmlnL2FybS9hcm0xMTM2amZzLm1kLAoJY29uZmlnL2FybS9lbGYuaCwgY29uZmlnL2FybS9hb3V0LmgsIGNvbmZpZy9hcm0vYXJtLmMsCgljb25maWcvYXJtL3RodW1iMi5tZCwgY29uZmlnL2FybS92ZWMtY29tbW9uLm1kLCBjb25maWcvYXJtL2NvZmYuaCwKCWNvbmZpZy9hcm0vc3Ryb25nYXJtLXBlLmgsIGNvbmZpZy9hcm0vYXJtLmgsCgljb25maWcvYXJtL2NvcnRleC1hOC1uZW9uLm1kLCBjb25maWcvYXJtL3NlbWlhb2YuaCwKCWNvbmZpZy9hcm0vY29ydGV4LWE4Lm1kLCBjb25maWcvYXJtL3VjbGludXgtZWFiaS5oLAoJY29uZmlnL2FybS9hcm0tbW9kZXMuZGVmLCBjb25maWcvYXJtL2xpbnV4LWVhYmkuaCwKCWNvbmZpZy9hcm0vcnRlbXMtZWxmLmgsIGNvbmZpZy9hcm0vbmVvbi1zY2hlZGdlbi5tbCwKCWNvbmZpZy9hcm0vYXJtLWNvcmVzLmRlZiwgY29uZmlnL2FybS9hcm0tcHJvdG9zLmgsCgljb25maWcvYXJtL3ZmcC5tZCwgY29uZmlnL2FybS9hb2YuaCwgY29uZmlnL2FybS9saW51eC1nYXMuaCwKCWNvbmZpZy9hcm0vd2luY2UtcGUuaCwgY29uZmlnL2FybS9uZW9uLm1kLAoJY29uZmlnL2FybS9jb25zdHJhaW50cy5tZCwgY29uZmlnL2FybS9uZW9uLm1sLAoJY29uZmlnL2FybS94c2NhbGUtZWxmLmgsIGNvbmZpZy9hcm0vc3Ryb25nYXJtLWNvZmYuaCwKCWNvbmZpZy9hcm0vYXJtLm9wdCwgY29uZmlnL2FybS9hcm05MjZlanMubWQsCgljb25maWcvYXJtL3ByZWRpY2F0ZXMubWQsIGNvbmZpZy9hcm0vaXdtbXh0Lm1kLAoJY29uZmlnL2FybS9hcm1fbmVvbi5oLCBjb25maWcvYXJtL3Vua25vd24tZWxmLmgsCgljb25maWcvYXJtL2thb3MtYXJtLmgsIGNvbmZpZy9hcm0vYnBhYmkuaCwgY29uZmlnL2FybS9wZS5vcHQsCgljb25maWcvYXJtL25lb24tdGVzdGdlbi5tbCwgY29uZmlnL2FybS9hcm0ubWQsCgljb25maWcvYXJtL3hzY2FsZS1jb2ZmLmgsIGNvbmZpZy9hcm0vcGUuYywKCWNvbmZpZy9hcm0vYXJtLWdlbmVyaWMubWQsIGNvbmZpZy9hcm0vcGUuaCwKCWNvbmZpZy9hcm0va2Fvcy1zdHJvbmdhcm0uaCwgY29uZmlnL2FybS9mcmVlYnNkLmgsCgljb25maWcvYXJtL25lb24tZG9jZ2VuLm1sLCBjb25maWcvYXJtL25ldGJzZC5oLCBjb25maWcvYXJtL2ZwYS5tZCwKCWNvbmZpZy9hcm0vc3Ryb25nYXJtLWVsZi5oLCBjb25maWcvYXJtL2NpcnJ1cy5tZCwKCWNvbmZpZy9hcm0vbmV0YnNkLWVsZi5oLCBjb25maWcvYXJtL3Z4d29ya3MuaCwKCWNvbmZpZy9hcm0vbmVvbi1nZW4ubWwsIGNvbmZpZy9rYW9zLmgsIGNvbmZpZy9kYXJ3aW4tZHJpdmVyLmMsCgljb25maWcvcGEvcHJlZGljYXRlcy5tZCwgY29uZmlnL3BhL3BhNjQtaHB1eC5oLAoJY29uZmlnL3BhL3BhLWhwdXgub3B0LCBjb25maWcvcGEvc29tLmgsIGNvbmZpZy9wYS9wYS1ocHV4MTAxMC5vcHQsCgljb25maWcvcGEvcGEtaHB1eDExMTEub3B0LCBjb25maWcvcGEvcGEtcHJvLWVuZC5oLAoJY29uZmlnL3BhL2VsZi5oLCBjb25maWcvcGEvZnB0ci5jLCBjb25maWcvcGEvcGE2NC1saW51eC5oLAoJY29uZmlnL3BhL3BhLm1kLCBjb25maWcvcGEvcGEub3B0LCBjb25maWcvcGEvcGEtaHB1eC5oLAoJY29uZmlnL3BhL3BhLWhwdXgxMC5oLCBjb25maWcvcGEvcGEtaHB1eDExLmgsCgljb25maWcvcGEvcGEtaHB1eDEwMTAuaCwgY29uZmlnL3BhL3BhLXByb3Rvcy5oLAoJY29uZmlnL3BhL3BhLW9zZi5oLCBjb25maWcvcGEvcGEtaHB1eDExMTEuaCwgY29uZmlnL3BhL3BhLTY0LmgsCgljb25maWcvcGEvbWlsbGk2NC5TLCBjb25maWcvcGEvcGEuYywgY29uZmlnL3BhL3BhLWxpbnV4LmgsCgljb25maWcvcGEvcGEuaCwgY29uZmlnL3BhL3BhMzItbGludXguaCwgY29uZmlnL3BhL3BhNjQtaHB1eC5vcHQsCgljb25maWcvcGEvcGE2NC1yZWdzLmgsIGNvbmZpZy9wYS9wYS1tb2Rlcy5kZWYsCgljb25maWcvcGEvY29uc3RyYWludHMubWQsIGNvbmZpZy9kYXJ3aW45LmgsIGNvbmZpZy9taXBzLzQxMDAubWQsCgljb25maWcvbWlwcy9saW51eC5oLCBjb25maWcvbWlwcy9lbGZvYWJpLmgsIGNvbmZpZy9taXBzL2VsZi5oLAoJY29uZmlnL21pcHMvc2RiLmgsIGNvbmZpZy9taXBzL3dpbmRpc3MuaCwgY29uZmlnL21pcHMvcnRlbXMuaCwKCWNvbmZpZy9taXBzLzMwMDAubWQsIGNvbmZpZy9taXBzL2lyaXM1LmgsIGNvbmZpZy9taXBzLzUwMDAubWQsCgljb25maWcvbWlwcy83MDAwLm1kLCBjb25maWcvbWlwcy85MDAwLm1kLCBjb25maWcvbWlwcy80NjAwLm1kLAoJY29uZmlnL21pcHMvbGludXg2NC5oLCBjb25maWcvbWlwcy9lbGZvcmlvbi5oLAoJY29uZmlnL21pcHMvY29uc3RyYWludHMubWQsIGNvbmZpZy9taXBzL2dlbmVyaWMubWQsCgljb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kLCBjb25maWcvbWlwcy80MzAwLm1kLAoJY29uZmlnL21pcHMvbWlwcy1wcy0zZC5tZCwgY29uZmlnL21pcHMvaXJpcy5oLCBjb25maWcvbWlwcy8yNGsubWQsCgljb25maWcvbWlwcy9taXBzLm1kLCBjb25maWcvbWlwcy9taXBzLm9wdCwgY29uZmlnL21pcHMvNGsubWQsCgljb25maWcvbWlwcy81ay5tZCwgY29uZmlnL21pcHMvdnI0MTIwLWRpdi5TLAoJY29uZmlnL21pcHMvb3BlbmJzZC5oLCBjb25maWcvbWlwcy9pcmlzNi5oLCBjb25maWcvbWlwcy80MDAwLm1kLAoJY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCwgY29uZmlnL21pcHMvNjAwMC5tZCwKCWNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL21pcHMvbWlwcy5oLCBjb25maWcvbWlwcy9yMzkwMC5oLAoJY29uZmlnL21pcHMvNzRrLm1kLCBjb25maWcvbWlwcy9uZXRic2QuaCwgY29uZmlnL21pcHMvdnh3b3Jrcy5oLAoJY29uZmlnL21pcHMvbWlwcy1tb2Rlcy5kZWYsIGNvbmZpZy9taXBzL3ZyLmgsCgljb25maWcvc29mdC1mcC90LXNvZnRmcCwgY29uZmlnL29wZW5ic2QuaCwgY29uZmlnL3B0eDQuaCwKCWNvbmZpZy9mcmVlYnNkLXNwZWMuaCwgY29uZmlnL3ZheC92YXguYywgY29uZmlnL3ZheC9vcGVuYnNkLmgsCgljb25maWcvdmF4L3ZheC5oLCBjb25maWcvdmF4L2VsZi5oLCBjb25maWcvdmF4L3ZheC5tZCwKCWNvbmZpZy92YXgvYnNkLmgsIGNvbmZpZy92YXgvdmF4Lm9wdCwgY29uZmlnL3ZheC92YXgtbW9kZXMuZGVmLAoJY29uZmlnL3ZheC9vcGVuYnNkMS5oLCBjb25maWcvdmF4L25ldGJzZC5oLAoJY29uZmlnL3ZheC92YXgtcHJvdG9zLmgsIGNvbmZpZy92YXgvbmV0YnNkLWVsZi5oLAoJY29uZmlnL3ZheC92YXh2LmgsIGNvbmZpZy92YXgvdWx0cml4LmgsIGNvbmZpZy9mcmVlYnNkLmgsCgljb25maWcvaDgzMDAvcnRlbXMuaCwgY29uZmlnL2g4MzAwL3ByZWRpY2F0ZXMubWQsCgljb25maWcvaDgzMDAvaDgzMDAuYywgY29uZmlnL2g4MzAwL2g4MzAwLmgsIGNvbmZpZy9oODMwMC9lbGYuaCwKCWNvbmZpZy9oODMwMC9oODMwMC5tZCwgY29uZmlnL2g4MzAwL2g4MzAwLm9wdCwKCWNvbmZpZy9oODMwMC9jb2ZmLmgsIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaCwKCWNvbmZpZy92ODUwL3Y4NTAubWQsIGNvbmZpZy92ODUwL3ByZWRpY2F0ZXMubWQsCgljb25maWcvdjg1MC92ODUwLWMuYywgY29uZmlnL3Y4NTAvdjg1MC5jLCBjb25maWcvdjg1MC92ODUwLm9wdCwKCWNvbmZpZy92ODUwL3Y4NTAuaCwgY29uZmlnL3Y4NTAvdjg1MC1wcm90b3MuaCwgY29uZmlnL3Z4d29ya3MuYywKCWNvbmZpZy9rbmV0YnNkLWdudS5oLCBjb25maWcvc29sMi02LmgsIGNvbmZpZy92eHdvcmtzLmgsCgljb25maWcvbW1peC9tbWl4LmgsIGNvbmZpZy9tbWl4L3ByZWRpY2F0ZXMubWQsCgljb25maWcvbW1peC9tbWl4LXByb3Rvcy5oLCBjb25maWcvbW1peC9tbWl4Lm1kLAoJY29uZmlnL21taXgvbW1peC5jLCBjb25maWcvbW1peC9tbWl4Lm9wdCwKCWNvbmZpZy9tbWl4L21taXgtbW9kZXMuZGVmLCBjb25maWcvYmZpbi9iZmluLm9wdCwKCWNvbmZpZy9iZmluL3J0ZW1zLmgsIGNvbmZpZy9iZmluL2JmaW4tbW9kZXMuZGVmLAoJY29uZmlnL2JmaW4vcHJlZGljYXRlcy5tZCwgY29uZmlnL2JmaW4vYmZpbi1wcm90b3MuaCwKCWNvbmZpZy9iZmluL2JmaW4uYywgY29uZmlnL2JmaW4vYmZpbi5oLCBjb25maWcvYmZpbi9iZmluLm1kOgoJTGlrZXdpc2UuCgoyMDA3LTA4LTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVtaXQtcnRsLmMgKHJlc2V0X3VzZWRfZGVjbHMpOiBSZW5hbWUgdG8uLi4KCShzZXRfdXNlZF9kZWNscyk6IC4uLnRoaXMuICBTZXQgdGhlIHVzZWQgZmxhZyByYXRoZXIgdGhhbiBjbGVhcmluZyBpdC4KCSh1bnNoYXJlX2FsbF9ydGxfYWdhaW4pOiBVcGRhdGUgYWNjb3JkaW5nbHkuICBTZXQgZmxhZ3Mgb24gYXJndW1lbnQKCURFQ0xfUlRMcyByYXRoZXIgdGhhbiByZXNldHRpbmcgdGhlbS4KCjIwMDctMDgtMDIgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKnhvcmRpM19jY29ubHkiKTogQ2hhbmdlIHhyIHRvIHhnLgoKMjAwNy0wOC0wMSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzX3BhcnQpOiBQYXNzIGNvcnJlY3QgTUVNUkVGTE9DCglhcmd1bWVudCB0byBmaW5kX3JlbG9hZHNfYWRkcmVzcy4KCjIwMDctMDgtMDEgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI5MTkKCSogdHJlZS1zc2Etc2Njdm4uYyAodmlzaXRfcGhpKTogRG8gbm90IHZpc2l0IGFibm9ybWFsIFBISXMuCgkqIHRyZWUtc3NhLWNvYWxlc2NlLmMgKHNzYV9jb25mbGljdHNfZHVtcCk6IE5ldy4KCShjb2FsZXNjZV9zc2FfbmFtZSk6IENhbGwgaXQuCgoyMDA3LTA4LTAxICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwczE2LlMgKF9fbWlwczE2X3Vub3Jkc2YyLCBfX21pcHMxNl9mbG9hdHVuc2lzZik6IE5ldy4KCShfX21pcHMxNl91bm9yZGRmMiwgX19taXBzMTZfZmxvYXR1bnNpZGYpOiBOZXcuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19pbml0X2xpYmZ1bmNzKTogQWRkIG9wdGFiIGVudHJpZXMgZm9yCglhYm92ZSBmdW5jdGlvbnMuCgkqIGNvbmZpZy9taXBzL3QtbGliZ2NjLW1pcHMxNiAoTElCMUFTTUZVTkNTKTogQWRkIG5ldyBmdW5jdGlvbnMuCgoyMDA3LTA4LTAxICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogRHVtcCBPTVBfU0VDVElPTlNfU1dJVENILgoJRGlzcGxheSBuZXcgb3BlcmFuZHMgb2YgT01QX1NFQ1RJT05TIGFuZCBPTVBfQ09OVElOVUUuCgkqIHRyZWUuaCAoT01QX1NFQ1RJT05TX0NPTlRST0wpOiBOZXcgbWFjcm8uCgkoT01QX0RJUkVDVElWRV9QKTogQWRkIE9NUF9TRUNUSU9OU19TV0lUQ0guCgkqIG9tcC1sb3cuYyAoZ2V0X3dzX2FyZ3NfZm9yLCBkZXRlcm1pbmVfcGFyYWxsZWxfdHlwZSwKCWV4cGFuZF9vbXBfZm9yX2dlbmVyaWMsIGV4cGFuZF9vbXBfZm9yX3N0YXRpY19ub2NodW5rLAoJZXhwYW5kX29tcF9mb3Jfc3RhdGljX2NodW5rLCBleHBhbmRfb21wX2ZvciwgZXhwYW5kX29tcF9zZWN0aW9ucyk6CglXb3JrIHdpdGggbW9yZSBwcmVjaXNlIENGRy4KCShidWlsZF9vbXBfcmVnaW9uc18xKTogSGFuZGxlIE9NUF9TRUNUSU9OU19TV0lUQ0guCgkobG93ZXJfb21wX3NlY3Rpb25zKTogRW1pdCBPTVBfU0VDVElPTlNfU1dJVENILiAgQWRkIGFyZ3VtZW50cyB0bwoJT01QX0NPTlRJTlVFLgoJKiB0cmVlLWdpbXBsZS5jIChpc19naW1wbGVfc3RtdCk6IEhhbmRsZSBPTVBfU0VDVElPTlNfU1dJVENILgoJKiBnaW1wbGUtbG93LmMgKGxvd2VyX3N0bXQpOiBEaXR0by4KCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBEaXR0by4KCSogdHJlZS5kZWYgKE9NUF9TRUNUSU9OUywgT01QX0NPTlRJTlVFKTogQWRkZWQgbmV3IG9wZXJhbmRzLgoJKE9NUF9TRUNUSU9OU19TV0lUQ0gpOiBOZXcuCgkqIHRyZWUtY2ZnY2xlYW51cC5jIChjbGVhbnVwX29tcF9yZXR1cm4pOiBOZXcuCgkoY2xlYW51cF90cmVlX2NmZ19iYik6IENhbGwgY2xlYW51cF9vbXBfcmV0dXJuLgoJKiB0cmVlLWNmZy5jIChtYWtlX2VkZ2VzKTogQ3JlYXRlIGJhY2sgZWRnZXMgZm9yIE9NUF9DT05USU5VRQoJYW5kIGV4aXQgZWRnZSBmb3IgT01QX0ZPUi4gIEhhbmRsZSBPTVBfU0VDVElPTlNfU1dJVENILgoJKHRyZWVfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogSGFuZGxlIG9tcCBjb25zdHJ1Y3RzLgoKCSogZm9ydHJhbi90cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9zZWN0aW9ucyk6IEJ1aWxkIE9NUF9TRUNUSU9OUwoJd2l0aCB0aHJlZSBhcmd1bWVudHMuCgoyMDA3LTA4LTAxICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCgkqIHRyZWUtY2ZnLmMgKHRyZWVfbWVyZ2VfYmxvY2tzKTogUHJlc2VydmUgbG9vcCBleGl0IHBoaSBub2RlcyBvbmx5CglpbiBsb29wIGNsb3NlZCBzc2EuCgoyMDA3LTA4LTAxICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCgkqIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jICh0aHJlYWRfdGhyb3VnaF9hbGxfYmxvY2tzKTogUmVjb3JkIHRoYXQKCXRoZSBsb29wIHN0cnVjdHVyZXMgbWF5IG5lZWQgZml4aW5nLgoJKiB0cmVlLWNmZ2NsZWFudXAuYyAoY2xlYW51cF90cmVlX2NmZ19ub2xvb3AsIHJlcGFpcl9sb29wX3N0cnVjdHVyZXMpOgoJTmV3IGZ1bmN0aW9ucy4KCShjbGVhbnVwX3RyZWVfY2ZnX2xvb3ApOiBSZW1vdmVkLgoJKGNsZWFudXBfdHJlZV9jZmcpOiBJZiBsb29wcyBuZWVkIGZpeGluZywgY2FsbCByZXBhaXJfbG9vcF9zdHJ1Y3R1cmVzLgoJKiB0cmVlLXByZWRjb20uYyAodHJlZV9wcmVkaWN0aXZlX2NvbW1vbmluZyk6IFJldHVybiBUT0RPX2NsZWFudXBfY2ZnCglpbnN0ZWFkIG9mIHJ1bm5pbmcgY2xlYW51cF90cmVlX2NmZ19sb29wLgoJKiBjZmdsb29wLmggKExPT1BTX05FRURfRklYVVApOiBOZXcgY29uc3RhbnQuCgkqIHRyZWUtZmxvdy5oIChjbGVhbnVwX3RyZWVfY2ZnX2xvb3ApOiBEZWNsYXJhdGlvbiByZW1vdmVkLgoJKHRyZWVfcHJlZGljdGl2ZV9jb21tb25pbmcpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKiBwYXNzZXMuYyAoZXhlY3V0ZV9mdW5jdGlvbl90b2RvKTogRG8gbm90IHVzZSBjbGVhbnVwX3RyZWVfY2ZnX2xvb3AuCgoyMDA3LTA4LTAxICBaZGVuZWsgRHZvcmFrICA8b29rQHVjdy5jej4KCgkqIGRvYy9pbnZva2UudGV4aSAobDEtY2FjaGUtc2l6ZSk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKGwyLWNhY2hlLXNpemUpOiBEb2N1bWVudC4KCSogcGFyYW1zLmggKEwyX0NBQ0hFX1NJWkUpOiBOZXcgbWFjcm8uCgkqIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYyAoTDFfQ0FDSEVfU0laRV9CWVRFUyk6IFJlZmxlY3QKCXRoYXQgTDFfQ0FDSEVfU0laRSBpcyBpbiBrQiBub3cuCgkoTDJfQ0FDSEVfU0laRV9CWVRFUyk6IE5ldyBtYWNyby4KCSh0cmVlX3NzYV9wcmVmZXRjaF9hcnJheXMpOiBTaG93IHNpemUgaW4ga0IuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoc3RydWN0IHByb2Nlc3Nvcl9jb3N0cyk6IEFkZCBsMV9jYWNoZV9zaXplCglhbmQgbDJfY2FjaGVfc2l6ZSBmaWVsZHMuCgkqIGNvbmZpZy9pMzg2L2RyaXZlci1pMzg2LmMgKGRlc2NyaWJlX2NhY2hlKTogRGV0ZWN0IGNhY2hlIHNpemUKCWluIGtCLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHNpemVfY29zdCwgaTM4Nl9jb3N0LCBpNDg2X2Nvc3QscGVudGl1bV9jb3N0LAoJcGVudGl1bXByb19jb3N0LCBnZW9kZV9jb3N0LCBrNl9jb3N0LCBhdGhsb25fY29zdCwgazhfY29zdCwKCWFtZGZhbTEwX2Nvc3QsIHBlbnRpdW00X2Nvc3QsIG5vY29uYV9jb3N0LCBjb3JlMl9jb3N0LAoJZ2VuZXJpYzY0X2Nvc3QsIGdlbmVyaWMzMl9jb3N0KTogQWRkIGwxX2NhY2hlX3NpemUgYW5kIGwyX2NhY2hlX3NpemUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBsMS1jYWNoZS1zaXplIGFuZCBsMi1jYWNoZS1zaXplIHRvIGRlZmF1bHQKCXZhbHVlcyBpZiBub3Qgc3BlY2lmaWVkIG90aGVyd2lzZS4KCSogcGFyYW1zLmRlZiAoUEFSQU1fTDFfQ0FDSEVfU0laRSk6IENoYW5nZSB0byBzZXQgaW4ga0IuCgkoUEFSQU1fTDJfQ0FDSEVfU0laRSk6IE5ldy4KCjIwMDctMDgtMDEgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoJICAgIFRoaWVtbyBTZXVmZXIgIDx0aHNAbWlwcy5jb20+CgkgICAgQ2hyaXMgRGVhcm1hbiAgPGNocmlzQG1pcHMuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAobWlwcyotc2RlLWVsZiopOiBOZXcgc3RhbnphLgoJKG1pcHNpc2EzMi0qLWVsZiosIG1pcHNpc2EzMmVsLSotZWxmKiwgbWlwc2lzYTMycjItKi1lbGYqKQoJKG1pcHNpc2EzMnIyZWwtKi1lbGYqLCBtaXBzaXNhNjQtKi1lbGYqLCBtaXBzaXNhNjRlbC0qLWVsZiopCgkobWlwc2lzYTY0c2IxLSotZWxmKiwgbWlwc2lzYTY0c2IxZWwtKi1lbGYqLCBtaXBzLSotZWxmKikKCShtaXBzZWwtKi1lbGYqLCBtaXBzNjQtKi1lbGYqLCBtaXBzNjRlbC0qLWVsZiosIG1pcHM2NG9yaW9uLSotZWxmKikKCShtaXBzNjRvcmlvbmVsLSotZWxmKiwgbWlwcyotKi1ydGVtcyosIG1pcHMtd3JzLXdpbmRpc3MpCgkobWlwc3R4MzktKi1lbGYqLCBtaXBzdHgzOWVsLSotZWxmKik6IEFkZCBtaXBzL3QtbGliZ2NjLW1pcHMxNgoJdG8gdG1ha2VfZmlsZS4KCSogY29uZmlnL21pcHMvc2RlLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy90LWxpYmdjYy1taXBzMTY6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy90LXNkZTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBSZW1vdmUgc2V0dGluZ3MKCW9mIF9BQklOMzIsIF9BQkk2NCwgX0FCSU8zMiwgX01JUFNfU0lNLCBfTUlQU19TWkxPTkcsIF9NSVBTX1NaUFRSLAoJX01JUFNfRlBTRVQgYW5kIF9NSVBTX1NaSU5ULgoJKiBjb25maWcvbWlwcy9pcmlzLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvZWxmb2FiaS5oIChEUklWRVJfU0VMRl9TUEVDUyk6IFJlbW92ZSBzZXBhcmF0ZQoJaW5zZXJ0aW9uIG9mIGEgZGVmYXVsdCAtbWlwcyBvcHRpb24uICBVc2UgTUlQU18zMkJJVF9PUFRJT05fU1BFQy4KCSogY29uZmlnL21pcHMvdC1pc2EzMjY0IChMSUIxQVNNU1JDLCBMSUIxQVNNRlVOQ1MpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL3QtcjM5MDAgKExJQjFBU01TUkMsIExJQjFBU01GVU5DUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy90LWVsZiAoTElCMUFTTVNSQywgTElCMUFTTUZVTkNTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX0NQVV9DUFBfQlVJVElOUyk6IERlZmluZSBfQUJJTzMyLAoJX0FCSU4zMiwgX0FCSTY0LCBfQUJJTzY0LCBfTUlQU19TSU0sIF9NSVBTX1NaSU5ULCBfTUlQU19TWkxPTkcsCglfTUlQU19TWlBUUiBhbmQgX01JUFNfRlBTRVQuCgkoTUlQU19JU0FfTEVWRUxfU1BFQyk6IEluamVjdCB0aGUgZGVmYXVsdCAtbWlwcyBvcHRpb24gaWYgbm8KCWFyY2hpdGVjdHVyZSBpcyBzcGVjaWZpZWQuCgkoTUlQU18zMkJJVF9PUFRJT05fU1BFQyk6IE5ldyBtYWNyby4KCjIwMDctMDctMzEgIERhbiBIaXBzY2htYW4gIDxkc2hAZ29vZ2xlLmNvbT4KCgkqIGdjYy5jIChlbmRfZ29pbmdfYXJnKTogTmV3IGZ1bmN0aW9uLgoJKGRvX3NwZWNfMik6IFVzZSBpdC4KCShkb19zcGVjXzEpOiBVc2UgaXQuCgoyMDA3LTA3LTMxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBkZGcuYyAoYWRkX2Nyb3NzX2l0ZXJhdGlvbl9yZWdpc3Rlcl9kZXBzKTogRGVjbGFyZSBiYl9pbmZvCglvbmx5IGlmIEVOQUJMRV9DSEVDS0lORyBpcyBkZWZpbmVkLgoKMjAwNy0wNy0zMSAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIGRmLmggKERGX1JVLCBERl9SVV9CQl9JTkZPLCBkZl9ydV9iYl9pbmZvLCBkZl9ydSwKCWRmX3J1X2FkZF9wcm9ibGVtLCBkZl9ydV9nZXRfYmJfaW5mbyk6IFJlbW92ZWQuCgkoREZfUkQsIERGX1VSRUMsIERGX0NIQUlOLCBERl9OT1RFKTogUmVudW1iZXJlZC4KCSogZGYtcHJvYmxlbXMuYyAoZGZfcnVfcHJvYmxlbV9kYXRhLCBkZl9ydV9zZXRfYmJfaW5mbywKCWRmX3J1X2ZyZWVfYmJfaW5mbywgZGZfcnVfYWxsb2MsCglkZl9ydV9iYl9sb2NhbF9jb21wdXRlX3Byb2Nlc3NfZGVmLAoJZGZfcnVfYmJfbG9jYWxfY29tcHV0ZV9wcm9jZXNzX3VzZSwgZGZfcnVfYmJfbG9jYWxfY29tcHV0ZSwKCWRmX3J1X2xvY2FsX2NvbXB1dGUsIGRmX3J1X2luaXRfc29sdXRpb24sIGRmX3J1X2NvbmZsdWVuY2VfbiwKCWRmX3J1X3RyYW5zZmVyX2Z1bmN0aW9uLCBkZl9ydV9mcmVlLCBkZl9ydV9zdGFydF9kdW1wLAoJZGZfcnVfdG9wX2R1bXAsIGRmX3J1X2JvdHRvbV9kdW1wLCBkZl9wcm9ibGVtIHByb2JsZW1fUlUsCglkZl9ydV9hZGRfcHJvYmxlbSk6IFJlbW92ZWQuCgoyMDA3LTA3LTMxICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8zMjg0NwoJKiBwYS5tZCAoY2FzZXNpMzIpOiBVc2UgbWF0Y2hfc2NyYXRjaC4gIFJldmlzZSBpbnNuIGNvbmRpdGlvbi4KCShjYXNlc2kzMnAsIGNhc2VzaTY0cCk6IExpa2V3aXNlLgoJKGNhc2VzaSk6IEFkanVzdCBmb3IgYWJvdmUuCgoyMDA3LTA3LTMxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1vZGUtc3dpdGNoaW5nLmMgKGNyZWF0ZV9wcmVfZXhpdCk6IERvbid0IHNlYXJjaCBwYXN0IGNhbGxzLgoKMjAwNy0wNy0zMSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX1NZTkNJKTogQWRkICFUQVJHRVRfTUlQUzE2IHRlc3QuCgoyMDA3LTA3LTMxICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBkZGcuYyAoYWRkX2RlcHNfZm9yX2RlZik6IFJlbmFtZSB0by4uLgoJKGFkZF9jcm9zc19pdGVyYXRpb25fcmVnaXN0ZXJfZGVwcyk6IFRoaXMuICBDaGFuZ2UgaW1wbGVtZW50YXRpb24KCXRvIHVzZSBvbmx5IHJlYWNoaW5nIGRlZiBhbmQgZGVmLXVzZSBjaGFpbnMgdG8gY29uc3RydWN0IHRoZQoJaW50ZXIgbG9vcCBkZXBlbmRlbmNpZXMuCgkoYWRkX2RlcHNfZm9yX3VzZSk6IFJlbW92ZSBmdW5jdGlvbi4KCShidWlsZF9pbnRlcl9sb29wX2RlcHMpOiBDYWxsIGFkZF9jcm9zc19pdGVyYXRpb25fcmVnaXN0ZXJfZGVwcwoJZnVuY3Rpb24gdG8gYnVpbGQgdGhlIGludGVyIGxvb3AgZGVwZW5kZW5jaWVzLgoJKiBtb2R1bG8tc2NoZWQuYyAoc21zX3NjaGVkdWxlKTogQnVpbGQgb25seQoJcmVhY2hpbmcgZGVmIGFuZCBkZWYtdXNlIGNoYWlucyBmb3IgdGhlIHByb3Bvc2Ugb2YgdGhlIGRkZwoJY29uc3RydWN0aW9uLgoKMjAwNy0wNy0zMSAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL25lb24ubWQgKHZlY19zZXQ8bW9kZT5faW50ZXJuYWwsIHZlY19zZXR2MmRpX2ludGVybmFsKToKCU5ldyBkZWZpbmVfaW5zbnMuIFVzZSBjb3JyZWN0IFJUTC4KCSh2ZWNfc2V0PG1vZGU+KTogV3JpdGUgYXMgZXhwYW5kZXIuCgoyMDA3LTA3LTMxICBSYXp5YSBMYWRlbHNreSAgPHJhenlhQGlsLmlibS5jb20+CgoJKiBtYXRyaXgtcmVvcmcuYyAoYW5hbHl6ZV9tYXRyaXhfYWxsb2NhdGlvbl9zaXRlKTogQXZvaWQgcmVmZXJyaW5nIAoJdG8gYW4gdW5hbGxvY2F0ZWQgc3BhY2UuCgoyMDA3LTA3LTMwICBKYW4gU2pvZGluICA8amFuLnNqb2RpbkBhbWQuY29tPgoKCSogdHJlZS1kYXRhLXJlZi5jCgkoc3BsaXRfY29uc3RhbnRfb2Zmc2V0KTogRW5hYmxlIHNwbGl0X2NvbnN0YW50X29mZnNldCB0byBleHRyYWN0Cgljb25zdGFudHMgZnJvbSBvdGhlciBzdGF0ZW1lbnRzLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMKCSh2ZWN0X2NyZWF0ZV9hZGRyX2Jhc2VfZm9yX3ZlY3Rvcl9yZWYpOiBHZW5lcmF0ZSBkYXRhX3JlZl9iYXNlCgl0byBhIHRlbXAgdmFyLiBGb3JjZSBiYXNlX29mZnNldCB0byBiZSBzaW1wbGUuCgoyMDA3LTA3LTMwICBTZW9uZ2JhZSBQYXJrIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCgkqIGRmLXNjYW4uYyAoZGZfc2Nhbl92ZXJpZnkpOiBSZW1vdmUgYXJ0aWZpY2lhbCBsaW1pdCBvbgoJdGhlIG51bWJlciBvZiBibG9ja3MgZm9yIHZlcmlmaWNhdGlvbi4KCSogZGYtcHJvYmxlbXMuYyAoZGZfbHJfYmJfbG9jYWxfY29tcHV0ZSwgZGZfc2ltdWxhdGVfZmluZF9kZWZzLAoJZGZfc2ltdWxhdGVfZGVmcyk6IEF2b2lkIHVubmVjZXNzYXJ5IGluc24gY2hlY2tpbmcgZm9yIGRlZnMuCgoyMDA3LTA3LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbGIxc2Y2OC5hc20gKEZVTkMpOiBOZXcgbWFjcm8uCgkoX19tdWxzaTMpOiBVc2UgaXQuCgkoX191ZGl2c2kzKTogTGlrZXdpc2UuCgkoX19kaXZzaTMpOiBMaWtld2lzZS4KCShfX3Vtb2RzaTMpOiBMaWtld2lzZS4KCShfX21vZHNpMyk6IExpa2V3aXNlLgoJKF9fc3ViZGYzKTogTGlrZXdpc2UuCgkoX19hZGRkZjMpOiBMaWtld2lzZS4KCShfX211bGRmMyk6IExpa2V3aXNlLgoJKF9fZGl2ZGYzKTogTGlrZXdpc2UuCgkoX19uZWdkZjIpOiBMaWtld2lzZS4KCShfX2NtcGRmMik6IExpa2V3aXNlLgoJKF9fc3Vic2YzKTogTGlrZXdpc2UuCgkoX19hZGRzZjMpOiBMaWtld2lzZS4KCShfX211bHNmMyk6IExpa2V3aXNlLgoJKF9fZGl2c2YzKTogTGlrZXdpc2UuCgkoX19uZWdzZjIpOiBMaWtld2lzZS4KCShfX2NtcHNmMik6IExpa2V3aXNlLgoJKF9fZXFkZjIpOiBMaWtld2lzZS4KCShfX25lZGYyKTogTGlrZXdpc2UuCgkoX19ndGRmMik6IExpa2V3aXNlLgoJKF9fZ2VkZjIpOiBMaWtld2lzZS4KCShfX2x0ZGYyKTogTGlrZXdpc2UuCgkoX19sZWRmMik6IExpa2V3aXNlLgoJKF9fZXFzZjIpOiBMaWtld2lzZS4KCShfX25lc2YyKTogTGlrZXdpc2UuCgkoX19ndHNmMik6IExpa2V3aXNlLgoJKF9fZ2VzZjIpOiBMaWtld2lzZS4KCShfX2x0c2YyKTogTGlrZXdpc2UuCgkoX19sZXNmMik6IExpa2V3aXNlLgoKMjAwNy0wNy0zMCAgT2xsaWUgV2lsZCAgPGFhd0Bnb29nbGUuY29tPgoKCSogYy1wcG91dHB1dC5jIChwcmludF9saW5lc19kaXJlY3RpdmVzX29ubHkpOiBOZXcgZnVuY3Rpb24uCgkoc2Nhbl90cmFuc2xhdGlvbl91bml0X2RpcmVjdGl2ZXNfb25seSk6IE5ldyBmdW5jdGlvbi4KCShwcmVwcm9jZXNzX2ZpbGUpOiBBZGQgY2FsbCB0byBzY2FuX3RyYW5zbGF0aW9uX3VuaXRfZGlyZWN0aXZlc19vbmx5LgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IEFkZCBPUFRfZmRpcmVjdGl2ZXNfb25seS4KCShzYW5pdGl6ZV9jcHBfb3B0cyk6IEFkZCBkZWZhdWx0IGZsYWdfZHVtcF9tYWNyb3Mgc2V0dGluZyBmb3IKCS1mZGlyZWN0aXZlcy1vbmx5LiAgQWRkIGVycm9ycyBmb3IgLWZkaXJlY3RpdmVzLW9ubHkgY29uZmxpY3Qgd2l0aAoJLVd1bnVzZWQtbWFjcm9zIGFuZCAtdHJhZGl0aW9uYWwuCgkoZmluaXNoX29wdGlvbnMpOiBBZGQgYnVpbHRpbiBtYWNybyBpbml0aWFsaXphdGlvbiBmb3IKCS1mZGlyZWN0aXZlcy1vbmx5ICsgLWZwcmVwcm9jZXNzZWQuCgkqIGMub3B0IChmZGlyZWN0aXZlcy1vbmx5KTogTmV3LgoJKiBkb2MvY3Bwb3B0cy50ZXhpIChmZGlyZWN0aXZlcy1vbmx5KTogTmV3LgoKMjAwNy0wNy0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWxpYXMuYyAocmVjb3JkX3NldCwgbWVtb3J5X21vZGlmaWVkXzEpOiBDb25zdGlmeS4KCSogYnQtbG9hZC5jIChub3RlX2J0cl9zZXQpOiBMaWtld2lzZS4KCSogY2FsbGVyLXNhdmUuYyAobWFya19zZXRfcmVncywgYWRkX3N0b3JlZF9yZWdzKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoc2V0X25vbnplcm9fYml0c19hbmRfc2lnbl9jb3BpZXMsCglleHBhbmRfZmllbGRfYXNzaWdubWVudCwgcmVjb3JkX2RlYWRfYW5kX3NldF9yZWdzXzEsCgl1c2VfY3Jvc3Nlc19zZXRfcCwgcmVnX2RlYWRfYXRfcF8xLCBjYW5fY29tYmluZV9wLAoJbGlrZWx5X3NwaWxsZWRfcmV0dmFsXzEpOiBMaWtld2lzZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X3JlZ2lzdGVyc191cGRhdGVfMSwgZnJ2X2lvX2NoZWNrX2FkZHJlc3MsCglmcnZfaW9faGFuZGxlX3NldCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2ltX3JlY29yZF9zZXQsCgl2cjQxMzBfdHJ1ZV9yZWdfZGVwZW5kZW5jZV9wXzEpOiBMaWtld2lzZS4KCSogY29uZmlnL210L210LmMgKGluc25fZGVwZW5kZW50X3BfMSk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfcmVnX2Nsb2JiZXJlZF9ydHgpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKGZsb3dfZGVwZW5kZW50X3BfMSk6IExpa2V3aXNlLgoJKiBjc2VsaWIuYyAoY3NlbGliX2ludmFsaWRhdGVfcnR4X25vdGVfc3RvcmVzKTogTGlrZXdpc2UuCgkqIGRjZS5jIChtYXJrX25vbnJlZ19zdG9yZXNfMSwgbWFya19ub25yZWdfc3RvcmVzXzIpOiBMaWtld2lzZS4KCSogZGRnLmMgKG1hcmtfbWVtX3N0b3JlKTogTGlrZXdpc2UuCgkqIGRmLXByb2JsZW1zLmMgKGRmX3VyZWNfbWFya19yZWdfY2hhbmdlKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHVwZGF0ZV9lcGlsb2d1ZV9jb25zdHMpOiBMaWtld2lzZS4KCSogZ2NzZS5jIChyZWNvcmRfc2V0X2luZm8sIHJlY29yZF9sYXN0X3NldF9pbmZvLAoJbWVtc19jb25mbGljdF9mb3JfZ2NzZV9wLCBjYW5vbl9saXN0X2luc2VydCwgcmVnX3NldF9pbmZvLAoJcmVnX2NsZWFyX2xhc3Rfc2V0KTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChtYXJrX3JlZ19zdG9yZSwgbWFya19yZWdfY2xvYmJlciwgcmVnX2JlY29tZXNfbGl2ZSk6CglMaWtld2lzZS4KCSoganVtcC5jIChyZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMpOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYyAodmFsaWRhdGVfZXF1aXZfbWVtX2Zyb21fc3RvcmUsIG5vX2VxdWl2LAoJcmVnX2lzX3NldCk6IExpa2V3aXNlLgoJKiBsb29wLWl2LmMgKG1hcmtfYWx0ZXJlZCk6IExpa2V3aXNlLgoJKiBtb2RlLXN3aXRjaGluZy5jIChyZWdfYmVjb21lc19saXZlKTogTGlrZXdpc2UuCgkqIG9wdGFicy5jIChub19jb25mbGljdF9tb3ZlX3Rlc3QpOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC1nY3NlLmMgKHJlY29yZF9sYXN0X3NldF9pbmZvLCBmaW5kX21lbV9jb25mbGljdHMpOgoJTGlrZXdpc2UuCgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NvbWJpbmVfbm90ZV9zdG9yZSwgbW92ZTJhZGRfbm90ZV9zdG9yZSk6CglMaWtld2lzZS4KCSogcmVnbW92ZS5jIChmbGFnc19zZXRfMSk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAobm90ZV9zZXRzLCBraWxsX2Nsb2JiZXJlZF92YWx1ZSwga2lsbF9zZXRfdmFsdWUpOgoJTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAobWFya19ub3RfZWxpbWluYWJsZSwgZm9yZ2V0X29sZF9yZWxvYWRzXzEpOgoJTGlrZXdpc2UuIAoJKiByZXNvdXJjZS5jICh1cGRhdGVfbGl2ZV9zdGF0dXMpOiBMaWtld2lzZS4KCSogcnRsLmggKHNldF9vZiwgbm90ZV9zdG9yZXMpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChzZXRfb2ZfMSwgcGFybXNfc2V0LCBzdHJ1Y3Qgc2V0X29mX2RhdGEsIHNldF9vZiwKCW5vdGVfc3RvcmVzLCBwYXJtc19zZXQpOiBMaWtld2lzZS4KCSogc2NoZWQtcmduLmMgKHNldHNfbGlrZWx5X3NwaWxsZWRfMSk6IExpa2V3aXNlLgoJKiBzdGFjay1wdHItbW9kLmMgKG5vdGljZV9zdGFja19wb2ludGVyX21vZGlmaWNhdGlvbl8xKToKCUxpa2V3aXNlLiAKCSogdmFyLXRyYWNraW5nLmMgKGNvdW50X3N0b3JlcywgYWRkX3N0b3Jlcyk6IExpa2V3aXNlLgoKMjAwNy0wNy0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWxpYXMuYyAobWVtc19pbl9kaXNqb2ludF9hbGlhc19zZXRzX3AsCglmaXhlZF9zY2FsYXJfYW5kX3Zhcnlpbmdfc3RydWN0X3AsIGFsaWFzZXNfZXZlcnl0aGluZ19wLAoJbm9ub3ZlcmxhcHBpbmdfY29tcG9uZW50X3JlZnNfcCwgbm9ub3ZlcmxhcHBpbmdfbWVtcmVmc19wLAoJd3JpdGVfZGVwZW5kZW5jZV9wLCBtZW1zX2luX2Rpc2pvaW50X2FsaWFzX3NldHNfcCwKCXJlYWRfZGVwZW5kZW5jZSwgdHJ1ZV9kZXBlbmRlbmNlLCBjYW5vbl90cnVlX2RlcGVuZGVuY2UsCglhbnRpX2RlcGVuZGVuY2UsIG91dHB1dF9kZXBlbmRlbmNlKTogQ29uc3RpZnkuCgkqIGNvbWJpbmUuYyAoZXh0ZW5kZWRfY291bnQpOiBMaWtld2lzZS4KCSogY3NlLmMgKGNzZV9ydHhfdmFyaWVzX3AsIGhhc2hfcnR4LCBleHBfZXF1aXZfcCk6IExpa2V3aXNlLgoJKiBjc2VsaWIuYyAoZ2V0X3ZhbHVlX2hhc2gsIHJlZmVyZW5jZXNfdmFsdWVfcCwKCWNzZWxpYl9yZWdfc2V0X21vZGUsIGNzZWxpYl9ydHhfdmFyaWVzX3ApOiBMaWtld2lzZS4KCSogY3NlbGliLmggKGNzZWxpYl9yZWdfc2V0X21vZGUsIHJlZmVyZW5jZXNfdmFsdWVfcCk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChtZW1fZXhwcl9lcXVhbF9wLCBhY3RpdmVfaW5zbl9wKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGNvbnRhaW5zLCBwcm9sb2d1ZV9lcGlsb2d1ZV9jb250YWlucywKCXNpYmNhbGxfZXBpbG9ndWVfY29udGFpbnMpOiBMaWtld2lzZS4gCgkqIGp1bXAuYyAoc2ltcGxlanVtcF9wLCBjb25kanVtcF9wLCBjb25kanVtcF9pbl9wYXJhbGxlbF9wLAoJcGNfc2V0LCBhbnlfdW5jb25kanVtcF9wLCBhbnlfY29uZGp1bXBfcCwgb25seWp1bXBfcCwKCW9ubHlfc2V0c19jYzBfcCwgc2V0c19jYzBfcCwgcnR4X3JlbnVtYmVyZWRfZXF1YWxfcCwgdHJ1ZV9yZWdudW0sCglyZWdfb3Jfc3VicmVnbm8pOiBMaWtld2lzZS4KCSogcmVjb2cuYyAoYXNtX25vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKGZ1bmN0aW9uX2ludmFyaWFudF9wKTogTGlrZXdpc2UuCgkqIHJ0bC5oIChtZW1fZXhwcl9lcXVhbF9wLCBhY3RpdmVfaW5zbl9wLCBydHhfdmFyaWVzX3AsCglydHhfYWRkcl92YXJpZXNfcCwgYXNtX25vcGVyYW5kcywgZXhwX2VxdWl2X3AsIGhhc2hfcnR4LAoJY29uZGp1bXBfcCwgYW55X2NvbmRqdW1wX3AsIGFueV91bmNvbmRqdW1wX3AsIHBjX3NldCwKCXNpbXBsZWp1bXBfcCwgb25seWp1bXBfcCwgb25seV9zZXRzX2NjMF9wLCBzZXRzX2NjMF9wLAoJdHJ1ZV9yZWdudW0sIHJlZ19vcl9zdWJyZWdubywgY29uZGp1bXBfaW5fcGFyYWxsZWxfcCwKCWV4dGVuZGVkX2NvdW50LCBwcm9sb2d1ZV9lcGlsb2d1ZV9jb250YWlucywKCXNpYmNhbGxfZXBpbG9ndWVfY29udGFpbnMsIGZ1bmN0aW9uX2ludmFyaWFudF9wLCB0cnVlX2RlcGVuZGVuY2UsCgljYW5vbl90cnVlX2RlcGVuZGVuY2UsIHJlYWRfZGVwZW5kZW5jZSwgYW50aV9kZXBlbmRlbmNlLAoJb3V0cHV0X2RlcGVuZGVuY2UpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChydHhfdmFyaWVzX3AsIHJ0eF9hZGRyX3Zhcmllc19wKTogTGlrZXdpc2UuCgoyMDA3LTA3LTMwICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vbmVvbi5tZCAoVl9leHQpOiBOZXcgbW9kZSBhdHRyaWJ1dGUuCgkobmVvbl92Z2V0X2xhbmU8bW9kZT4pOiBSZXBsYWNlIHdpdGggZGVmaW5lX2V4cGFuZC4KCShuZW9uX3ZnZXRfbGFuZTxtb2RlPl9zZXh0X2ludGVybmFsKQoJKG5lb25fdmdldF9sYW5lPG1vZGU+X3pleHRfaW50ZXJuYWwpOiBOZXcgZGVmaW5lX2luc25zIGZvciBkb3VibGUKCWFuZCBxdWFkIHByZWNpc2lvbiB2ZWN0b3JzLgoJKG5lb25fdmdldF9sYW5lZGkpOiBBZGQgYm91bmRzIGNoZWNrLiBSZW1vdmUgZGVhZCBjb21tZW50LgoJKiBjb25maWcvYXJtL25lb24ubWwgKGdldF9sYW5lKTogTWFrZSAzMi1iaXQgZ2V0LWxhbmUgaW50cmluc2ljcwoJaGF2ZSB0eXBlbGVzcyAzMi1iaXQgcmVzdWx0LgoKMjAwNy0wNy0zMCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgdHJlZS1vcHQvMzI1MjcKCSogdHJlZS1hZmZpbmUuaCAoYWZmX3RyZWUpOiBUaGUgdHlwZSBvZiByZXN0IGlzIHNpemV0eXBlIGZvciB0eXBlcwoJb2YgcG9pbnRlcnMuCgkqIHRyZWUtYWZmaW5lLmMgKGFmZl9jb21iaW5hdGlvbl9zY2FsZSk6IElmIHR5cGUgaXMgYSBwb2ludGVyIHR5cGUsCgl1c2Ugc2l6ZXR5cGUgZm9yIHJlc3QuCgkoYWZmX2NvbWJpbmF0aW9uX2FkZF9lbHQpOiBMaWtld2lzZS4gRG9uJ3Qgc3BlY2lhbGl6ZSBwb2ludGVyIHR5cGVzLgoJKGFmZl9jb21iaW5hdGlvbl9jb252ZXJ0KTogRG9uJ3QgY29udmVydCByZXN0IGZvciBwb2ludGVyIHR5cGVzLgoKMjAwNy0wNy0yOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2EtYWxpYXMubyk6IEFkZCBhbGxvYy1wb29sLmgKCgkqIHRyZWUtc3NhLWFsaWFzLmM6IEFkZCBhbGxvYy1wb29sLmguCgkoaW5pdF9hbGlhc19pbmZvKTogRnJlZSBhbGlhc19iaXRtYXBfb2JzdGFjay4KCShkZWxldGVfYWxpYXNfaW5mbyk6IENhbGwgZGVsZXRlX21lbV9yZWZfc3RhdHMuCgkoZ2V0X21lbV9zeW1fc3RhdHNfZm9yKTogVXNlIGFsbG9jX3Bvb2wuCgkoaW5pdF9tZW1fcmVmX3N0YXRzKTogRG8gbm90IGRlbGV0ZSBtZW1fcmVmX3N0YXRzIGhlcmUuCgkoZGVsZXRlX21lbV9zeW1fc3RhdHMpOiBSZW1vdmVkLgoJCjIwMDctMDctMjkgIFNlYmFzdGlhbiBQb3AgIDxzZWJwb3BAZ21haWwuY29tPgoKCSogdHJlZS1kYXRhLXJlZi5jIChhZGRfbXVsdGl2YXJpYXRlX3NlbGZfZGlzdCk6IFBhcmFtZXRyaWMgYWNjZXNzCglmdW5jdGlvbnMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzIGNsYXNzaWNhbCBkaXN0YW5jZSB2ZWN0b3JzLgoKMjAwNy0wNy0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYXR0cmlicy5jIChoYXNoX2F0dHIsIGVxX2F0dHIsIGluaXRfYXR0cmlidXRlcyk6IENvbnN0aWZ5LgoJKiBidWlsdGlucy5jICh2YWxpZGF0ZV9hcmcsIGJ1aWx0aW5fbWF0aGZuX2NvZGUsCgl2YWxpZGF0ZV9hcmdsaXN0KTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGNhbGxfZXhwcl9mbGFncyk6IExpa2V3aXNlLgoJKiBjb21iaW5lLmMgKHJlZ19ub256ZXJvX2JpdHNfZm9yX2NvbWJpbmUsCglyZWdfbnVtX3NpZ25fYml0X2NvcGllc19mb3JfY29tYmluZSwgZ2V0X2xhc3RfdmFsdWUsCglyZWdfdHJ1bmNhdGVkX3RvX21vZGUpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoc3VicmVnX2xvd3BhcnRfcCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGhpZ2hlc3RfcG93Ml9mYWN0b3JfZm9yX3RhcmdldCwKCWNhdGVnb3JpemVfY3Rvcl9lbGVtZW50c18xLCBjYXRlZ29yaXplX2N0b3JfZWxlbWVudHMsCgljb3VudF90eXBlX2VsZW1lbnRzLCBjb250YWluc19wYWNrZWRfcmVmZXJlbmNlLAoJaGlnaGVzdF9wb3cyX2ZhY3RvciwgaGlnaGVzdF9wb3cyX2ZhY3Rvcl9mb3JfdGFyZ2V0KTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAobWF5X25lZ2F0ZV93aXRob3V0X292ZXJmbG93X3AsIGludF9jb25zdF9iaW5vcCwKCWZvbGRfY29udmVydGlibGVfcCwgb3BlcmFuZF9lcXVhbF9wLCB0cmVlX3N3YXBfb3BlcmFuZHNfcCwKCW5hdGl2ZV9lbmNvZGVfaW50LCBuYXRpdmVfZW5jb2RlX3JlYWwsIG5hdGl2ZV9lbmNvZGVfY29tcGxleCwKCW5hdGl2ZV9lbmNvZGVfdmVjdG9yLCBuYXRpdmVfZW5jb2RlX2V4cHIsIG5hdGl2ZV9pbnRlcnByZXRfaW50LAoJbmF0aXZlX2ludGVycHJldF9yZWFsLCBuYXRpdmVfaW50ZXJwcmV0X2NvbXBsZXgsCgluYXRpdmVfaW50ZXJwcmV0X3ZlY3RvciwgbmF0aXZlX2ludGVycHJldF9leHByKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHVzZV9yZWdpc3Rlcl9mb3JfZGVjbCk6IExpa2V3aXNlLgoJKiBnaW1wbGlmeS5jIChnZXRfbmFtZSk6IExpa2V3aXNlLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9yZXR1cm5fbnVsbF9jb25zdF90cmVlKTogTmV3LgoJKExBTkdfSE9PS1NfR0VUX0NBTExFRV9GTkRFQ0wpOiBVc2UgaXQuCgkqIGxhbmdob29rcy5jIChsaGRfcmV0dXJuX251bGxfY29uc3RfdHJlZSk6IE5ldy4KCSogbGFuZ2hvb2tzLmggKGxhbmdfZ2V0X2NhbGxlZV9mbmRlY2wpOiBDb25zdGlmeS4KCSogb3V0cHV0LmggKGNvbnN0cnVjdG9yX3N0YXRpY19mcm9tX2VsdHNfcCk6IExpa2V3aXNlLgoJKiBydGwtZmFjdG9yaW5nLmMgKGdlbl9zeW1ib2xfcmVmX3J0eF9mb3JfbGFiZWwpOiBMaWtld2lzZS4KCSogcnRsLmggKG5vbnplcm9fYml0cywgbnVtX3NpZ25fYml0X2NvcGllcywgdHJ1bmNhdGVkX3RvX21vZGUsCglzdWJyZWdfbG93cGFydF9wLCBub29wX21vdmVfcCwgc3RydWN0IHJ0bF9ob29rcyk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKGNhY2hlZF9ub256ZXJvX2JpdHMsIG5vbnplcm9fYml0czEsCgljYWNoZWRfbnVtX3NpZ25fYml0X2NvcGllcywgbnVtX3NpZ25fYml0X2NvcGllczEsIG5vb3BfbW92ZV9wLAoJbm9uemVyb19iaXRzLCBudW1fc2lnbl9iaXRfY29waWVzLCB0cnVuY2F0ZWRfdG9fbW9kZSk6IExpa2V3aXNlLgoJKiBydGxob29rcy1kZWYuaCAocmVnX25vbnplcm9fYml0c19nZW5lcmFsLAoJcmVnX251bV9zaWduX2JpdF9jb3BpZXNfZ2VuZXJhbCwgcmVnX3RydW5jYXRlZF90b19tb2RlX2dlbmVyYWwpOgoJTGlrZXdpc2UuIAoJKiBydGxob29rcy5jIChyZWdfbnVtX3NpZ25fYml0X2NvcGllc19nZW5lcmFsLAoJcmVnX25vbnplcm9fYml0c19nZW5lcmFsLCByZWdfdHJ1bmNhdGVkX3RvX21vZGVfZ2VuZXJhbCk6CglMaWtld2lzZS4gCgkqIHN0bXQuYyAod2Fybl9pZl91bnVzZWRfdmFsdWUsIGlzX2JvZHlfYmxvY2spOiBMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYyAobW9kZV9mb3Jfc2l6ZV90cmVlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAobWVtcmVmX2VxKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHRyZWVfaW50X2NzdF9zaWduX2JpdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGNvbnRhaW5zX3BsYWNlaG9sZGVyX3AsIHR5cGVfbGlzdF9lcXVhbCwKCXNpbXBsZV9jc3RfZXF1YWwsIGdldF9jYWxsZWVfZm5kZWNsLCBvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3ApOgoJTGlrZXdpc2UuIAoJKiB0cmVlLmggKHRyZWVfaW50X2NzdF9zaWduX2JpdCwgbWF5X25lZ2F0ZV93aXRob3V0X292ZXJmbG93X3AsCgltb2RlX2Zvcl9zaXplX3RyZWUsIGNhdGVnb3JpemVfY3Rvcl9lbGVtZW50cywgY291bnRfdHlwZV9lbGVtZW50cywKCWNvbnRhaW5zX3BsYWNlaG9sZGVyX3AsIGNvbnRhaW5zX3BhY2tlZF9yZWZlcmVuY2UsCglnZXRfY2FsbGVlX2ZuZGVjbCwgb3BlcmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wLAoJd2Fybl9pZl91bnVzZWRfdmFsdWUsIGlzX2JvZHlfYmxvY2ssIG5hdGl2ZV9lbmNvZGVfZXhwciwKCW5hdGl2ZV9pbnRlcnByZXRfZXhwciwgZm9sZF9jb252ZXJ0aWJsZV9wLCBvcGVyYW5kX2VxdWFsX3AsCglpbnRfY29uc3RfYmlub3AsIHRyZWVfc3dhcF9vcGVyYW5kc19wLCBidWlsdGluX21hdGhmbl9jb2RlLAoJdmFsaWRhdGVfYXJnbGlzdCwgc2ltcGxlX2NzdF9lcXVhbCwgdHlwZV9saXN0X2VxdWFsLAoJdXNlX3JlZ2lzdGVyX2Zvcl9kZWNsLCBjYWxsX2V4cHJfZmxhZ3MsIGdldF9uYW1lLAoJaGlnaGVzdF9wb3cyX2ZhY3Rvcik6IExpa2V3aXNlLgoJKGNvbnN0X2NhbGxfZXhwcl9hcmdfaXRlcmF0b3JfZCwKCWluaXRfY29uc3RfY2FsbF9leHByX2FyZ19pdGVyYXRvciwgbmV4dF9jb25zdF9jYWxsX2V4cHJfYXJnLAoJZmlyc3RfY29uc3RfY2FsbF9leHByX2FyZywgbW9yZV9jb25zdF9jYWxsX2V4cHJfYXJnc19wLAoJRk9SX0VBQ0hfQ09OU1RfQ0FMTF9FWFBSX0FSRyk6IE5ldy4KCSogdmFyYXNtLmMgKGNvbnN0cnVjdG9yX3N0YXRpY19mcm9tX2VsdHNfcCk6IENvbnN0aWZ5LgoKMjAwNy0wNy0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjZmdsYXlvdXQuYywgY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2FybS9jb3J0ZXgtYTgubWQsCgljb25maWcvYXJtL25lb24tc2NoZWRnZW4ubWwsIGNvbmZpZy9hcm0vbmVvbi5tbCwKCWNvbmZpZy9hcm0vdmVjLWNvbW1vbi5tZCwgY29uZmlnL2lhNjQvZGl2Lm1kLCBjc2VsaWIuYywKCWRmLWNvcmUuYywgZGYuaCwgZG9taW5hbmNlLmMsIG9wdGFicy5jLCBvcHRzLmMsIHJlZy1zdGFjay5jLAoJcmVnc3RhdC5jLCB0YXJnZXQuaCwgdHJlZS1zc2EtbGl2ZS5jLCB0cmVlLXNzYS1wcmUuYywKCXRyZWUtdmVjdC10cmFuc2Zvcm0uYywgdHJlZS5kZWY6IEZpeCBjb21tZW50IHR5cG9zLiAgRm9sbG93CglzcGVsbGluZyBjb252ZW50aW9ucy4KCSogZG9jL2ludm9rZS50ZXhpOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA3LTA3LTI5ICBWbGFkaW1pciBZYW5vdnNreSAgPHlhbm92QGlsLmlibS5jb20+CgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogbW9kdWxvLXNjaGVkLmMgKHNtc19zY2hlZHVsZSk6IEF2b2lkIGxvb3BzIHdoaWNoIGluY2x1ZGVzCglhdXRvLWluY3JlbWVudCBpbnN0cnVjdGlvbnMuCgoyMDA3LTA3LTI4ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMjkyMAoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfY29uZF9leHByX3dpdGhfY29tcGFyaXNvbik6IENvbnZlcnQKCW9wZXJhbmQgemVybyBvZiBNSU4vTUFYX0VYUFIgdG8gY29ycmVjdCB0eXBlLgoKMjAwNy0wNy0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2FsbHMuYyAoc3BlY2lhbF9mdW5jdGlvbl9wLCBzZXRqbXBfY2FsbF9wLCBhbGxvY2FfY2FsbF9wLAoJZmxhZ3NfZnJvbV9kZWNsX29yX3R5cGUpOiBDb25zdGlmeS4KCSogZ2NjLmMgKGRvX3NwZWNfMSk6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmMgKGR1bXBfYWRkciwgcHJpbnRfbm9kZV9icmllZik6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jIChzdG10X3N0YXJ0c19iYl9wLCBpc19jdHJsX3N0bXQsIGNvbXB1dGVkX2dvdG9fcCwKCXNpbXBsZV9nb3RvX3AsIHRyZWVfY2FuX21ha2VfYWJub3JtYWxfZ290bywgc3RtdF9zdGFydHNfYmJfcCwKCXRyZWVfcHVyZ2VfYWxsX2RlYWRfZWhfZWRnZXMpOiBMaWtld2lzZS4KCSogdHJlZS1mbG93LmggKGlzX2N0cmxfc3RtdCwgY29tcHV0ZWRfZ290b19wLCBzaW1wbGVfZ290b19wLAoJdHJlZV9jYW5fbWFrZV9hYm5vcm1hbF9nb3RvLCB0cmVlX3B1cmdlX2FsbF9kZWFkX2VoX2VkZ2VzKToKCUxpa2V3aXNlLiAKCSogdHJlZS5jIChleHByX2xvY2F0aW9uLCBleHByX2hhc19sb2NhdGlvbiwgZXhwcl9sb2N1cywKCWV4cHJfZmlsZW5hbWUsIGV4cHJfbGluZW5vLCBnZXRfaW5uZXJfYXJyYXlfdHlwZSwKCWZpZWxkc19jb21wYXRpYmxlX3ApOiBMaWtld2lzZS4KCSogdHJlZS5oIChnZXRfaW5uZXJfYXJyYXlfdHlwZSwgZmllbGRzX2NvbXBhdGlibGVfcCwKCWV4cHJfbG9jYXRpb24sIGV4cHJfaGFzX2xvY2F0aW9uLCBleHByX2xvY3VzLCBleHByX2ZpbGVuYW1lLAoJZXhwcl9saW5lbm8sIGR1bXBfYWRkciwgcHJpbnRfbm9kZV9icmllZiwgZmxhZ3NfZnJvbV9kZWNsX29yX3R5cGUsCglzZXRqbXBfY2FsbF9wLCBhbGxvY2FfY2FsbF9wKTogTGlrZXdpc2UuCgoyMDA3LTA3LTI4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRpbWV2YXIuZGVmOiBBZGQgVFZfQ0FMTF9DTE9CQkVSLCBUVl9GTE9XX1NFTlNJVElWRSwKCVRWX0ZMT1dfSU5TRU5TSVRJVkUuCgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb21wdXRlX2NhbGxfY2xvYmJlcmVkKTogUHVzaC9wb3AKCVRWX0NBTExfQ0xPQkJFUi4KCShjb21wdXRlX2Zsb3dfc2Vuc2l0aXZlX2FsaWFzaW5nKTogRGl0dG8gZm9yIFRWX0ZMT1dfU0VOU0lUSVZFLgoJKGNvbXB1dGVfZmxvd19pbnNlbnNpdGl2ZV9hbGlhc2luZyk6IERpdHRvIGZvcgoJVFZfRkxPV19JTlNFTlNJVElWRS4JCgoyMDA3LTA3LTI3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHJlZ2lzdGVyX21vdmVfY29zdCk6IFJlbW92ZSBhY2NpZGVudGFsbHkKCWNvbWl0dGVkICNpZiAwIGJsb2NrLgoKCSogYXR0cmlicy5jOiBJbmNsdWRlIGhhc2h0YWIuaAoJKGF0dHJpYnV0ZV9oYXNoKTogTmV3LgoJKHN1YnN0cmluZyk6IE5ldyBzdHJ1Y3R1cmUuCgkoZXh0cmFjdF9hdHRyaWJ1dGVfc3Vic3RyaW5nLCBzdWJzdHJpbmdfaGFzaCwgaGFzaF9hdHRyLCBlcV9hdHRyKToKCU5ldyBmdW5jdGlvbi4KCShpbml0X2F0dHJpYnV0ZXMpOiBJbml0aWFsaXplIGF0dHJpYnV0ZSBoYXNoLgoJKGRlY2xfYXR0cmlidXRlcyk6IFVzZSBhdHRyaWJ1dGUgaGFzaC4KCSogTWFrZWZpbGUuaW4gKGF0dHJpYnMuYyk6IERlcGVuZCBvbiBoYXNodGFiLmguCgoyMDA3LTA3LTI3ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L3ZlY3QubWQgKHZlY19pbml0djJzaSk6IFJlbW92ZSBiYWQgQklHX0VORElBTiB0ZXN0LgoKMjAwNy0wNy0yNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKG1kc3AsIG1kc3ByMik6IERvY3VtZW50IHRoZSBfX21pcHNfZHNwLAoJX19taXBzX2RzcHIyIGFuZCBfX21pcHNfZHNwX3JldiBtYWNyb3MuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19taXBzX2RzcF9yZXYuCgoyMDA3LTA3LTI3ICBEb3VnbGFzIEdyZWdvciAgPGRvdWcuZ3JlZ29yQGdtYWlsLmNvbT4KCQoJKiBjLWNvbW1vbi5oIChlbnVtIHJpZCk6IEFkZCBSSURfREVDTFRZUEUsIHVwZGF0ZSBSSURfTEFTVF9DWFgwWC4KCjIwMDctMDctMjYgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjc0OQoJCgkqIGRmLXByb2JsZW1zLmMgKGRmX2NyZWF0ZV91bnVzZWRfbm90ZSk6IFJlbW92ZWQgZG9fbm90X2dlbiBwYXJtCglhbmQgdGhlIHVwZGF0aW5nIG9mIHRoZSBsaXZlIGFuZCBkb19ub3RfZ2VuIHNldHMuCgkoZGZfbm90ZV9iYl9jb21wdXRlKTogQWRkZWQgdXBkYXRpbmcgb2YgbGl2ZSBhbmQgZG9fbm90X2dlbiBzZXRzCglmb3IgcmVndWxhciBkZWZzIHNvIHRoYXQgdGhlIGNhc2Ugb2YgY2xvYmJlciBpbnNpZGUgY29uZGl0aW9uYWwKCWNhbGwgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KCQoyMDA3LTA3LTI3ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZyk6IEdlbmVyYXRlIHRoZQoJb3BlcmFuZHMgd2l0aCBjb21wYXRpYmxlIHR5cGUuCgoyMDA3LTA3LTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cHIuaCAoc3RvcmVfYml0X2ZpZWxkKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkqIGV4cG1lZC5jIChjaGVja19wcmVkaWNhdGVfdm9sYXRpbGVfb2spOiBOZXcgZnVuY3Rpb24uCgkoc3RvcmVfYml0X2ZpZWxkXzEpOiBOZXcgZnVuY3Rpb24sIGV4dHJhY3RlZCBmcm9tIHN0b3JlX2JpdF9maWVsZC4KCVRha2UgYSBmYWxsYmFja19wIGFyZ3VtZW50IGFuZCByZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZC4KCU9ubHkgdXNlIHN0b3JlX2ZpeGVkX2JpdF9maWVsZCBpZiBmYWxsYmFja19wLiAgRG9uJ3QgcmVjb21wdXRlCgltb2RlX2Zvcl9leHRyYWN0aW9uOyB1c2Ugb3BfbW9kZSBpbnN0ZWFkLiAgVHJ5IGZvcmNpbmcgbWVtb3JpZXMKCWludG8gcmVnaXN0ZXJzIGlmIHRoZSBpbnN2IGV4cGFuZGVyIGZhaWxzLgoJKHN0b3JlX2JpdF9maWVsZCk6IFVzZSBzdG9yZV9iaXRfZmllbGRfMSB3aXRoIGZhbGxiYWNrX3AgdHJ1ZS4KCURvbid0IHJldHVybiBhIHZhbHVlLgoJKGNvbnZlcnRfZXh0cmFjdGVkX2JpdF9maWVsZCk6IE5ldyBmdW5jdGlvbiwgZXh0cmFjdGVkIGZyb20KCXN0b3JlX2JpdF9maWVsZC4KCShleHRyYWN0X2JpdF9maWVsZF8xKTogTGlrZXdpc2UuICBUYWtlIGEgZmFsbGJhY2tfcCBhcmd1bWVudAoJYW5kIHJldHVybiBOVUxMIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkLiAgT25seSB1c2UKCWV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkIGlmIGZhbGxiYWNrX3AuICBPbmx5IGNhbGN1bGF0ZSBvbmUKCWV4dHJhY3Rpb24gbW9kZS4gIENvbWJpbmUgY29kZSBmb3IgZXh0diBhbmQgZXh0enYuICBUcnkgZm9yY2luZwoJbWVtb3JpZXMgaW50byByZWdpc3RlcnMgaWYgdGhlIGV4dCh6KXYgZXhwYW5kZXIgZmFpbHMuCgkoZXh0cmFjdF9iaXRfZmllbGQpOiBVc2UgZXh0cmFjdF9iaXRfZmllbGRfMSB3aXRoIGZhbGxiYWNrX3AgdHJ1ZS4KCjIwMDctMDctMjcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIGRmLmggKGRmX213X2hhcmRyZWcpOiBUdXJuIGRmX3JlZl90eXBlIGFuZCBkZl9yZWZfZmxhZ3MKCWludG8gYml0ZmllbGRzLgoJKGRmX3JlZik6IExpa2V3aXNlLiAgUHV0IHJlZ25vIHdpdGggb3RoZXIgaW50ZWdlciBmaWVsZHMuCgoyMDA3LTA3LTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBkZi5oIChkZl9td19oYXJkcmVnKTogUmVtb3ZlICJsb2MiIGZpZWxkLgoJKiBkZi1zY2FuLmMgKGRmX3JlZl9yZWNvcmQpOiBEb24ndCBzZXQgaXQuICBSZW1vdmUgcmVkdW5kYW50Cglsb2NhbCB2YXJpYWJsZS4KCSogZGYtcHJvYmxlbXMuYyAoZGZfd2hvbGVfbXdfcmVnX3VudXNlZF9wKTogTmV3IGZ1bmN0aW9uLAoJc3BsaXQgb3V0IGZyb20gZGZfc2V0X3VudXNlZF9ub3Rlc19mb3JfbXcuICBSZXR1cm4gZmFsc2UgZm9yCglwYXJ0aWFsIHJlZmVyZW5jZXMuICBBc3NlcnQgdGhhdCBtd19yZWcgaXMgYSBSRUcgd2hlbiByZXR1cm5pbmcgdHJ1ZS4KCShkZl9zZXRfdW51c2VkX25vdGVzX2Zvcl9tdyk6IFVzZSBpdC4gIFVzZSBtd19yZWcgaW5zdGVhZCBvZiAqbG9jLgoJKGRmX3dob2xlX213X3JlZ19kZWFkX3ApOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglkZl9zZXRfZGVhZF9ub3Rlc19mb3JfbXcuICBSZXR1cm4gZmFsc2UgZm9yIHBhcnRpYWwgcmVmZXJlbmNlcy4KCUFzc2VydCB0aGF0IG13X3JlZyBpcyBhIFJFRyB3aGVuIHJldHVybmluZyB0cnVlLgoJKGRmX3NldF9kZWFkX25vdGVzX2Zvcl9tdyk6IFVzZSBpdC4gIFVzZSBtd19yZWcgaW5zdGVhZCBvZiAqbG9jLgoJUmVtb3ZlIHJlZHVuZGFudCBiaXRtYXAgY2hlY2suCgoyMDA3LTA3LTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaWE2NC90LWlhNjQgKCQoVCljcnRiZWdpbi5vKTogUmVtb3ZlZC4KCSgkKFQpY3J0ZW5kLm8pOiBMaWt3aXNlLgoJKCQoVCljcnRiZWdpblMubyk6IExpa3dpc2UuCgkoJChUKWNydGVuZFMubyk6IExpa3dpc2UuCgkoJChUKWNydGZhc3RtYXRoLm8pOiBMaWt3aXNlLgoKMjAwNy0wNy0yNiAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGRvbWluYW5jZS5jIChkb21fY29tcHV0ZWQsIG5fYmJzX2luX2RvbV90cmVlKTogUmVtb3ZlZC4KCSogZnVuY3Rpb24uaCAoZG9tX2NvbXB1dGVkLCBuX2Jic19pbl9kb21fdHJlZSk6IE5ldyBtYWNyb3MuCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBjb250cm9sX2Zsb3dfZ3JhcGgpOiBBZGRlZCB4X2RvbV9jb21wdXRlZAoJYW5kIHhfbl9iYnNfaW5fZG9tX3RyZWUgZmllbGRzLgoKMjAwNy0wNy0yNiAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzIwODcKCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jICh0cmVlX3RyYW5zZm9ybV9hbmRfdW5yb2xsX2xvb3ApOgoJRG8gbm90IGNhbGwgc2NhbGVfYmJzX2ZyZXF1ZW5jaWVzX2ludCB3aXRoIHByb2Igb2YgemVyby4KCjIwMDctMDctMjYgIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKG5lb25fbGFuZV9ib3VuZHMsIG5lb25fY29uc3RfYm91bmRzKQoJKG5lb25fZWxlbWVudF9iaXRzKTogQWRkIHByb3RvdHlwZXMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGJvdW5kc19jaGVjaywgbmVvbl9sYW5lX2JvdW5kcykKCShuZW9uX2NvbnN0X2JvdW5kcywgbmVvbl9lbGVtZW50X2JpdHMpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvYXJtL25lb24ubWQgKG5lb25fdmdldF9sYW5lPG1vZGU+LCBuZW9uX3ZnZXRfbGFuZWRpKQoJKG5lb25fdmdldF9sYW5ldjJkaSwgbmVvbl92c2V0X2xhbmU8bW9kZT4sIG5lb25fdnNldF9sYW5lZGkpCgkobmVvbl92c2V0X2xhbmV2MmRpLCBuZW9uX3ZkdXBfbGFuZTxtb2RlPiwgbmVvbl92ZHVwX2xhbmVkaSkKCShuZW9uX3ZkdXBfbGFuZXYyZGksIG5lb25fdmN2dF9uPG1vZGU+LCBuZW9uX3ZtdWxfbGFuZTxtb2RlPikKCShuZW9uX3ZtdWxsX2xhbmU8bW9kZT4sIG5lb25fdnFkbXVsbF9sYW5lPG1vZGU+KQoJKG5lb25fdnFkbXVsaF9sYW5lPG1vZGU+LCBuZW9uX3ZtbGFfbGFuZTxtb2RlPikKCShuZW9uX3ZtbGFsX2xhbmU8bW9kZT4sIG5lb25fdnFkbWxhbF9sYW5lPG1vZGU+KQoJKG5lb25fdm1sc19sYW5lPG1vZGU+LCBuZW9uX3ZtbHNsX2xhbmU8bW9kZT4pCgkobmVvbl92cWRtbHNsX2xhbmU8bW9kZT4sIG5lb25fdmV4dDxtb2RlPiwgbmVvbl92c2hyX248bW9kZT4pCgkobmVvbl92c2hybl9uPG1vZGU+LCBuZW9uX3Zxc2hybl9uPG1vZGU+LCBuZW9uX3Zxc2hydW5fbjxtb2RlPikKCShuZW9uX3ZzaGxfbjxtb2RlPiwgbmVvbl92c2hsX248bW9kZT4sIG5lb25fdnFzaGxfbjxtb2RlPikKCShuZW9uX3Zxc2hsdV9uPG1vZGU+LCBuZW9uX3ZzaGxsX248bW9kZT4sIG5lb25fdnNyYV9uPG1vZGU+KQoJKG5lb25fdnNyaV9uPG1vZGU+LCBuZW9uX3ZzbGlfbjxtb2RlPik6IEFkZCBib3VuZHMgY2hlY2tzLgoKMjAwNy0wNy0yNiAgTmF0aGFuIEZyb3lkICA8ZnJveWRuakBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3Z4d29ya3MuaCAoVlhXT1JLU19MSU5LX1NQRUMpOiBGaXggdHlwby4KCShIQVZFX0FTX0dOVV9BVFRSSUJVVEUpOiBVbmRlZmluZS4KCjIwMDctMDctMjYgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgoJICAgIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX21hY19hY2N1bXVsYXRvcl9pc19tdWxfcmVzdWx0KTogTmV3LgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX21hY19hY2N1bXVsYXRvcl9pc19tdWxfcmVzdWx0KTogTmV3LgoJKiBjb25maWcvYXJtL2NvcnRleC1hOC5tZDogTmV3LgoJKiBjb25maWcvYXJtL2NvcnRleC1hOC1uZW9uLm1kOiBOZXcuCgkqIGNvbmZpZy9hcm0vbmVvbi1zY2hlZGdlbi5tbDogTmV3LgoJKiBjb25maWcvYXJtL25lb24ubWQgKHZxaF9tbmVtKTogTmV3LgoJKG5lb25fdHlwZSk6IE5ldy4KCShJc19mbG9hdF9tb2RlKTogTmV3LgoJKFNjYWxhcl9tdWxfOF8xNik6IE5ldy4KCShJc19kX3JlZyk6IE5ldy4KCShWX21vZGVfbnVuaXRzKTogTmV3LgoJKEFsbCBpbnN0cnVjdGlvbiBwYXR0ZXJucyk6IEFubm90YXRlIHdpdGggbmVvbl90eXBlIGF0dHJpYnV0ZQoJdmFsdWVzLgoJKiBjb25maWcvYXJtL2FybS5tZDogSW5jbHVkZSBjb3J0ZXgtYTgubWQuCgkoaW5zbik6IEFkZCBzbW1sYSwgdW1hYWwsIHNtbGFsZCwgc21sc2xkLCBjbHosIG1ycywgbXNyIGFuZCB4dGFiCgl2YWx1ZXMuCglBbm5vdGF0ZSBpbnN0cnVjdGlvbiBwYXR0ZXJucyBhY2NvcmRpbmdseS4KCShnZW5lcmljX3NjaGVkKTogRG8gbm90IHVzZSBnZW5lcmljIHNjaGVkdWxpbmcgZm9yIENvcnRleC1BOC4KCShnZW5lcmljX3ZmcCk6IERvIG5vdCB1c2UgZ2VuZXJpYyBWRlAgc2NoZWR1bGluZyBmb3IgQ29ydGV4LUE4LgoKMjAwNy0wNy0yNiAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9yZWFkX2Zyb21fY29uc3RhbnRfc3RyaW5nKTogVXNlCglidWlsZF9pbnRfY3N0X3R5cGUuCgkqIHRyZWUtc3NhLWNjcC5jIChmb2xkX2NvbnN0X2FnZ3JlZ2F0ZV9yZWYpOiBMaWtld2lzZS4KCjIwMDctMDctMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5oOiBDaGFuZ2UgY29weXJpZ2h0IGhlYWRlciB0byByZWZlciB0byB2ZXJzaW9uCgkzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQgdG8gcG9pbnQgcmVhZGVycyBhdCB0aGUKCUNPUFlJTkczIGZpbGUgYW5kIHRoZSBGU0YncyBsaWNlbnNlIHdlYiBwYWdlLgoJKiB0cmVlLXZycC5jLCByZWdyZW5hbWUuYywgYXR0cmlicy5jLCBsb29wLXVuc3dpdGNoLmMsCglzY2hlZC1lYmIuYywgZndwcm9wLmMsIHRyZWUtbG9vcC1saW5lYXIuYywgZHdhcmYyYXNtLmMsCgl0cmVlLWludG8tc3NhLmMsIGR3YXJmMmFzbS5oLCB0cmVlLXNzYS1sb29wLWltLmMsIHNiaXRtYXAuYywKCXRhcmdob29rcy5jLCB0cmVlLWR1bXAuYywgdHJlZS1jb21wbGV4LmMsIHNiaXRtYXAuaCwgdGFyZ2hvb2tzLmgsCgl0cmVlLWR1bXAuaCwgcmVnc3RhdC5jLCBzZWUuYywgbWFjaG1vZGUuaCwgaG9va3MuYywgY2dyYXBoYnVpbGQuYywKCWhvb2tzLmgsIGdlbnJlY29nLmMsIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jLCBnZW4tcHJvdG9zLmMsCglmbGFncy5oLCBydGxob29rcy5jLCBnZW5jaGVjay5jLCB0cmVlLXNzYS1sb29wLW5pdGVyLmMsCglvcHRzLWNvbW1vbi5jLCBkYmdjbnQuZGVmLCB0cmVlLXByZXR0eS1wcmludC5jLCB0cmFjZXIuYywKCWdlbmd0eXBlLmMsIG1rY29uZmlnLnNoLCBnZW5ndHlwZS5oLCB0cmVlLXNzYS1sb29wLXVuc3dpdGNoLmMsCgljZ3JhcGguYywgYy1sZXguYywgY2dyYXBoLmgsIGxpYmZ1bmNzLmgsIGNmZ2xvb3BtYW5pcC5jLAoJcnRsLWVycm9yLmMsIG9wdGFicy5jLCBwb3N0cmVsb2FkLWdjc2UuYywgdHJlZS1zc2EtbG9vcC1tYW5pcC5jLAoJb3B0YWJzLmgsIGdlbm1kZGVwcy5jLCBkZWZhdWx0cy5oLCBwb3N0cmVsb2FkLmMsIHZhbHVlLXByb2YuYywKCXRyZWUtc3NhLWxvb3AtY2guYywgdHJlZS10YWlsY2FsbC5jLCBnZW5nZW5ydGwuYywgdmFsdWUtcHJvZi5oLAoJZ2Vub3Bpbml0LmMsIHRyZWUuYywgdHJlZS5oLCByZWxvYWQuYywgdHJlZS1wYXNzLmgsIGlwYS1jcC5jLAoJcmVsb2FkLmgsIGJpdG1hcC5jLCBiaXRtYXAuaCwgdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMsCgljLWNvbmZpZy1sYW5nLmluLCB0cmVlLXNjYWxhci1ldm9sdXRpb24uaCwgdGFyZ2V0LmgsIGNwcHNwZWMuYywKCXJ0bGFuYWwuYywgZGRnLmMsIGxhbWJkYS1tYXQuYywgbWlwcy10ZHVtcC5jLCBkZGcuaCwKCXRyZWUtcGhpbm9kZXMuYywgbWlwcy10ZmlsZS5jLCBwb2ludGVyLXNldC5jLCBwb2ludGVyLXNldC5oLAoJZGlhZ25vc3RpYy5jLCBmaW5hbC5jLCBkaWFnbm9zdGljLmgsIGJ1aWx0aW5zLmMsIGdlbm91dHB1dC5jLAoJZ2NjLmMsIGxpc3RzLmMsIHRyZWUtc3NhLWFsaWFzLXdhcm5pbmdzLmMsIGdjYy5oLCBjZmdob29rcy5jLAoJaW5wdXQuaCwgZ2Vuc3VwcG9ydC5jLCBmb2xkLWNvbnN0LmMsIGNmZ2hvb2tzLmgsIGluc24tbm90ZXMuZGVmLAoJZ2Vuc3VwcG9ydC5oLCBidWlsdGluLWF0dHJzLmRlZiwgc3luYy1idWlsdGlucy5kZWYsIHBhcmFtcy5jLAoJY2ZnbG9vcGFuYWwuYywgcGFyYW1zLmgsIGdyYXBoZHMuYywgb21wLWxvdy5jLCB0cmVlLXNzYS1kc2UuYywKCWdyYXBoZHMuaCwgZ2Nvdi5jLCBjZmcuYywgZ2VuZXh0cmFjdC5jLCBpcGEtcmVmZXJlbmNlLmMsCglnZW5hdXRvbWF0YS5jLCB0cmVlLXNzYS11bmNwcm9wLmMsIGF1dG8taW5jLWRlYy5jLCB0b3BsZXYuYywKCXRyZWUtZ2ltcGxlLmMsIGlwYS1yZWZlcmVuY2UuaCwgdm1zZGJnb3V0LmMsIGVycm9ycy5jLCB0b3BsZXYuaCwKCXJlb3JnLmMsIHRyZWUtZ2ltcGxlLmgsIHRyZWUtY2hyZWMuYywgcHJldHR5LXByaW50LmMsIGVycm9ycy5oLAoJcmVhbC5jLCB0cmVlLWNocmVjLmgsIHByZXR0eS1wcmludC5oLCBkZWJ1Zy5jLCByZWFsLmgsIGdlbmVtaXQuYywKCW9tZWdhLmMsIGMtY3BwYnVpbHRpbi5jLCBnZW5tdWx0aWxpYiwgZGVidWcuaCwgb21lZ2EuaCwKCXRyZWUtc3NhLXNjY3ZuLmMsIGdlbmNvbmZpZy5jLCB0cmVlLXNzYS1zY2N2bi5oLCBjZ3JhcGh1bml0LmMsCglyZWdzLmgsIGRmLXNjYW4uYywgdmVjLmMsIGhvc3Rob29rcy1kZWYuaCwgdmVjLmgsCgl0cmVlLXNzYS1jb3B5cmVuYW1lLmMsIHNjYW4uYywgYnVpbHRpbi10eXBlcy5kZWYsIHRyZWUtc3NhLWNjcC5jLAoJc2Nhbi5oLCBtb2RlLWNsYXNzZXMuZGVmLCBoYWlmYS1zY2hlZC5jLCBkb21pbmFuY2UuYywgZG9qdW1wLmMsCglkb3VibGUtaW50LmMsIGdjb3YtaW8uYywgZGJ4b3V0LmMsIGJ1aWx0aW5zLmRlZiwgZG91YmxlLWludC5oLAoJZGJ4b3V0LmgsIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMsIGRmLWNvcmUuYywgbW9kZS1zd2l0Y2hpbmcuYywKCWdlbmd0eXBlLWxleC5sLCB0cmVlLW5vbXVkZmxhcC5jLCBtb2R1bG8tc2NoZWQuYywgYy1vYmpjLWNvbW1vbi5jLAoJaG9zdGhvb2tzLmgsIGMtb2JqYy1jb21tb24uaCwgY2FsbGVyLXNhdmUuYywgZ3JhcGguYywKCWlwYS1wdXJlLWNvbnN0LmMsIGdyYXBoLmgsIGMtZm9ybWF0LmMsIGNzZS5jLCBmaXgtaGVhZGVyLmMsCgljLWZvcm1hdC5oLCB3ZWIuYywgdHJlZS1zdGRhcmcuYywgZ2VucGVlcC5jLCB0cmVlLXN0ZGFyZy5oLAoJdHJlZS1zc2EtbWF0aC1vcHRzLmMsIHhjb2Zmb3V0LmMsIHRyZWUtc3NhLWRvbS5jLCB0cmVlLW5ydi5jLAoJeGNvZmZvdXQuaCwgdHJlZS1zc2EtcHJvcGFnYXRlLmMsIGlwYS11dGlscy5jLAoJdHJlZS1zc2EtcHJvcGFnYXRlLmgsIHRyZWUtc3NhLWFsaWFzLmMsIGxvb3AtaW5pdC5jLCBpcGEtdXRpbHMuaCwKCWdpbXBsZS1sb3cuYywgcnRsLmRlZiwgYy10cmVlLmgsIHRyZWUtc3NhLXNpbmsuYywgaXBhLWlubGluZS5jLAoJbWttYXAtc3ltdmVyLmF3aywgbWFjaG1vZGUuZGVmLCBjLXBjaC5jLCBjZmdhbmFsLmMsIGdsb2JhbC5jLAoJYWxsb2MtcG9vbC5jLCBjLXNlbWFudGljcy5jLCBhbGxvYy1wb29sLmgsIGp1bXAuYywgaWZjdnQuYywKCWR3YXJmMm91dC5jLCBleHByLmMsIGNmZ2J1aWxkLmMsIHRyZWUtYnJvd3Nlci5jLCBkd2FyZjJvdXQuaCwKCWV4cHIuaCwgbG9uZ2xvbmcuaCwgb3B0cy5jLCBnY292LWlvdi5jLCBvcHRzLmgsIGR3YXJmMi5oLAoJZ2VuYXR0cnRhYi5jLCBnZW5jb25kaXRpb25zLmMsIGdlbmF0dHIuYywgb3B0Yy1nZW4uYXdrLAoJdGltZXZhci5kZWYsIHRyZWUtc3NhLWxvb3AtaXZjYW5vbi5jLCBoYXJkLXJlZy1zZXQuaCwgcHJlZGljdC5jLAoJdHJlZS1zc2EtbG9vcC5jLCBob3N0LWRlZmF1bHQuYywgcHJlZGljdC5oLCByZWNvZy5jLCBkYmdjbnQuYywKCXJlY29nLmgsIGRiZ2NudC5oLCBjLWF1eC1pbmZvLmMsIHRyZWUtc3NhLWFkZHJlc3MuYywgdGltZXZhci5jLAoJZHNlLmMsIGxjbS5jLCB0cmVlLXNzYS1pZmNvbWJpbmUuYywgdGltZXZhci5oLCBkc2UuaCwKCW1hdHJpeC1yZW9yZy5jLCB0cmVlLXZuLmMsIHRyZWVzdHJ1Y3QuZGVmLCBmcC10ZXN0LmMsIGMtZGVjbC5jLAoJdHJlZS1laC5jLCBjLWVycm9ycy5jLCBjLXByZXR0eS1wcmludC5jLCByZWdtb3ZlLmMsCglsYW1iZGEtdHJhbnMuYywgYy1wcmV0dHktcHJpbnQuaCwgZXQtZm9yZXN0LmMsIGV0LWZvcmVzdC5oLAoJZWJpdG1hcC5jLCBjb25maWd1cmUuYWMsIGxvY2FsLWFsbG9jLmMsIGZ1bmN0aW9uLmMsIGxhbmdob29rcy5jLAoJZWJpdG1hcC5oLCBjcHBkZWZhdWx0LmMsIHRyZWUtdmVjdG9yaXplci5jLCBmdW5jdGlvbi5oLAoJbGFuZ2hvb2tzLmgsIHByaW50LXJ0bC5jLCBjcHBkZWZhdWx0LmgsIGRmLmgsIHRyZWUtdmVjdG9yaXplci5oLAoJc2Rib3V0LmMsIHN0b3ItbGF5b3V0LmMsIHNkYm91dC5oLCBydGxob29rcy1kZWYuaCwgcmVhZC1ydGwuYywKCWdjc2UuYywgaXBhLXR5cGUtZXNjYXBlLmMsIHZtc2RiZy5oLCBhbGlhcy5jLCBnZW5ndHlwZS1wYXJzZS5jLAoJaXBhLXR5cGUtZXNjYXBlLmgsIGRvbXdhbGsuYywgYWxpYXMuaCwgdHJlZS1pZi1jb252LmMsIHByb2ZpbGUuYywKCWluaXQtcmVncy5jLCBkb213YWxrLmgsIGlwYS5jLCBnY2NidWcuaW4sIHRyZWUtZGF0YS1yZWYuYywKCWxvb3AtdW5yb2xsLmMsIHRyZWUtZGF0YS1yZWYuaCwgdHJlZS1mbG93LWlubGluZS5oLCB0cmVlLWFmZmluZS5jLAoJbWttYXAtZmxhdC5hd2ssIHRyZWUtYWZmaW5lLmgsIHRyZWUtdmVjdC1hbmFseXplLmMsIGMub3B0LCBnZ2MuaCwKCW9wdC1nYXRoZXIuYXdrLCBjLXR5cGVjay5jLCBnaW1wbGlmeS5jLCBjb3JldHlwZXMuaCwgZXhlYy10b29sLmluLAoJaW5zbi1hZGRyLmgsIHRyZWUtc3NhLXBoaW9wdC5jLCBjLXByYWdtYS5jLCBjLXByYWdtYS5oLCBjYWxscy5jLAoJdHJlZS1zc2EtY29hbGVzY2UuYywgZ2VubW9kZXMuYywgbG9vcC1kb2xvb3AuYywgcHJlZGljdC5kZWYsCglkd2FyZi5oLCB0cmVlLmRlZiwgcnRsLWZhY3RvcmluZy5jLCBsb3dlci1zdWJyZWcuYywgZXhwbWVkLmMsCglidC1sb2FkLmMsIGdnYy1jb21tb24uYywgZ2VuZmxhZ3MuYywgdHJlZS1kZmEuYywgZXhjZXB0LmMsCgljb3ZlcmFnZS5jLCBleGNlcHQuaCwgZW1pdC1ydGwuYywgY2ZnZXhwYW5kLmMsIGNvdmVyYWdlLmgsCglzdHJpbmdwb29sLmMsIGNzZWxpYi5jLCBlbWl0LXJ0bC5oLCB0cmVlLWNmZ2NsZWFudXAuYywgYy1vcHRzLmMsCgljc2VsaWIuaCwgY2ZnY2xlYW51cC5jLCBzaW1wbGlmeS1ydHguYywgdHJlZS1zc2EtcHJlLmMsIGV4cGxvdy5jLAoJdHJlZS1zc2EtbGl2ZS5jLCB0cmVlLXNyYS5jLCB0cmVlLXNzYS1saXZlLmgsIHRyZWUtcHJlZGNvbS5jLAoJbG9vcC1pbnZhcmlhbnQuYywgZ2VucHJlZHMuYywgcHJvdG9pemUuYywgb3B0aC1nZW4uYXdrLCBjLWR1bXAuYywKCWxhbWJkYS5oLCBsb29wLWl2LmMsIHRyZWUtbXVkZmxhcC5jLCBpcGEtcHJvcC5jLCBwcmludC10cmVlLmMsCgl0cmVlLW11ZGZsYXAuaCwgdHJlZS1zc2EtY29weS5jLCBpcGEtcHJvcC5oLCBjZmdsYXlvdXQuYywKCXRyZWUtc3NhLWZvcndwcm9wLmMsIGMtY29udmVydC5jLCBjZmdsYXlvdXQuaCwgY29tbW9uLm9wdCwKCWdnYy16b25lLmMsIGdnYy1wYWdlLmMsIGMtb21wLmMsIHRyZWUtc3NhLWRjZS5jLCBnZW5jb2Rlcy5jLAoJdmFyYXNtLmMsIHRyZWUtdmVjdC1wYXR0ZXJucy5jLCBsaWJhZGEtbWsuaW4sIHRyZWUtc3NhLXRlci5jLAoJc2NoZWQtZGVwcy5jLCB0cmVlLW5lc3RlZC5jLCBjLXBwb3V0cHV0LmMsIHRyZWUtc3NhLmMsCgl0YXJnZXQtZGVmLmgsIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYywgbGFtYmRhLWNvZGUuYywKCW9tcC1idWlsdGlucy5kZWYsIHJ0bC5jLCByZWdjbGFzcy5jLCBzdGFiLmRlZiwgaW50bC5jLCBydGwuaCwKCWludGwuaCwgdHJlZS1pbmxpbmUuYywgY29uZGl0aW9ucy5oLCB0cmVlLWlubGluZS5oLCBpbnRlZ3JhdGUuYywKCXNjaGVkLWludC5oLCB0cmVlLWl0ZXJhdG9yLmMsIGludGVncmF0ZS5oLCB0cmVlLWl0ZXJhdG9yLmgsCglnZW5jaGVja3N1bS5jLCB0cmVlLW9wdGltaXplLmMsIG91dHB1dC5oLCB0cmVlLXZlY3QtdHJhbnNmb3JtLmMsCgl0cmVlLW9iamVjdC1zaXplLmMsIGNvbWJpbmUuYywgdHJlZS1vdXRvZi1zc2EuYywgYWRkcmVzc2VzLmgsCgliYi1yZW9yZGVyLmMsIHN0YWNrLXB0ci1tb2QuYywgcmVzb3VyY2UuYywgdmFyLXRyYWNraW5nLmMsCgljZmdsb29wLmMsIHN5c3RlbS5oLCByZXNvdXJjZS5oLCBnZ2Mtbm9uZS5jLCB0cmVlLXByb2ZpbGUuYywKCWNmZ2xvb3AuaCwgYy1naW1wbGlmeS5jLCBjLWNvbW1vbi5jLCBvcHQtZnVuY3Rpb25zLmF3aywKCXRyZWUtdmVjdC1nZW5lcmljLmMsIHRyZWUtZmxvdy5oLCBkZi1wcm9ibGVtcy5jLCBzY2FuLWRlY2xzLmMsCgljLWNvbW1vbi5oLCBjb25maWcuZ2NjLCByZWctc3RhY2suYywgdGxpbmsuYywgbWFpbi5jLCBzdHViLW9iamMuYywKCWZpeHByb3RvLCBjb25maWcuaG9zdCwgTWFrZWZpbGUuaW4sIGdjY3NwZWMuYywgc2NoZWQtcmduLmMsCgl2ZWNwcmltLmgsIGJhc2ljLWJsb2NrLmgsIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMsCgl0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5oLCBjLWNvbW1vbi5kZWYsIHNjaGVkLXZpcy5jLCB0cmVlLWNmZy5jLAoJcGFzc2VzLmMsIGdlbmNvbnN0YW50cy5jLCBjLWluY3BhdGguYywgYy1pbmNwYXRoLmgsCglzdHJ1Y3QtZXF1aXYuYywgYy1wYXJzZXIuYywgdHJlZS1zc2EtcmVhc3NvYy5jLCB2YXJyYXkuYywgc3JlYWwuYywKCXZhcnJheS5oLCBkZnAuYywgc3JlYWwuaCwgY29tYmluZS1zdGFjay1hZGouYywgZGZwLmgsCglyZWctbm90ZXMuZGVmLCBjZmdydGwuYywgY29uZmlnLmJ1aWxkLCB2YXJwb29sLmMsIGdlbmd0eXBlLXlhY2MueSwKCXN0bXQuYywgZGNlLmMsIHRyZWUtYnJvd3Nlci5kZWYsIHByZWZpeC5jLCBzdGF0aXN0aWNzLmgsCglwYXJhbXMuZGVmLCBkY2UuaCwgYy1sYW5nLmMsIGdjb3YtZHVtcC5jLCBwcmVmaXguaCwKCXRyZWUtc3NhbmFtZXMuYywgY29sbGVjdDIuYywgY29sbGVjdDIuaCwgdHJlZS1zc2EtdGhyZWFkZWRnZS5jLAoJY29udmVydC5jLCBjb252ZXJ0LmgsIGxhbmdob29rcy1kZWYuaCwgcmVsb2FkMS5jLAoJdHJlZS1zc2Etb3BlcmFuZHMuYzogTGlrZXdpc2UuCgoyMDA3LTA3LTI2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1saXZlLmM6IEluY2x1ZGUgZGVidWcuaCBhbmQgZmxhZ3MuaC4KCShtYXJrX3Njb3BlX2Jsb2NrX3VudXNlZCk6IE5ldyBmdW5jdGlvbi4KCShyZW1vdmVfdW51c2VkX3Njb3BlX2Jsb2NrX3ApOiBOZXcgZnVuY3Rpb24uCgkocmVtb3ZlX3VudXNlZF9sb2NhbHMpOiBSZW1vdmUgdW51c2VkIGJsb2NrcyB0b28uCgoyMDA3LTA3LTI1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogY29tYmluZS5jIChjb21iaW5lX21heF9yZWdubyk6IFJlbW92ZS4gIFJlbW92ZSBhbGwgdXNlcy4KCShzdHJ1Y3QgcmVnX3N0YXRfc3RydWN0KTogUmVuYW1lIGZyb20gc3RydWN0IHJlZ19zdGF0LgoJKHJlZ19zdGF0X3R5cGUpOiBEZWZpbmUsIGFuZCBkZWNsYXJlIFZFQ3MuCgkocmVnX3N0YXQpOiBDaGFuZ2UgZnJvbSBwb2ludGVyIHRvIFZFQy4gIENoYW5nZSBhbGwgdXNlcy4KCShjb21iaW5lX3NwbGl0X2luc25zKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCSh0cnlfY29tYmluZSwgZmluZF9zcGxpdF9wb2ludCk6IENhbGwgaXQgaW5zdGVhZCBvZiBzcGxpdF9pbnNucy4KCjIwMDctMDctMjUgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBjZmdob29rcy5jIChzcGxpdF9ibG9jayk6IEZpeCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgbG9vcCBsYXRjaC4KCjIwMDctMDctMjUgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBjZmdsb29wbWFuaXAuYyAoZml4X2xvb3Bfc3RydWN0dXJlKTogQ2FsbCBmb3JjZV9zaW5nbGVfc3VjY19sYXRjaGVzLgoKMjAwNy0wNy0yNSAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jIChjcmVhdGVfZWRnZV9hbmRfdXBkYXRlX2Rlc3RpbmF0aW9uX3BoaXMpOgoJU2NhbiB0aGUgbmV3IGVkZ2UgZm9yIGxvb3AgZXhpdCBpbmZvLgoKMjAwNy0wNy0yNSAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6Lm9yZz4KCgkqIGNvbmZpZy9kYXJ3aW4uYzogSW5jbHVkZSBkZWJ1Zy5oLgoKMjAwNy0wNy0yNSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgdGFyZ2V0LzMyMjE4CgkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jICh2ZWN0X3BhdHRlcm5fcmVjb2dfMSk6IENoZWNrIGZvciB2YWxpZCB0eXBlLgoKMjAwNy0wNy0yNSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEhBUkRfUkVHTk9fTlJFR1MpOiBIYW5kbGUgUkZtb2RlLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IERpdHRvLgoJKE1PREVTX1RJRUFCTEVfUCk6IERpdHRvLgoJKEhBUkRfUkVHTk9fQ0FMTEVSX1NBVkVfTU9ERSk6IERpdHRvLgoJKENMQVNTX01BWF9OUkVHUyk6IERpdHRvLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogQWRkIFIgZm9ybWF0LgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChkaXZzZjNfaW50ZXJuYWxfdGhyKTogUmVtb3ZlZC4KCShkaXZkZjNfaW50ZXJuYWxfdGhyKTogUmVtb3ZlZC4KCSogY29uZmlnL2lhNjQvZGl2Lm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL2lhNjQvY29uc3RyYWludHMubWQ6IEFkZCBIIGNvbnN0cmFpbnQuCgoyMDA3LTA3LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzYml0bWFwLmMgKHNiaXRtYXBfdmVyaWZ5X3BvcGNvdW50LCBzYml0bWFwX2FsbG9jX3dpdGhfcG9wY291bnQsCglzYml0bWFwX2NvcHksIHNiaXRtYXBfY29weV9uLCBzYml0bWFwX2VxdWFsLCBzYml0bWFwX2VtcHR5X3AsCglzYml0bWFwX3VuaW9uX29mX2RpZmZfY2csIHNiaXRtYXBfdW5pb25fb2ZfZGlmZiwgc2JpdG1hcF9ub3QsCglzYml0bWFwX2RpZmZlcmVuY2UsIHNiaXRtYXBfYW55X2NvbW1vbl9iaXRzLCBzYml0bWFwX2FfYW5kX2JfY2csCglzYml0bWFwX2FfYW5kX2IsIHNiaXRtYXBfYV94b3JfYl9jZywgc2JpdG1hcF9hX3hvcl9iLAoJc2JpdG1hcF9hX29yX2JfY2csIHNiaXRtYXBfYV9vcl9iLCBzYml0bWFwX2Ffc3Vic2V0X2JfcCwKCXNiaXRtYXBfYV9vcl9iX2FuZF9jX2NnLCBzYml0bWFwX2Ffb3JfYl9hbmRfYywKCXNiaXRtYXBfYV9hbmRfYl9vcl9jX2NnLCBzYml0bWFwX2FfYW5kX2Jfb3JfYywKCXNiaXRtYXBfZmlyc3Rfc2V0X2JpdCwgc2JpdG1hcF9sYXN0X3NldF9iaXQsIGR1bXBfc2JpdG1hcCwKCWR1bXBfc2JpdG1hcF9maWxlLCBkZWJ1Z19zYml0bWFwLCBwb3Bjb3VudF90YWJsZSwKCXNiaXRtYXBfcG9wY291bnQpOiBDb25zdGlmeS4KCSogc2JpdG1hcC5oIChjb25zdF9zYml0bWFwLCBjb25zdF9zYml0bWFwX3B0cik6IE5ldy4KCShzYml0bWFwX2l0ZXJhdG9yLCBzYml0bWFwX2l0ZXJfaW5pdCwgZHVtcF9zYml0bWFwLAoJZHVtcF9zYml0bWFwX2ZpbGUsIHNiaXRtYXBfY29weSwgc2JpdG1hcF9jb3B5X24sIHNiaXRtYXBfZXF1YWwsCglzYml0bWFwX2VtcHR5X3AsIHNiaXRtYXBfdW5pb25fb2ZfZGlmZiwgc2JpdG1hcF91bmlvbl9vZl9kaWZmX2NnLAoJc2JpdG1hcF9kaWZmZXJlbmNlLCBzYml0bWFwX25vdCwgc2JpdG1hcF9hX29yX2JfYW5kX2MsCglzYml0bWFwX2Ffb3JfYl9hbmRfY19jZywgc2JpdG1hcF9hX2FuZF9iX29yX2MsCglzYml0bWFwX2FfYW5kX2Jfb3JfY19jZywgc2JpdG1hcF9hbnlfY29tbW9uX2JpdHMsIHNiaXRtYXBfYV9hbmRfYiwKCXNiaXRtYXBfYV9hbmRfYl9jZywgc2JpdG1hcF9hX29yX2IsIHNiaXRtYXBfYV9vcl9iX2NnLAoJc2JpdG1hcF9hX3hvcl9iLCBzYml0bWFwX2FfeG9yX2JfY2csIHNiaXRtYXBfYV9zdWJzZXRfYl9wLAoJc2JpdG1hcF9maXJzdF9zZXRfYml0LCBzYml0bWFwX2xhc3Rfc2V0X2JpdCwgZGVidWdfc2JpdG1hcCwKCXNiaXRtYXBfcG9wY291bnQsIHNiaXRtYXBfdmVyaWZ5X3BvcGNvdW50KTogQ29uc3RpZnkuCgoyMDA3LTA3LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBiaXRtYXAuYyAoaGFzaF9kZXNjcmlwdG9yLCBlcV9kZXNjcmlwdG9yLCBiaXRtYXBfZWxlbWVudF96ZXJvcCwKCWJpdG1hcF9jb3B5LCBiaXRtYXBfY2xlYXJfYml0LCBwb3Bjb3VudF90YWJsZSwgYml0bWFwX2NvdW50X2JpdHMsCgliaXRtYXBfZmlyc3Rfc2V0X2JpdCwgYml0bWFwX2FuZCwgYml0bWFwX2FuZF9pbnRvLAoJYml0bWFwX2VsdF9jb3B5LCBiaXRtYXBfYW5kX2NvbXBsLCBiaXRtYXBfYW5kX2NvbXBsX2ludG8sCgliaXRtYXBfY29tcGxfYW5kX2ludG8sIGJpdG1hcF9lbHRfaW9yLCBiaXRtYXBfaW9yLAoJYml0bWFwX2lvcl9pbnRvLCBiaXRtYXBfeG9yLCBiaXRtYXBfeG9yX2ludG8sIGJpdG1hcF9lcXVhbF9wLAoJYml0bWFwX2ludGVyc2VjdF9wLCBiaXRtYXBfaW50ZXJzZWN0X2NvbXBsX3AsCgliaXRtYXBfaW9yX2FuZF9jb21wbCwgYml0bWFwX2lvcl9hbmRfY29tcGxfaW50bywKCWRlYnVnX2JpdG1hcF9maWxlLCBkZWJ1Z19iaXRtYXAsIGJpdG1hcF9wcmludCwgYml0bWFwX2hhc2gpOgoJQ29uc3RpZnkuCgkqIGJpdG1hcC5oIChiaXRtYXBfY29weSwgYml0bWFwX2VxdWFsX3AsIGJpdG1hcF9pbnRlcnNlY3RfcCwKCWJpdG1hcF9pbnRlcnNlY3RfY29tcGxfcCwgYml0bWFwX2NvdW50X2JpdHMsIGJpdG1hcF9hbmQsCgliaXRtYXBfYW5kX2ludG8sIGJpdG1hcF9hbmRfY29tcGwsIGJpdG1hcF9hbmRfY29tcGxfaW50bywKCWJpdG1hcF9jb21wbF9hbmRfaW50bywgYml0bWFwX2lvciwgYml0bWFwX2lvcl9pbnRvLCBiaXRtYXBfeG9yLAoJYml0bWFwX3hvcl9pbnRvLCBiaXRtYXBfaW9yX2FuZF9jb21wbCwgYml0bWFwX2lvcl9hbmRfY29tcGxfaW50bywKCWRlYnVnX2JpdG1hcCwgZGVidWdfYml0bWFwX2ZpbGUsIGJpdG1hcF9wcmludCwKCWJpdG1hcF9maXJzdF9zZXRfYml0LCBiaXRtYXBfaGFzaCwgYm1wX2l0ZXJfc2V0X2luaXQsCglibXBfaXRlcl9hbmRfaW5pdCwgYm1wX2l0ZXJfYW5kX2NvbXBsX2luaXQpOiBMaWtld2lzZS4KCjIwMDctMDctMjUgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZGl0aW9uYWwgZml4IGZvcgoJZGVidWcgaW5mbyBmb3JtYXRzIHRoYXQgZG9uJ3Qgc3VwcG9ydCB2YXIgdHJhY2tpbmcuCgoyMDA3LTA3LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjc2VsaWIuYyAoZW50cnlfYW5kX3J0eF9lcXVhbF9wKTogQ29uc3RpZnkuCgkqIGdlbmd0eXBlLmMgKG91dHB1dF9tYW5nbGVkX3R5cGVuYW1lLCB3cml0ZV90eXBlcywgd3JpdGVfbG9jYWwpOgoJTGlrZXdpc2UuCgkqIGdlbmd0eXBlLmggKGNvbnN0X3R5cGVfcCk6IE5ldy4KCSogc2VlLmMgKGVxX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLCBoYXNoX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uKToKCUNvbnN0aWZ5LgoJKiB0bGluay5jIChzY2FuX2xpbmtlcl9vdXRwdXQpOiBEZS1jb25zdGlmeS4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChtZW1yZWZfZXEpOiBDb25zdGlmeS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoY29uc3Rfc2hhcmVkX2JpdG1hcF9pbmZvX3QpOiBOZXcuCgkoc2hhcmVkX2JpdG1hcF9oYXNoLCBzaGFyZWRfYml0bWFwX2VxKTogQ29uc3RpZnkuCgoyMDA3LTA3LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jIChmbmFtZV9hc19zdHJpbmcsIGNfdHlwZV9oYXNoKTogQ29uc3RpZnkuCgkqIGMtdHlwZWNrLmMgKGZyZWVfYWxsX3RhZ2dlZF90dV9zZWVuX3VwX3RvKTogTGlrZXdpc2UuCgkqIGNncmFwaC5jIChlZGdlX2hhc2gsIGVkZ2VfZXEpOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGRlY2xfZGllX3RhYmxlX2VxLCBkZWNsX2xvY190YWJsZV9lcSk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChtZW1fYXR0cnNfaHRhYl9lcSwgcmVnX2F0dHJzX2h0YWJfaGFzaCwKCXJlZ19hdHRyc19odGFiX2VxKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jICh0MnJfZXEsIHQycl9oYXNoLCB0dHlwZXNfZmlsdGVyX2VxLCBlaGxfaGFzaCwgZWhsX2VxKToKCUxpa2V3aXNlLgoJKiBnZW5hdXRvbWF0YS5jIChjb25zdF9yZXNlcnZfc2V0c190LCBjb25zdF91bml0X2RlY2xfdCwKCWNvbnN0X2RlY2xfdCwgY29uc3Rfc3RhdGVfdCwgY29uc3RfYXV0b21hdGFfbGlzdF9lbF90KTogTmV3LgoJKGZpcnN0X291dF9hcmMsIERFQ0xfVU5JVCwgREVDTF9CWVBBU1MsIERFQ0xfQVVUT01BVE9OLCBERUNMX0VYQ0wsCglERUNMX1BSRVNFTkNFLCBERUNMX0FCU0VOQ0UsIERFQ0xfUkVTRVJWLCBERUNMX0lOU05fUkVTRVJWLAoJYXV0b21hdG9uX2RlY2xfaGFzaCwgYXV0b21hdG9uX2RlY2xfZXFfcCwgaW5zbl9kZWNsX2hhc2gsCglpbnNuX2RlY2xfZXFfcCwgZGVjbF9oYXNoLCBkZWNsX2VxX3AsIGFsdF9zdGF0ZV9jbXAsCglyZXNlcnZfc2V0c19jbXAsIHJlc2Vydl9zZXRzX2VxLCBzdGF0ZV9oYXNoLCBzdGF0ZV9lcV9wLAoJYXV0b21hdGFfbGlzdF9oYXNoLCBhdXRvbWF0YV9saXN0X2VxX3AsIGNvbXBhcmVfc3RhdGVzX2Zvcl9lcXVpdiwKCWNvbXBhcmVfbWF4X29jY19jeWNsZV9udW1zLCBvdXRfc3RhdGVfYXJjc19udW0sCgljb21wYXJlX3RyYW5zaXRpb25fZWxzX251bSwgdW5pdHNfY21wLCBzdGF0ZV9yZXNlcnZzX2NtcCk6CglDb25zdGlmeS4KCSogZ2VubW9kZXMuYyAoY21wX21vZGVzKTogTGlrZXdpc2UuCgkqIGdnYy1jb21tb24uYyAoc2F2aW5nX2h0YWJfaGFzaCwgc2F2aW5nX2h0YWJfZXEpOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAoY29tcGFyZV9jYXNlX2xhYmVscyk6IExpa2V3aXNlLgoJKiBpcGEtdHlwZS1lc2NhcGUuYyAoZ2V0X25hbWVfb2ZfdHlwZSwgdHlwZV9icmFuZF9zKTogTGlrZXdpc2UuCgkqIGxvb3AtdW5yb2xsLmMgKHNpX2luZm9faGFzaCwgdmVfaW5mb19oYXNoKTogTGlrZXdpc2UuCgkqIG1hdHJpeC1yZW9yZy5jIChtdHRfaW5mb19oYXNoKTogTGlrZXdpc2UuCgkqIHBvc3RyZWxvYWQtZ2NzZS5jIChoYXNoX2V4cHJfZm9yX2h0YWIsIGV4cHJfZXF1aXZfcCk6IExpa2V3aXNlLgoJKiBydGwtZmFjdG9yaW5nLmMgKGNvbnN0X3BfaGFzaF9idWNrZXQsIGNvbnN0X3BfaGFzaF9lbGVtKTogTmV3LgoJKGh0YWJfaGFzaF9idWNrZXQsIGh0YWJfaGFzaF9lbGVtKTogQ29uc3RpZnkuCgkqIHRyZWUtYnJvd3Nlci5jIChUQl9wYXJlbnRfZXEpOiBMaWtld2lzZS4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGhhc2hfc2Nldl9pbmZvKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKHNvcnRfdGFnc19ieV9pZCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jb2FsZXNjZS5jIChjb25zdF9jb2FsZXNjZV9wYWlyX3ApOiBOZXcuCgkoY29hbGVzY2VfcGFpcl9tYXBfaGFzaCwgY29hbGVzY2VfcGFpcl9tYXBfZXEsIGNvbXBhcmVfcGFpcnMpOgoJQ29uc3RpZnkuCgkqIHRyZWUtc3NhLWRvbS5jIChhdmFpbF9leHByX2hhc2gsIGF2YWlsX2V4cHJfZXEpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtcHJlLmMgKGNvbnN0X2V4cHJfcHJlZF90cmFuc190KTogTmV3LgoJKGV4cHJfcHJlZF90cmFuc19oYXNoLCBleHByX3ByZWRfdHJhbnNfZXEpOiBDb25zdGlmeS4KCSogdHJlZS1zc2Etc2Njdm4uYyAoY29uc3Rfdm5fYmluYXJ5X29wX3QsIGNvbnN0X3ZuX3VuYXJ5X29wX3QsCgljb25zdF92bl9waGlfdCwgY29uc3Rfdm5fcmVmZXJlbmNlX29wX3QsIGNvbnN0X3ZuX3JlZmVyZW5jZV90KToKCU5ldy4KCSh2bl9yZWZlcmVuY2Vfb3BfZXEsIHZuX3JlZmVyZW5jZV9oYXNoLCB2bl9yZWZlcmVuY2VfZXEsCgl2bl91bmFyeV9vcF9oYXNoLCB2bl91bmFyeV9vcF9lcSwgdm5fYmluYXJ5X29wX2hhc2gsCgl2bl9iaW5hcnlfb3BfZXEsIHZuX3BoaV9oYXNoLCB2bl9waGlfZXEpOiBDb25zdGlmeS4KCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHJlZGlyZWN0aW9uX2RhdGFfaGFzaCwKCXJlZGlyZWN0aW9uX2RhdGFfZXEpOiBMaWtld2lzZS4gCgkqIHRyZWUtc3NhLXVuY3Byb3AuYyAoZXF1aXZfaGFzaCwgZXF1aXZfZXEpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EuYyAodmFyX2Fubl9lcSk6IExpa2V3aXNlLgoJKiB0cmVlLXZycC5jIChjb21wYXJlX2Nhc2VfbGFiZWxzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoaW50X2NzdF9oYXNoX2hhc2gsIGludF9jc3RfaGFzaF9lcSwKCXRyZWVfbWFwX2Jhc2VfbWFya2VkX3AsIHR5cGVfaGFzaF9tYXJrZWRfcCwgdHJlZV9jaGVja19mYWlsZWQsCgl0cmVlX25vdF9jaGVja19mYWlsZWQsIHRyZWVfY2xhc3NfY2hlY2tfZmFpbGVkLAoJdHJlZV9yYW5nZV9jaGVja19mYWlsZWQsIHRyZWVfbm90X2NsYXNzX2NoZWNrX2ZhaWxlZCwKCW9tcF9jbGF1c2VfY2hlY2tfZmFpbGVkLCBvbXBfY2xhdXNlX3JhbmdlX2NoZWNrX2ZhaWxlZCwKCXRyZWVfY29udGFpbnNfc3RydWN0X2NoZWNrX2ZhaWxlZCwgdHJlZV9vcGVyYW5kX2NoZWNrX2ZhaWxlZCk6CglMaWtld2lzZS4gCgkqIHRyZWUuaCAodHJlZV9jb250YWluc19zdHJ1Y3RfY2hlY2tfZmFpbGVkLCB0cmVlX2NoZWNrX2ZhaWxlZCwKCXRyZWVfbm90X2NoZWNrX2ZhaWxlZCwgdHJlZV9jbGFzc19jaGVja19mYWlsZWQsCgl0cmVlX3JhbmdlX2NoZWNrX2ZhaWxlZCwgdHJlZV9ub3RfY2xhc3NfY2hlY2tfZmFpbGVkLAoJdHJlZV9vcGVyYW5kX2NoZWNrX2ZhaWxlZCwgb21wX2NsYXVzZV9vcGVyYW5kX2NoZWNrX2ZhaWxlZCwKCXRyZWVfb3BlcmFuZF9sZW5ndGgpOiBMaWtld2lzZS4gCgkqIHZhci10cmFja2luZy5jIChjb25zdF92YXJpYWJsZSk6IE5ldy4KCSh2YXJpYWJsZV9odGFiX2hhc2gsIHZhcmlhYmxlX2h0YWJfZXEpOiBDb25zdGlmeS4KCSogdmFyYXNtLmMgKGNvbnN0X2Rlc2NfaGFzaCk6IExpa2V3aXNlLgoKMjAwNy0wNy0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhwci5jIChoYW5kbGVkX2NvbXBvbmVudF9wKTogQ29uc3RpZnkuCgkqIGZvbGQtY29uc3QuYyAoZml0X2RvdWJsZV90eXBlKTogTGlrZXdpc2UuCgkqIHJlYWwuaCAocmVhbF92YWx1ZV9mcm9tX2ludF9jc3QpOiBMaWtld2lzZS4KCSogdHJlZS1mbG93LWlubGluZS5oIChnaW1wbGVfaW5fc3NhX3AsCglnaW1wbGVfYWxpYXNlc19jb21wdXRlZF9wLCBnaW1wbGVfYWRkcmVzc2FibGVfdmFycywKCWdpbXBsZV9jYWxsX2Nsb2JiZXJlZF92YXJzLCBnaW1wbGVfcmVmZXJlbmNlZF92YXJzLAoJZ2ltcGxlX2dsb2JhbF92YXIsIGdpbXBsZV9ub25sb2NhbF9hbGwsIGdpbXBsZV92YXJfYW5ucywKCWVuZF9odGFiX3AsIGVuZF9yZWZlcmVuY2VkX3ZhcnNfcCwgdmFyX2FubiwgZnVuY3Rpb25fYW5uLAoJbWF5X2FsaWFzZXMsIGVuZF9yZWFkb25seV9pbW1fdXNlX3AsIGhhc196ZXJvX3VzZXMsCgloYXNfc2luZ2xlX3VzZSwgc2luZ2xlX2ltbV91c2UsIG51bV9pbW1fdXNlcywgaXNfZXhlY19zdG10LAoJaXNfbGFiZWxfc3RtdCwgaXNfZ2xvYmFsX3ZhciwgcGhpX3NzYV9uYW1lX3AsCglmYWN0b3JpbmdfbmFtZV9wLCBpc19jYWxsX2Nsb2JiZXJlZCwgdHJlZV9jb21tb25fYW5uLAoJb3BfaXRlcl9kb25lLCBlbmRfaW1tX3VzZV9zdG10X3AsIGVuZF9pbW1fdXNlX29uX3N0bXRfcCwKCXVubW9kaWZpYWJsZV92YXJfcCwgYXJyYXlfcmVmX2NvbnRhaW5zX2luZGlyZWN0X3JlZiwKCXJlZl9jb250YWluc19hcnJheV9yZWYsIGxvb2t1cF9zdWJ2YXJzX2Zvcl92YXIsCgl2YXJfY2FuX2hhdmVfc3VidmFycywgb3ZlcmxhcF9zdWJ2YXIsIGdpbXBsZV9zc2Ffb3BlcmFuZHMsCglnaW1wbGVfbWVtX3JlZl9zdGF0cyk6IExpa2V3aXNlLgoJKiB0cmVlLWZsb3cuaCAodHJlZV9jb21tb25fYW5uLCB2YXJfYW5uLCBmdW5jdGlvbl9hbm4sCgltYXlfYWxpYXNlcywgaXNfZXhlY19zdG10LCBpc19sYWJlbF9zdG10LAoJcmVmX2NvbnRhaW5zX2FycmF5X3JlZiwgYXJyYXlfcmVmX2NvbnRhaW5zX2luZGlyZWN0X3JlZiwKCXZhcl9jYW5faGF2ZV9zdWJ2YXJzLCBvdmVybGFwX3N1YnZhciwgaXNfY2FsbF9jbG9iYmVyZWQsCgl1bm1vZGlmaWFibGVfdmFyX3ApOiBMaWtld2lzZS4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX21pbl9pbnZhcmlhbnQpOiBMaWtld2lzZS4KCSogdHJlZS1naW1wbGUuaCAoaXNfZ2ltcGxlX21pbl9pbnZhcmlhbnQpOiBMaWtld2lzZS4gCgkqIHRyZWUuYyAodHlwZV9oYXNoX2xpc3QsIGF0dHJpYnV0ZV9oYXNoX2xpc3QsIHRyZWVfc2l6ZSwKCWNzdF9hbmRfZml0c19pbl9od2ksIHJlYWxfdmFsdWVfZnJvbV9pbnRfY3N0LAoJYnVpbGRfcmVhbF9mcm9tX2ludF9jc3QsIGludGVnZXJfemVyb3AsIGludGVnZXJfb25lcCwKCWludGVnZXJfYWxsX29uZXNwLCBpbnRlZ2VyX3BvdzJwLCBpbnRlZ2VyX25vbnplcm9wLCB0cmVlX2xvZzIsCgl0cmVlX2Zsb29yX2xvZzIsIHJlYWxfemVyb3AsIHJlYWxfb25lcCwgcmVhbF90d29wLAoJcmVhbF9taW51c19vbmVwLCByZWFsbHlfY29uc3RhbnRfcCwgcHVycG9zZV9tZW1iZXIsIGNoYWluX21lbWJlciwKCWxpc3RfbGVuZ3RoLCBmaWVsZHNfbGVuZ3RoLCBpbnRfc2l6ZV9pbl9ieXRlcywgYml0X3Bvc2l0aW9uLAoJaW50X2JpdF9wb3NpdGlvbiwgYnl0ZV9wb3NpdGlvbiwgaW50X2J5dGVfcG9zaXRpb24sIGV4cHJfYWxpZ24sCglhcnJheV90eXBlX25lbHRzLCB0cmVlX25vZGVfc3RydWN0dXJlLAoJdHlwZV9jb250YWluc19wbGFjZWhvbGRlcl8xLCBpdGVyYXRpdmVfaGFzaF9wb2ludGVyLAoJaXNfYXR0cmlidXRlX3dpdGhfbGVuZ3RoX3AsIGlzX2F0dHJpYnV0ZV9wLCBjaGVja19xdWFsaWZpZWRfdHlwZSwKCXRyZWVfbWFwX2Jhc2VfZXEsIHR5cGVfaGFzaF9saXN0LCB0eXBlX2hhc2hfZXEsCglhdHRyaWJ1dGVfaGFzaF9saXN0LCB0eXBlX251bV9hcmd1bWVudHMsIHRyZWVfaW50X2NzdF9lcXVhbCwKCXRyZWVfaW50X2NzdF9sdCwgdHJlZV9pbnRfY3N0X2NvbXBhcmUsIGhvc3RfaW50ZWdlcnAsCgl0cmVlX2xvd19jc3QsIHRyZWVfaW50X2NzdF9tc2IsIHRyZWVfaW50X2NzdF9zZ24sCglzaW1wbGVfY3N0X2xpc3RfZXF1YWwsIGNvbXBhcmVfdHJlZV9pbnQsIGl0ZXJhdGl2ZV9oYXNoX2V4cHIsCglpbnRfZml0c190eXBlX3AsIGdldF9jb250YWluaW5nX3Njb3BlLCBkZWNsX2Z1bmN0aW9uX2NvbnRleHQsCglkZWNsX3R5cGVfY29udGV4dCwgb21wX2NsYXVzZV9vcGVyYW5kX2NoZWNrX2ZhaWxlZCwKCWluaXRpYWxpemVyX3plcm9wLCBpbnRfY3N0X3ZhbHVlLCBudW1fZW5kaW5nX3plcm9zKTogTGlrZXdpc2UuCgkqIHRyZWUuaCAob21wX2NsYXVzZV9vcGVyYW5kX2NoZWNrX2ZhaWxlZCwgdHJlZV9zaXplLAoJYnVpbGRfcmVhbF9mcm9tX2ludF9jc3QsIGFycmF5X3R5cGVfbmVsdHMsIHB1cnBvc2VfbWVtYmVyLAoJdHJlZV9pbnRfY3N0X2VxdWFsLCB0cmVlX2ludF9jc3RfbHQsIHRyZWVfaW50X2NzdF9jb21wYXJlLAoJaG9zdF9pbnRlZ2VycCwgdHJlZV9sb3dfY3N0LCB0cmVlX2ludF9jc3RfbXNiLCB0cmVlX2ludF9jc3Rfc2duLAoJaXNfYXR0cmlidXRlX3AsIGNoZWNrX3F1YWxpZmllZF90eXBlLCBleHByX2FsaWduLAoJaW50X3NpemVfaW5fYnl0ZXMsIGJpdF9wb3NpdGlvbiwgaW50X2JpdF9wb3NpdGlvbiwgYnl0ZV9wb3NpdGlvbiwKCWludF9ieXRlX3Bvc2l0aW9uLCBsaXN0X2xlbmd0aCwgZmllbGRzX2xlbmd0aCwgaW5pdGlhbGl6ZXJfemVyb3AsCglpbnRlZ2VyX3plcm9wLCBpbnRlZ2VyX29uZXAsIGludGVnZXJfYWxsX29uZXNwLCBpbnRlZ2VyX3BvdzJwLAoJaW50ZWdlcl9ub256ZXJvcCwgY3N0X2FuZF9maXRzX2luX2h3aSwgbnVtX2VuZGluZ196ZXJvcywKCXRyZWVfbm9kZV9zdHJ1Y3R1cmUsIGhhbmRsZWRfY29tcG9uZW50X3AsIGdldF9jb250YWluaW5nX3Njb3BlLAoJZGVjbF9mdW5jdGlvbl9jb250ZXh0LCBkZWNsX3R5cGVfY29udGV4dCwgcmVhbF96ZXJvcCwKCXR5cGVfbnVtX2FyZ3VtZW50cywgZml0X2RvdWJsZV90eXBlLCByZWFsbHlfY29uc3RhbnRfcCwKCWludF9maXRzX3R5cGVfcCwgdHJlZV9sb2cyLCB0cmVlX2Zsb29yX2xvZzIsIGl0ZXJhdGl2ZV9oYXNoX2V4cHIsCgljb21wYXJlX3RyZWVfaW50LCBjaGFpbl9tZW1iZXIsIHNpbXBsZV9jc3RfbGlzdF9lcXVhbCwgcmVhbF9vbmVwLAoJcmVhbF90d29wLCByZWFsX21pbnVzX29uZXAsIGludF9jc3RfdmFsdWUpOiBMaWtld2lzZS4KCjIwMDctMDctMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNmZ2xheW91dC5jIChpbnNuX3Njb3BlLCBpbnNuX2xpbmUpOiBDb25zdGlmeS4KCSogZW1pdC1ydGwuYyAoY29uc3RfaW50X2h0YWJfaGFzaCwgY29uc3RfaW50X2h0YWJfZXEsCgljb25zdF9kb3VibGVfaHRhYl9oYXNoLCBjb25zdF9kb3VibGVfaHRhYl9lcSwKCW1lbV9hdHRyc19odGFiX2hhc2gpOiBMaWtld2lzZS4KCSogbG9vcC1pdi5jIChiaXZfZXEpOiBMaWtld2lzZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCwgcHJpbnRfZGVjbF9uYW1lLCBwcmludF9tZW1fZXhwciwKCXByaW50X2lubGluZV9ydHgsIGRlYnVnX3J0eCwgZGVidWdfcnR4X2xpc3QsIGRlYnVnX3J0eF9yYW5nZSwKCWRlYnVnX3J0eF9maW5kLCBwcmludF9ydGwsIHByaW50X3J0bF9zaW5nbGUsIHByaW50X3NpbXBsZV9ydGwpOgoJTGlrZXdpc2UuIAoJKiBydGwtZXJyb3IuYyAobG9jYXRpb25fZm9yX2FzbSwgZGlhZ25vc3RpY19mb3JfYXNtLAoJZXJyb3JfZm9yX2FzbSwgd2FybmluZ19mb3JfYXNtLCBfZmF0YWxfaW5zbiwKCV9mYXRhbF9pbnNuX25vdF9mb3VuZCk6IExpa2V3aXNlLiAKCSogcnRsLmMgKHJ0eF9zaXplLCBzaGFyZWRfY29uc3RfcCwgc2hhbGxvd19jb3B5X3J0eF9zdGF0LAoJcnR4X2VxdWFsX3AsIHJ0bF9jaGVja19mYWlsZWRfYm91bmRzLCBydGxfY2hlY2tfZmFpbGVkX3R5cGUxLAoJcnRsX2NoZWNrX2ZhaWxlZF90eXBlMiwgcnRsX2NoZWNrX2ZhaWxlZF9jb2RlMSwKCXJ0bF9jaGVja19mYWlsZWRfY29kZTIsIHJ0bF9jaGVja19mYWlsZWRfY29kZV9tb2RlLAoJcnR2ZWNfY2hlY2tfZmFpbGVkX2JvdW5kcywgcnRsX2NoZWNrX2ZhaWxlZF9mbGFnKTogTGlrZXdpc2UuCgkqIHJ0bC5oIChydGxfY2hlY2tfZmFpbGVkX2JvdW5kcywgcnRsX2NoZWNrX2ZhaWxlZF90eXBlMSwKCXJ0bF9jaGVja19mYWlsZWRfdHlwZTIsIHJ0bF9jaGVja19mYWlsZWRfY29kZTEsCglydGxfY2hlY2tfZmFpbGVkX2NvZGUyLCBydGxfY2hlY2tfZmFpbGVkX2NvZGVfbW9kZSwKCXJ0dmVjX2NoZWNrX2ZhaWxlZF9ib3VuZHMsIHJ0bF9jaGVja19mYWlsZWRfZmxhZywgTEFCRUxfS0lORCwKCVNFVF9MQUJFTF9LSU5ELCByaHNfcmVnbm8sIHN1YnJlZ19sc2IsIHN1YnJlZ19yZWdubywgc3VicmVnX25yZWdzLAoJc2hhcmVkX2NvbnN0X3AsIHJ0eF9zaXplLCBzaGFsbG93X2NvcHlfcnR4X3N0YXQsIHJ0eF9lcXVhbF9wLAoJZ2V0X3Bvb2xfbW9kZSwgaW5zbl9saW5lLCBpbnNuX2ZpbGUsIHNpbXBsaWZ5X3JlcGxhY2VfcnR4LAoJbW9kZV9zaWduYml0X3AsIHJ0eF9hZGRyX2Nhbl90cmFwX3AsIG5vbnplcm9fYWRkcmVzc19wLAoJcnR4X3Vuc3RhYmxlX3AsIGdldF9pbnRlZ2VyX3Rlcm0sIGdldF9yZWxhdGVkX3ZhbHVlLAoJb2Zmc2V0X3dpdGhpbl9ibG9ja19wLCByZWdfbWVudGlvbmVkX3AsIGNvdW50X29jY3VycmVuY2VzLAoJcmVnX3JlZmVyZW5jZWRfcCwgcmVnX3VzZWRfYmV0d2Vlbl9wLCBub19sYWJlbHNfYmV0d2Vlbl9wLAoJc2luZ2xlX3NldF8yLCBtdWx0aXBsZV9zZXRzLCBzZXRfbm9vcF9wLCByZWZlcnNfdG9fcmVnbm9fcCwKCXJlZ19vdmVybGFwX21lbnRpb25lZF9wLCBkZWFkX29yX3NldF9wLCBkZWFkX29yX3NldF9yZWdub19wLAoJZmluZF9yZWdfbm90ZSwgZmluZF9yZWdub19ub3RlLCBmaW5kX3JlZ19lcXVhbF9lcXVpdl9ub3RlLAoJZmluZF9jb25zdGFudF9zcmMsIGZpbmRfcmVnX2Z1c2FnZSwgZmluZF9yZWdub19mdXNhZ2UsCglwdXJlX2NhbGxfcCwgcmVtb3ZlX25vdGUsIHNpZGVfZWZmZWN0c19wLCB2b2xhdGlsZV9yZWZzX3AsCgl2b2xhdGlsZV9pbnNuX3AsIG1heV90cmFwX3AsIG1heV90cmFwX2FmdGVyX2NvZGVfbW90aW9uX3AsCgltYXlfdHJhcF9vcl9mYXVsdF9wLCBpbmVxdWFsaXR5X2NvbXBhcmlzb25zX3AsIHRhYmxlanVtcF9wLAoJY29tcHV0ZWRfanVtcF9wLCBhdXRvX2luY19wLCBpbl9leHByX2xpc3RfcCwKCXJlbW92ZV9ub2RlX2Zyb21fZXhwcl9saXN0LCBsb2NfbWVudGlvbmVkX2luX3AsCglsYWJlbF9pc19qdW1wX3RhcmdldF9wLCByZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMsCglkZWJ1Z19ydHgsIGRlYnVnX3J0eF9saXN0LCBkZWJ1Z19ydHhfcmFuZ2UsIGRlYnVnX3J0eF9maW5kLAoJcHJpbnRfbWVtX2V4cHIsIHByaW50X3J0bCwgcHJpbnRfc2ltcGxlX3J0bCwgcHJpbnRfcnRsX3NpbmdsZSwKCXByaW50X2lubGluZV9ydHgpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChjb3ZlcnNfcmVnbm9fcCwgY292ZXJzX3JlZ25vX25vX3BhcmFsbGVsX3AsCgljb21wdXRlZF9qdW1wX3BfMSwgbm9uemVyb19iaXRzMSwgcnR4X3Vuc3RhYmxlX3AsCglydHhfYWRkcl9jYW5fdHJhcF9wXzEsIHJ0eF9hZGRyX2Nhbl90cmFwX3AsIG5vbnplcm9fYWRkcmVzc19wLAoJZ2V0X2ludGVnZXJfdGVybSwgZ2V0X3JlbGF0ZWRfdmFsdWUsIG9mZnNldF93aXRoaW5fYmxvY2tfcCwKCWNvdW50X29jY3VycmVuY2VzLCByZWdfbWVudGlvbmVkX3AsIG5vX2xhYmVsc19iZXR3ZWVuX3AsCglyZWdfdXNlZF9iZXR3ZWVuX3AsIHJlZ19yZWZlcmVuY2VkX3AsIHNpbmdsZV9zZXRfMiwKCW11bHRpcGxlX3NldHMsIHNldF9ub29wX3AsIHJlZmVyc190b19yZWdub19wLAoJcmVnX292ZXJsYXBfbWVudGlvbmVkX3AsIGRlYWRfb3Jfc2V0X3AsCgljb3ZlcnNfcmVnbm9fbm9fcGFyYWxsZWxfcCwgY292ZXJzX3JlZ25vX3AsCglkZWFkX29yX3NldF9yZWdub19wLCBmaW5kX3JlZ19ub3RlLCBmaW5kX3JlZ25vX25vdGUsCglmaW5kX3JlZ19lcXVhbF9lcXVpdl9ub3RlLCBmaW5kX2NvbnN0YW50X3NyYywgZmluZF9yZWdfZnVzYWdlLAoJZmluZF9yZWdub19mdXNhZ2UsIHB1cmVfY2FsbF9wLCByZW1vdmVfbm90ZSwgaW5fZXhwcl9saXN0X3AsCglyZW1vdmVfbm9kZV9mcm9tX2V4cHJfbGlzdCwgdm9sYXRpbGVfaW5zbl9wLCB2b2xhdGlsZV9yZWZzX3AsCglzaWRlX2VmZmVjdHNfcCwgbWF5X3RyYXBfcF8xLCBtYXlfdHJhcF9wLAoJbWF5X3RyYXBfYWZ0ZXJfY29kZV9tb3Rpb25fcCwgbWF5X3RyYXBfb3JfZmF1bHRfcCwKCWluZXF1YWxpdHlfY29tcGFyaXNvbnNfcCwgdGFibGVqdW1wX3AsIGNvbXB1dGVkX2p1bXBfcF8xLAoJY29tcHV0ZWRfanVtcF9wLCBhdXRvX2luY19wLCBsb2NfbWVudGlvbmVkX2luX3AsIHN1YnJlZ19sc2IsCglzdWJyZWdfcmVnbm8sIHN1YnJlZ19ucmVncywgbGFiZWxfaXNfanVtcF90YXJnZXRfcCk6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYyAobmVnX2NvbnN0X2ludCwgcGx1c19taW51c19vcGVyYW5kX3AsCgltb2RlX3NpZ25iaXRfcCwgc2ltcGxpZnlfcmVwbGFjZV9ydHgsIHBsdXNfbWludXNfb3BlcmFuZF9wKToKCUxpa2V3aXNlLiAKCSogdG9wbGV2LmggKF9mYXRhbF9pbnNuX25vdF9mb3VuZCwgX2ZhdGFsX2luc24sIGVycm9yX2Zvcl9hc20sCgl3YXJuaW5nX2Zvcl9hc20pOiBMaWtld2lzZS4KCSogdHJlZS5oIChwcmludF9ydGwpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGdldF9wb29sX21vZGUpOiBMaWtld2lzZS4KCjIwMDctMDctMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtbGV4LmMgKGNfbGV4X3dpdGhfZmxhZ3MsIGxleF9zdHJpbmcpOiBDb25zdGlmeS4KCSogYy1wcG91dHB1dC5jIChwcmludF9saW5lLCBwcF9kaXJfY2hhbmdlKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGZyZWVfYWxsX3RhZ2dlZF90dV9zZWVuX3VwX3RvKTogTGlrZXdpc2UuCgkqIGNmZy5jIChiYl9jb3B5X29yaWdpbmFsX2hhc2gsIGJiX2NvcHlfb3JpZ2luYWxfZXEpOiBMaWtld2lzZS4KCSogY2ZnbG9vcC5jIChsb29wX2V4aXRfaGFzaCwgbG9vcF9leGl0X2VxKTogTGlrZXdpc2UuCgkqIGRkZy5jIChjb21wYXJlX3NjY3MpOiBMaWtld2lzZS4KCSogZGYtc2Nhbi5jIChkZl9yZWZfY29tcGFyZSwgZGZfbXdfY29tcGFyZSk6IExpa2V3aXNlLgoJKiBkZnAuYyAoZGVjaW1hbF9yZWFsX2Zyb21fc3RyaW5nLCBkZWNpbWFsX3RvX2RlY251bWJlciwKCWRlY2ltYWxfdG9fYmluYXJ5LCBkZWNpbWFsX2RvX2NvbXBhcmUsIGRlY2ltYWxfcmVhbF90b19kZWNpbWFsLAoJZGVjaW1hbF9kb19maXhfdHJ1bmMsIGRlY2ltYWxfcmVhbF90b19pbnRlZ2VyLAoJZGVjaW1hbF9yZWFsX3RvX2ludGVnZXIyLCBkZWNpbWFsX3JlYWxfbWF4dmFsKTogTGlrZXdpc2UuCgkqIGRzZS5jIChjb25zdF9ncm91cF9pbmZvX3QpOiBOZXcuCgkoaW52YXJpYW50X2dyb3VwX2Jhc2VfZXEsIGludmFyaWFudF9ncm91cF9iYXNlX2hhc2gpOiBDb25zdGlmeS4KCSogZHdhcmYyb3V0LmMgKGNvbnN0X2R3X2RpZV9yZWYpOiBOZXcuCgkoZGVjbF9kaWVfdGFibGVfaGFzaCwgZGVjbF9kaWVfdGFibGVfZXEsIGZpbGVfaW5mb19jbXApOiBDb25zdGlmeS4KCSogdHJlZS1icm93c2VyLmMgKFRCX3BhcmVudF9lcSk6IExpa2V3aXNlLgoJKiB1bndpbmQtZHcyLWZkZS5jIChfX3JlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMsCglfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mb19iYXNlcywgZmRlX3VuZW5jb2RlZF9jb21wYXJlLCBmZGVfc3BsaXQsCglhZGRfZmRlcywgbGluZWFyX3NlYXJjaF9mZGVzLCBiaW5hcnlfc2VhcmNoX3VuZW5jb2RlZF9mZGVzKToKCUxpa2V3aXNlLgoJKiB1bndpbmQtZHcyLWZkZS5oIChnZXRfY2llLCBuZXh0X2ZkZSk6IExpa2V3aXNlLgoJKiB1bndpbmQtZHcyLmMgKHV3X2ZyYW1lX3N0YXRlX2Zvcik6IExpa2V3aXNlLgoJKiB2YWx1ZS1wcm9mLmMgKGhpc3RvZ3JhbV9oYXNoLCBoaXN0b2dyYW1fZXEpOiBMaWtld2lzZS4KCSogdmFsdWUtcHJvZi5oIChjb25zdF9oaXN0b2dyYW1fdmFsdWUpOiBOZXcuCgoyMDA3LTA3LTI1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWFjaGluZV9mdW5jdGlvbik6IEFkZAoJaW5pdGlhbGl6ZWRfbWlwczE2X2dwX3BzZXVkb19wLgoJKG1pcHMxNl9ncF9wc2V1ZG9fcmVnKTogRG8gbm90IGVtaXQgdGhlIGluaXRpYWxpemF0aW9uIG9mCgltaXBzMTZfZ3BfcHNldWRvX3J0eCB3aGVuIGJlaW5nIGNhbGxlZCBmcm9tIHRoZSBnaW1wbGUgY29zdC0KCWNhbGN1bGF0aW9uIHJvdXRpbmVzOyBlbWl0IGl0IG9uIHRoZSBmaXJzdCB1c2Ugb3V0c2lkZSB0aG9zZQoJcm91dGluZXMuCgoyMDA3LTA3LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb3JldHlwZXMuaCAoY29uc3RfYml0bWFwLCBjb25zdF9ydHgsIGNvbnN0X3J0dmVjLCBjb25zdF90cmVlKToKCU5ldy4KCQoJKiBydGwuaCAoUlRMX0NIRUNLMSwgUlRMX0NIRUNLMiwgUlRMX0NIRUNLQzEsIFJUTF9DSEVDS0MyLAoJUlRWRUNfRUxULCBYV0lOVCwgWENXSU5ULCBYQ01XSU5ULCBYQ05NUFJWLCBCTE9DS19TWU1CT0xfQ0hFQ0ssCglSVExfRkxBR19DSEVDSzEsIFJUTF9GTEFHX0NIRUNLMiwgUlRMX0ZMQUdfQ0hFQ0szLAoJUlRMX0ZMQUdfQ0hFQ0s0LCBSVExfRkxBR19DSEVDSzUsIFJUTF9GTEFHX0NIRUNLNiwKCVJUTF9GTEFHX0NIRUNLNywgUlRMX0ZMQUdfQ0hFQ0s4LCBMQUJFTF9LSU5ELCBTRVRfTEFCRUxfS0lORCk6CglQcmVzZXJ2ZSBjb25zdC1uZXNzIG9mIHBhcmFtZXRlcnMgdGhyb3VnaCB1c2Ugb2YgX190eXBlb2YoKSwKCWFsc28gY29uc3RpZnkgYW5kIHRpZHkuCgkKCSogdHJlZS5oIChUUkVFX0NIRUNLLCBUUkVFX05PVF9DSEVDSywgVFJFRV9DSEVDSzIsCglUUkVFX05PVF9DSEVDSzIsIFRSRUVfQ0hFQ0szLCBUUkVFX05PVF9DSEVDSzMsIFRSRUVfQ0hFQ0s0LAoJTk9OX1RSRUVfQ0hFQ0s0LCBUUkVFX0NIRUNLNSwgVFJFRV9OT1RfQ0hFQ0s1LAoJQ09OVEFJTlNfU1RSVUNUX0NIRUNLLCBUUkVFX0NMQVNTX0NIRUNLLCBUUkVFX1JBTkdFX0NIRUNLLAoJT01QX0NMQVVTRV9TVUJDT0RFX0NIRUNLLCBPTVBfQ0xBVVNFX1JBTkdFX0NIRUNLLCBFWFBSX0NIRUNLLAoJR0lNUExFX1NUTVRfQ0hFQ0ssIE5PTl9UWVBFX0NIRUNLLCBUUkVFX1ZFQ19FTFRfQ0hFQ0ssCglQSElfTk9ERV9FTFRfQ0hFQ0ssIE9NUF9DTEFVU0VfRUxUX0NIRUNLLCBUUkVFX09QRVJBTkRfQ0hFQ0ssCglUUkVFX09QRVJBTkRfQ0hFQ0tfQ09ERSwgR0lNUExFX1NUTVRfT1BFUkFORF9DSEVDSywKCVRSRUVfUlRMX09QRVJBTkRfQ0hFQ0ssIFRSRUVfQ0hBSU4sIFRSRUVfVFlQRSk6IExpa2V3aXNlLgoKMjAwNy0wNy0yNSAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfbWFuZ2xlX2Z1bmRhbWVudGFsX3R5cGUpOiBSZW5hbWUgdG8uLi4KCShhbHBoYV9tYW5nbGVfdHlwZSk6IFRoaXMuCgkoVEFSR0VUX01BTkdMRV9GVU5EQU1FTlRBTF9UWVBFKTogRG9uJ3QgZGVmaW5lLgoJKFRBUkdFVF9NQU5HTEVfVFlQRSk6IERlZmluZSB0aGlzIGluc3RlYWQuCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fbWFuZ2xlX3R5cGUpOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvYXJtL2FybS5jIChUQVJHRVRfTUFOR0xFX1RZUEUpOiBEZWZpbmUgdGFyZ2V0IGhvb2suCgkoYXJtX2luaXRfbmVvbl9idWlsdGlucyk6IEZpeCBjb21tZW50LgoJKGFybV9tYW5nbGVfbWFwX2VudHJ5KTogTmV3LgoJKGFybV9tYW5nbGVfbWFwKTogTmV3LgoJKGFybV9tYW5nbGVfdHlwZSk6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X21hbmdsZV9mdW5kYW1lbnRhbF90eXBlKTogUmVuYW1lIHRvLi4uCgkoaXg4Nl9tYW5nbGVfdHlwZSk6IFRoaXMuIFVzZSBUWVBFX01BSU5fVkFSSUFOVCBhbmQgcmVzdHJpY3QKCW1hbmdsZWQgdHlwZXMgdG8gVk9JRF9UWVBFLCBCT09MRUFOX1RZUEUsIElOVEVHRVJfVFlQRSwgUkVBTF9UWVBFLgoJKFRBUkdFVF9NQU5HTEVfRlVOREFNRU5UQUxfVFlQRSk6IERvbid0IGRlZmluZS4KCShUQVJHRVRfTUFOR0xFX1RZUEUpOiBEZWZpbmUgdGhpcyBpbnN0ZWFkLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfbWFuZ2xlX2Z1bmRhbWVudGFsX3R5cGUpOiBSZW5hbWUgdG8uLi4KCShpYTY0X21hbmdsZV90eXBlKTogVGhpcy4gVXNlIFRZUEVfTUFJTl9WQVJJQU5UICBhbmQgcmVzdHJpY3QKCW1hbmdsZWQgdHlwZXMgdG8gVk9JRF9UWVBFLCBCT09MRUFOX1RZUEUsIElOVEVHRVJfVFlQRSwgUkVBTF9UWVBFLgoJKFRBUkdFVF9NQU5HTEVfRlVOREFNRU5UQUxfVFlQRSk6IERvbid0IGRlZmluZS4KCShUQVJHRVRfTUFOR0xFX1RZUEUpOiBEZWZpbmUgdGhpcyBpbnN0ZWFkLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbWFuZ2xlX2Z1bmRhbWVudGFsX3R5cGUpOiBSZW5hbWUKCXRvLi4uCgkocnM2MDAwX21hbmdsZV90eXBlKTogVGhpcy4gVXNlIFRZUEVfTUFJTl9WQVJJQU5ULgoJKFRBUkdFVF9NQU5HTEVfRlVOREFNRU5UQUxfVFlQRSk6IERvbid0IGRlZmluZS4KCShUQVJHRVRfTUFOR0xFX1RZUEUpOiBEZWZpbmUgdGhpcyBpbnN0ZWFkLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfbWFuZ2xlX2Z1bmRhbWVudGFsX3R5cGUpOiBSZW5hbWUgdG8uLi4KCShzMzkwX21hbmdsZV90eXBlKTogVGhpcy4KCShUQVJHRVRfTUFOR0xFX0ZVTkRBTUVOVEFMX1RZUEUpOiBEb24ndCBkZWZpbmUuCgkoVEFSR0VUX01BTkdMRV9UWVBFKTogRGVmaW5lIHRoaXMgaW5zdGVhZC4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX21hbmdsZV9mdW5kYW1lbnRhbF90eXBlKTogUmVuYW1lIHRvLi4uCgkoc3BhcmNfbWFuZ2xlX3R5cGUpOiBUaGlzLgoJKFRBUkdFVF9NQU5HTEVfRlVOREFNRU5UQUxfVFlQRSk6IERvbid0IGRlZmluZS4KCShUQVJHRVRfTUFOR0xFX1RZUEUpOiBEZWZpbmUgdGhpcyBpbnN0ZWFkLgoJKiBjcC9tYW5nbGUuYyAod3JpdGVfdHlwZSk6IENhbGwgbWFuZ2xlX3R5cGUgdGFyZ2V0IGhvb2sgb24gYWxsCgl0eXBlcyBiZWZvcmUgbWFuZ2xpbmcuICBVc2Ugb3JpZ2luYWwgdHlwZSwgbm90IG1haW4gdmFyaWFudCwgYXMKCWFyZ3VtZW50LgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9NQU5HTEVfRlVOREFNRU5UQUxfVFlQRSk6IFJlbmFtZSBob29rIHRvLi4uCgkoVEFSR0VUX01BTkdMRV9UWVBFKTogVGhpcy4KCSogdGFyZ2V0LmggKGdjY190YXJnZXQpOiBSZW5hbWUgbWFuZ2xlX2Z1bmRhbWVudGFsX3R5cGUgdG8KCW1hbmdsZV90eXBlLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX01BTkdMRV9GVU5EQU1FTlRBTF9UWVBFKTogUmVuYW1lIHNlY3Rpb24gdG8uLi4KCShUQVJHRVRfTUFOR0xFX1RZUEUpOiBUaGlzLiBOb3RlIHNsaWdodGx5IGRpZmZlcmVudCBzZW1hbnRpY3MuCgoyMDA3LTA3LTI1ICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoJICAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoJICAgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKFRFWElfR0NDX0ZJTEVTKTogQWRkIGFybS1uZW9uLWludHJpbnNpY3MudGV4aS4KCSogY29uZmlnLmdjYyAoYXJtKi0qLSopOiBBZGQgYXJtX25lb24uaCB0byBleHRyYSBoZWFkZXJzLgoJKHdpdGhfZnB1KTogQWxsb3cgLS13aXRoLWZwdT1uZW9uLgoJKiBjb25maWcvYXJtL2FvZi5oIChBRERJVElPTkFMX1JFR0lTVEVSX05BTUVTKTogQWRkIFEwLVExNS4KCSogY29uZmlnL2FybS9hb3V0LmggKEFERElUSU9OQUxfUkVHSVNURVJfTkFNRVMpOiBBZGQgUTAtUTE1LgoJKiBjb25maWcvYXJtL2FybS1tb2Rlcy5kZWYgKEVJLCBPSSwgQ0ksIFhJKTogTmV3IG1vZGVzLgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAobmVvbl9pbW1lZGlhdGVfdmFsaWRfZm9yX21vdmUpCgkobmVvbl9pbW1lZGlhdGVfdmFsaWRfZm9yX2xvZ2ljLCBuZW9uX291dHB1dF9sb2dpY19pbW1lZGlhdGUpCgkobmVvbl9wYWlyd2lzZV9yZWR1Y2UsIG5lb25fZXhwYW5kX3ZlY3Rvcl9pbml0LCBuZW9uX3JlaW50ZXJwcmV0KQoJKG5lb25fZW1pdF9wYWlyX3Jlc3VsdF9pbnNuLCBuZW9uX2Rpc2FtYmlndWF0ZV9jb3B5KQoJKG5lb25fdmVjdG9yX21lbV9vcGVyYW5kLCBuZW9uX3N0cnVjdF9tZW1fb3BlcmFuZCwgb3V0cHV0X21vdmVfcXVhZCkKCShvdXRwdXRfbW92ZV9uZW9uKTogQWRkIHByb3RvdHlwZXMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKEZMX05FT04pOiBOZXcgZmxhZyBmb3IgTkVPTiBwcm9jZXNzb3IgY2FwYWJpbGl0eS4KCShhbGxfZnB1cyk6IEFkZCBGUFVUWVBFX05FT04uCgkoZnBfbW9kZWxfZm9yX2ZwdSk6IEFkZCBORU9OIGZpZWxkLgoJKGFybV9yZXR1cm5faW5fbWVtb3J5KTogUmV0dXJuIHZlY3RvcnMgPD0gMTYgYnl0ZXMgaW4gQVJNIHJlZ2lzdGVycy4KCShhcm1fYXJnX3BhcnRpYWxfYnl0ZXMpOiBBbGxvdyBORU9OIHZlY3RvcnMgdG8gYmUgcGFzc2VkIHBhcnRpYWxseQoJaW4gcmVnaXN0ZXJzLgoJKGFybV9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IERvbid0IHN1cHBvcnQgZmFuY3kgYWRkcmVzc2luZyBmb3IgTkVPTgoJc3RydWN0dXJlIG1vdmVzLgoJKHRodW1iMl9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKG5lb25fdmFsaWRfaW1tZWRpYXRlKTogUmVjb2duaXplIGFuZCBwcmVwYXJlIGNvbnN0YW50cyBzdWl0YWJsZSBmb3IKCU5FT04gaW5zdHJ1Y3Rpb25zLgoJKG5lb25faW1tZWRpYXRlX3ZhbGlkX2Zvcl9tb3ZlKTogTmV3IGZ1bmN0aW9uLiBSZWNvZ25pemUgYW5kIHByZXBhcmUKCWltbWVkaWF0ZXMgZm9yIE5FT04gbW92ZSBpbnN0cnVjdGlvbnMuCgkobmVvbl9pbW1lZGlhdGVfdmFsaWRfZm9yX2xvZ2ljKTogTmV3IGZ1bmN0aW9uLiBSZWNvZ25pemUgYW5kCglwcmVwYXJlIGltbWVkaWF0ZXMgZm9yIE5FT04gbG9naWMgaW5zdHJ1Y3Rpb25zLgoJKG5lb25fb3V0cHV0X2xvZ2ljX2ltbWVkaWF0ZSk6IE5ldyBmdW5jdGlvbi4gQ3JlYXRlIGFzbSBzdHJpbmcKCXN1aXRhYmxlIGZvciBvdXRwdXR0aW5nIGltbWVkaWF0ZSBsb2dpYyBpbnN0cnVjdGlvbnMuCgkobmVvbl9wYWlyd2lzZV9yZWR1Y2UpOiBOZXcgZnVuY3Rpb24uIEltcGxlbWVudCByZWR1Y3Rpb24gdXNpbmcKCXBhaXJ3aXNlIG9wZXJhdGlvbnMuCgkobmVvbl9leHBhbmRfdmVjdG9yX2luaXQpOiBOZXcgZnVuY3Rpb24uIEV4cGFuZCBhIChwb3NzaWJseQoJbm9uLWNvbnN0YW50KSB2ZWN0b3IgaW5pdGlhbGl6YXRpb24uCgkobmVvbl92ZWN0b3JfbWVtX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uIE1lbW9yeSBvcGVyYW5kcyBzdXBwb3J0ZWQKCWZvciBxdWFkLXdvcmQgbG9hZHMvc3RvcmVzIHRvL2Zyb20gQVJNIG9yIE5FT04gcmVnaXN0ZXJzLiBEb24ndAoJYWxsb3cgYmFzZStvZmZzZXQgYWRkcmVzc2luZyBmb3IgY29yZSByZWdzLgoJKG5lb25fc3RydWN0X21lbV9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLiBWYWxpZCBtZW1zIGZvciBORU9OCglzdHJ1Y3R1cmUgbW92ZXMuCgkoY29wcm9jX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBFbmFibGUgTkVPTiByZWdpc3RlcnMgdG8gYmUgbG9hZGVkCglmcm9tIG5lb25fdmVjdG9yX21lbV9vcGVyYW5kIGFkZHJlc3NlcyB3aXRob3V0IGEgc2Vjb25kYXJ5IHJlZ2lzdGVyLgoJKGFkZF9taW5pcG9vbF9mb3J3YXJkX3JlZik6IEhhbmRsZSA+OC1ieXRlIG1pbmlwb29sIGVudHJpZXMuCgkoYWRkX21pbmlwb29sX2JhY2t3YXJkX3JlZik6IExpa2V3aXNlLgoJKGR1bXBfbWluaXBvb2wpOiBMaWtld2lzZS4KCShwdXNoX21pbmlwb29sX2ZpeCk6IExpa2V3aXNlLgoJKG91dHB1dF9tb3ZlX3F1YWQpOiBOZXcgZnVuY3Rpb24uIE91dHB1dCBxdWFkLXdvcmQgbW92ZXMsIGxvYWRzIGFuZAoJc3RvcmVzIHVzaW5nIEFSTSByZWdpc3RlcnMuCgkob3V0cHV0X21vdmVfdmZwKTogQWRkIHN1cHBvcnQgZm9yIHZlY3RvcnMgaW4gVkZQIChORU9OKSBECglyZWdpc3RlcnMuCgkob3V0cHV0X21vdmVfbmVvbik6IE91dHB1dCBhIE5FT04gbG9hZC9zdG9yZSB0by9mcm9tIGEgcXVhZHdvcmQKCXJlZ2lzdGVyLgoJKGFybV9wcmludF9vcGVyYW5kKTogSW1wbGVtZW50IG5ldyBjb2RlczoKCS0gJ2MnIGZvciB1bmFkb3JuZWQgaW50ZWdlcnMgKHdpdGhvdXQgYSAjIHNpZ24pLgoJLSAnSicsICdLJyBmb3IgcmVnKzIvcmVnKzMsIHJlZyszL3JlZysyIGluIGxpdHRsZS9iaWctZW5kaWFuCgltb2RlLgoJLSAnZScsICdmJyBmb3IgdGhlIGxvdyBhbmQgaGlnaCBEIHBhcnRzIG9mIGEgTkVPTiBRIHJlZ2lzdGVyLgoJLSAncScgb3V0cHV0cyBhIE5FT04gUSByZWdpc3Rlci4KCS0gJ2gnIG91dHB1dHMgcmFuZ2VzIG9mIEQgcmVnaXN0ZXJzIGZvciBWTERNL1ZTVE0gZXRjLgoJLSAnVCcgcHJpbnRzIE5FT04gb3Bjb2RlIGZlYXR1cmVzIGZyb20gYSBjb2RlZCBiaXRtYXNrLgoJLSAnRicgaXMgc2ltaWxhciB0byBULCBidXQgc2lnbmVkL3Vuc2lnbmVkIGNvZGVzIGJvdGggcHJpbnQgYXMKCSdpJy4KCS0gJ3QnIGlzIHNpbWlsYXIgdG8gVCwgYnV0ICd1JyBpcyBwcmludGVkIGluc3RlYWQgb2YgJ3AnLgoJLSAnTycgcHJpbnRzICdyJyBpZiBORU9OIGluc3RydWN0aW9uIHNob3VsZCBwZXJmb3JtIHJvdW5kaW5nIChhcwoJc3BlY2lmaWVkIGJ5IGJpdG1hc2spLCBlbHNlIHByaW50cyBub3RoaW5nLgoJLSAnIycgaXMgYSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXIgdG8gc3RvcCBvcGVyYW5kIG51bWJlcnMgZnJvbQoJcnVubmluZyB0b2dldGhlciB3aXRoIGZvbGxvd2luZyBkaWdpdHMgaW4gdGhlIGFzc2VtYmxlcgoJc3RyaW5ncyBmb3IgaW5zdHJ1Y3Rpb25zICh3aGVuIHVzaW5nIG1vZGUgYXR0cmlidXRlcykuCgkoYXJtX2Fzc2VtYmxlX2ludGVnZXIpOiBIYW5kbGUgZXh0cmEgTkVPTiB2ZWN0b3IgbW9kZXMuIFBlcm11dGUKCWNvbnN0YW50IHZlY3RvcnMgaW4gYmlnLWVuZGlhbiBtb2RlLCB3aGVyZSBuZWNlc3NhcnkuCgkoYXJtX2hhcmRfcmVnbm9fbW9kZV9vayk6IEFsbG93IHZlY3RvcnMgaW4gVkZQL05FT04gcmVnaXN0ZXJzLgoJSGFuZGxlIEVJLCBPSSwgQ0ksIFhJIG1vZGVzLgoJKGFzaGx2NGhpMywgYXNobHYyc2kzLCBsc2hydjRoaTMsIGxzaHJ2MnNpMywgYXNocnY0aGkzKQoJKGFzaHJ2MnNpMyk6IFJlbmFtZSBJV01NWFQyX0JVSUxUSU5zIHRvLi4uCgkoYXNobHY0aGkzX2l3bW14dCwgYXNobHYyc2kzX2l3bW14dCwgbHNocnY0aGkzX2l3bW14dCkKCShsc2hydjJzaTNfaXdtbXh0LCBhc2hydjRoaTNfaXdtbXh0LCBhc2hydjJzaTNfaXdtbXh0KTogTmV3IG5hbWVzLgoJKG5lb25fYnVpbHRpbl90eXBlX2JpdHMpOiBBZGQgZW51bWVyYXRpb24sIG9uZSBiaXQgZm9yIGVhY2ggdmVjdG9yCgl0eXBlLgoJKHY4cWlfVVAsIHY0aGlfVVAsIHYyc2lfVVAsIHYyc2ZfVVAsIGRpX1VQLCB2MTZxaV9VUCwgdjhoaV9VUCkKCSh2NHNpX1VQLCB2NHNmX1VQLCB2MmRpX1VQLCB0aV9VUCwgZWlfVVAsIG9pX1VQLCBVUCk6IERlZmluZSBtYWNyb3MKCXRvIHR1cm4gdjhxaSwgZXRjLiBpbnRvIGJpdHMgZGVmaW5lZCBhYm92ZS4KCShuZW9uX2l0eXBlKTogTmV3IGVudW1lcmF0aW9uLiBDbGFzc2lmaWNhdGlvbnMgb2YgTkVPTiBidWlsdGlucy4KCShuZW9uX2J1aWx0aW5fZGF0dW0pOiBEZWZpbmUgc3RydWN0LiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dAoJYSBzaW5nbGUgYnVpbHRpbiAod2l0aCBtdWx0aXBsZSBtb2RlcykuCgkoQ0YpOiBEZWZpbmUgaGVscGVyIG1hY3JvIGZvci4uLgoJKFZBUjEuLi5WQVIxMCk6IERlZmluZSBidWlsdGlucyB3aXRoIGEgdHlwZSwgbmFtZSBhbmQgMS0xMCBkaWZmZXJlbnQKCW1vZGVzLgoJKG5lb25fYnVpbHRpbl9kYXRhKTogTmV3IGFycmF5LiBEZWZpbmUgaW5mb3JtYXRpb24gYWJvdXQgYnVpbHRpbnMKCWZvciB1c2UgZHVyaW5nIGluaXRpYWxpemF0aW9uL2V4cGFuc2lvbi4KCShhcm1faW5pdF9uZW9uX2J1aWx0aW5zKTogTmV3IGZ1bmN0aW9uLgoJKGFybV9pbml0X2J1aWx0aW5zKTogQ2FsbCBhcm1faW5pdF9uZW9uX2J1aWx0aW5zIGlmIFRBUkdFVF9ORU9OIGlzCgl0cnVlLgoJKG5lb25fYnVpbHRpbl9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLgoJKGxvY2F0ZV9uZW9uX2J1aWx0aW5faWNvZGUpOiBOZXcgZnVuY3Rpb24uIEZpbmQgYW4gaW5zbiBjb2RlIGZvciBhCglidWlsdGluIGdpdmVuIGEgZnVuY3Rpb24gY29kZSBmb3IgdGhhdCBidWlsdGluLiBBbHNvIHJldHVybiB0eXBlIG9mCglidWlsdGluIChORU9OX0JJTk9QLCBORU9OX1VOT1AgZXRjLikuCgkoYnVpbHRpbl9hcmcpOiBOZXcgZW51bWVyYXRpb24uIFR5cGVzIG9mIGFyZ3VtZW50cyBmb3IgYnVpbHRpbnMuCgkoYXJtX2V4cGFuZF9uZW9uX2FyZ3MpOiBOZXcgZnVuY3Rpb24uIEV4cGFuZCBhIGdlbmVyaWMgTkVPTiBidWlsdGluLgoJVGFrZXMgYSB2YXJpYWJsZSBhcmd1bWVudCBsaXN0IG9mIGJ1aWx0aW5fYXJnIHR5cGVzLCB0ZXJtaW5hdGVkIGJ5CglORU9OX0FSR19TVE9QLgoJKGFybV9leHBhbmRfbmVvbl9idWlsdGluKTogTmV3IGZ1bmN0aW9uLiBFeHBhbmQgYSBORU9OIGJ1aWx0aW4uCgkobmVvbl9yZWludGVycHJldCk6IE5ldyBmdW5jdGlvbi4gRXhwYW5kIE5FT04gcmVpbnRlcnByZXQgaW50cmluc2ljLgoJKG5lb25fZW1pdF9wYWlyX3Jlc3VsdF9pbnNuKTogTmV3IGZ1bmN0aW9uLiBTdXBwb3J0IHJldHVybmluZyBwYWlycwoJb2YgdmVjdG9ycyB2aWEgYSBwb2ludGVyLgoJKG5lb25fZGlzYW1iaWd1YXRlX2NvcHkpOiBOZXcgZnVuY3Rpb24uIFNldCB1cCBvcGVyYW5kcyBmb3IgYQoJbXVsdGktd29yZCBjb3B5IHN1Y2ggdGhhdCByZWdpc3RlcnMgZG8gbm90IGdldCBjbG9iYmVyZWQuCgkoYXJtX2V4cGFuZF9idWlsdGluKTogQ2FsbCBhcm1fZXhwYW5kX25lb25fYnVpbHRpbiBpZiBmY29kZSA+PQoJQVJNX0JVSUxUSU5fTkVPTl9CQVNFLgoJKGFybV9maWxlX3N0YXJ0KTogU2V0IGZsb2F0LWFiaSBhdHRyaWJ1dGUgZm9yIE5FT04uCgkoYXJtX3ZlY3Rvcl9tb2RlX3N1cHBvcnRlZF9wKTogRW5hYmxlIE5FT04gdmVjdG9yIG1vZGVzLgoJKGFybV9tYW5nbGVfbWFwX2VudHJ5KTogTmV3LgoJKGFybV9tYW5nbGVfbWFwKTogTmV3LgoJKGFybV9tYW5nbGVfdmVjdG9yX3R5cGUpOiBOZXcuCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fQVJNX05FT05fXwoJd2hlbiBhcHByb3ByaWF0ZS4KCShUQVJHRVRfTkVPTik6IE5ldyBtYWNyby4gVGFyZ2V0IHN1cHBvcnRzIE5FT04uCgkoZnB1dHlwZSk6IEFkZCBGUFVUWVBFX05FT04uCgkoVU5JVFNfUEVSX1NJTURfV09SRCk6IERlZmluZS4gQWxsb3cgcXVhZC13b3JkIHJlZ2lzdGVycyB0byBiZSB1c2VkCglmb3IgdmVjdG9yaXphdGlvbiBiYXNlZCBvbiBjb21tYW5kLWxpbmUgYXJnLgoJKE5FT05fUkVHTk9fT0tfRk9SX05SRUdTKTogRGVmaW5lLgoJKFZBTElEX05FT05fRFJFR19NT0RFLCBWQUxJRF9ORU9OX1FSRUdfTU9ERSkKCShWQUxJRF9ORU9OX1NUUlVDVF9NT0RFKTogRGVmaW5lLgoJKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6ICcjJyBpcyB2YWxpZCBwdW5jdHVhdGlvbi4KCShhcm1fYnVpbHRpbnMpOiBBZGQgQVJNX0JVSUxUSU5fTkVPTl9CQVNFLgoJKiBjb25maWcvYXJtL2FybS5tZCAoVlVOU1BFQ19QT09MXzE2KTogSW5zZXJ0IGNvbnN0YW50IGZvciB1bnNwZWMuCgkoY29uc3R0YWJsZV8xNik6IEFkZCBwYXR0ZXJuIGZvciBvdXRwdXR0aW5nIDE2LWJ5dGUgbWluaXBvb2wKCWVudHJpZXMuCgkobW92djJzaSwgbW92djRoaSwgbW92djhxaSk6IFJlbW92ZSBibGFuayBleHBhbmRlcnMgKHJlZGVmaW5lZCBpbgoJdmVjLWNvbW1vbi5tZCkuCgkodmVjLWNvbW1vbi5tZCwgbmVvbi5tZCk6IEluY2x1ZGUgbWQgZmlsZXMuCgkqIGNvbmZpZy9hcm0vYXJtLm9wdCAobXZlY3Rvcml6ZS13aXRoLW5lb24tcXVhZCk6IEFkZCBvcHRpb24uCgkqIGNvbmZpZy9hcm0vY29uc3RyYWludHMubWQgKGNvbnN0cmFpbnQgIkRuIiwgIkRsIiwgIkRMIik6IERlZmluZS4KCShtZW1vcnlfY29uc3RyYWludCAiVXQiLCAiVW4iLCAiVXMiKTogRGVmaW5lLgoJKiBjb25maWcvYXJtL2l3bW14dC5tZCAoVk1NWCwgVlNIRlQpOiBOZXcgbW9kZSBtYWNyb3MuCgkoTU1YX2NoYXIpOiBOZXcgbW9kZSBhdHRyaWJ1dGUuCgkoYWRkdjhxaTMsIGFkZHY0aGkzLCBhZGR2MnNpMyk6IFJlbW92ZS4gUmVwbGFjZSB3aXRoLi4uCgkoKmFkZDxtb2RlPjNfaXdtbXh0KTogTmV3IGluc24gcGF0dGVybi4KCShzdWJ2OHFpMywgc3VidjRoaTMsIHN1YnYyc2kzKTogUmVtb3ZlLiBSZXBsYWNlIHdpdGguLi4KCSgqc3ViPG1vZGU+M19pd21teHQpOiBOZXcgaW5zbiBwYXR0ZXJuLgoJKG11bHY0aGkzKTogUmVuYW1lIHRvLi4uCgkoKm11bHY0aGkzX2l3bW14dCk6IFRoaXMuCgkoc21heHY4cWkzLCBzbWF4djRoaTMsIHNtYXh2MnNpMywgdW1heHY4cWkzLCB1bWF4djRoaTMpCgkodW1heHYyc2kzLCBzbWludjhxaTMsIHNtaW52NGhpMywgc21pbnYyc2kzLCB1bWludjhxaTMpCgkodW1pbnY0aGkzLCB1bWludjJzaTMpOiBSZW1vdmUuIFJlcGxhY2Ugd2l0aC4uLgoJKCpzbWF4PG1vZGU+M19pd21teHQsICp1bWF4PG1vZGU+M19pd21teHQsICpzbWluPG1vZGU+M19pd21teHQpCgkoKnVtaW48bW9kZT4zX2l3bW14dCk6IFRoZXNlLgoJKGFzaHJ2NGhpMywgYXNocnYyc2kzLCBhc2hyZGkzX2l3bW14dCk6IFJlcGxhY2Ugd2l0aC4uLgoJKGFzaHI8bW9kZT4zX2l3bW14dCk6IFRoaXMgbmV3IHBhdHRlcm4uCgkobHNocnY0aGkzLCBsc2hydjJzaTMsIGxzaHJkaTNfaXdtbXh0KTogUmVwbGFjZSB3aXRoLi4uCgkobHNocjxtb2RlPjNfaXdtbXh0KTogVGhpcyBuZXcgcGF0dGVybi4KCShhc2hsdjRoaTMsIGFzaGx2MnNpMywgYXNobGRpM19pd21teHQpOiBSZXBsYWNlIHdpdGguLi4KCShhc2hsPG1vZGU+M19pd21teHQpOiBUaGlzIG5ldyBwYXR0ZXJuLgoJKiBjb25maWcvYXJtL25lb24tZG9jZ2VuLm1sOiBOZXcgZmlsZS4gR2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3IKCWludHJpbnNpY3MuCgkqIGNvbmZpZy9hcm0vbmVvbi1nZW4ubWw6IE5ldyBmaWxlLiBHZW5lcmF0ZSBhcm1fbmVvbi5oIGhlYWRlci4KCSogY29uZmlnL2FybS9hcm1fbmVvbi5oOiBOZXcgKGF1dG9nZW5lcmF0ZWQpLgoJKiBjb25maWcvYXJtL25lb24tdGVzdGdlbi5tbDogTmV3IGZpbGUuIEdlbmVyYXRlIE5FT04gdGVzdHMKCWF1dG9tYXRpY2FsbHkuCgkqIGNvbmZpZy9hcm0vbmVvbi5tZDogTmV3IGZpbGUuIERlZmluZSBORU9OIGluc3RydWN0aW9ucy4KCSogY29uZmlnL2FybS9uZW9uLm1sOiBOZXcgZmlsZS4gQWJzdHJhY3QgZGVzY3JpcHRpb24gb2YgTkVPTgoJaW5zdHJ1Y3Rpb25zLCB1c2VkIHRvIGdlbmVyYXRlIGFybV9uZW9uLmggaGVhZGVyLCBkb2N1bWVudGF0aW9uIGFuZAoJdGVzdHMuCgkqIGNvbmZpZy9hcm0vdC1hcm0gKE1EX0lOQ0xVREVTKTogQWRkIHZlYy1jb21tb24ubWQsIG5lb24ubWQuCgkqIHZlYy1jb21tb24ubWQ6IE5ldyBmaWxlLiBTaGFyZWQgcGFydHMgZm9yIGlXTU1YdCBhbmQgTkVPTiB2ZWN0b3IKCXN1cHBvcnQuCgkqIGRvYy9leHRlbmQudGV4aSAoQVJNIEJ1aWx0LWluIEZ1bmN0aW9ucyk6IFJlbmFtZSBhbmQgcmVtb3ZlCglleHRyYW5lb3VzIGNvbW1hLgoJKEFSTSBORU9OIEludHJpbnNpY3MpOiBOZXcgc3Vic2VjdGlvbi4KCSogZG9jL2FybS1uZW9uLWludHJpbnNpY3MudGV4aTogTmV3IChhdXRvZ2VuZXJhdGVkKS4KCjIwMDctMDctMjUgIERhbm55IFNtaXRoICAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaTM4Nl9wZV9hc21fZmlsZV9lbmQpOiBSZW1vdmUKCXByb3RvdHlwZS4KCjIwMDctMDctMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZ2NsYXNzLmMgKG1vdmVfdGFibGUpOiBOZXcgdHlwZS4KCShtb3ZlX2Nvc3QsIG1heV9tb3ZlX2luX2Nvc3QsIG1heV9tb3ZlX291dF9jb3N0KTogVXNlIGl0LgoJKGluaXRfbW92ZV9jb3N0KTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaW5pdF9yZWdfc2V0c18xKTogLi4uIGhlcmU7IHNpbXBsaWZ5IGNvbXB1dGF0aW9uIG9mCgloYXZlX3JlZ3Mtb2ZfbW9kZSBhbmQgY29udGFpbnNfcmVnX29mX21vZGUuCgkocmVjb3JkX3JlZ19jbGFzc2VzKTogVW5zd2l0Y2ggaW50ZXJuYWwgbG9vcHMuCgkoY29weV9jb3N0KTogVHJpZ2dlciBsYXp5IGluaXRpYWxpemF0aW9uIG9mIG1vdmUgY29zdAoJKHJlY29yZF9hZGRyZXNzX3JlZ3MpOiBMaWtld2lzZS4KCjIwMDctMDctMjQgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fb3ZlcnJpZGVfb3B0aW9ucyk6IERvbid0IGZvcmNlIG9uCglmbGFnX3Zhcl90cmFja2luZ191bmluaXQgd2hlbiBubyBkZWJ1ZyBpbmZvIGlzIHJlcXVlc3RlZC4KCjIwMDctMDctMjUgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBjZmdsb29wLmMgKGluaXRfbG9vcHNfc3RydWN0dXJlKTogTmV3IGZ1bmN0aW9uLgoJKGZsb3dfbG9vcHNfZmluZCk6IENyZWF0ZSByb290IG9mIHRoZSBsb29wIHRyZWUgdW5jb25kaXRpb25hbGx5LgoKMjAwNy0wNy0yNCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUtc3NhLWNjcC5jIChmb2xkX2NvbnN0X2FnZ3JlZ2F0ZV9yZWYpOiBVc2UgZm9sZF9jb252ZXJ0LgoKMjAwNy0wNy0yNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbGVyLXNhdmUuYzogSW5jbHVkZSBnZ2MuaCwgZ3QtY2FsbGVyLXNhdmUuaAoJKHJlZ19zYXZlX2NvZGUsIHJlZ19yZXN0b3JlX2NvZGUpOiBSZW5hbWUgdG8gLi4uCgkoY2FjaGVkX3JlZ19zYXZlX2NvZGUsIGNhY2hlZF9yZWdfcmVzdG9yZV9jb2RlKTogLi4uIHRob3NlLgoJKHNhdmVwYXQsIHJlc3RwYXQsIHRlc3RfcmVnLCB0ZXN0X21lbSwgc2F2ZWluc24sIHJlc3RpbnNuKTogTmV3LgoJKHJlZ19zYXZlX2NvZGUsIHJlZ19yZXN0b3JlX2NvZGUpOiBOZXcgZnVuY3Rpb25zLgoJKGluaXRfY2FsbGVyX3NhdmUpOiBEbyBub3QgaW50aWFsaXplCglyZWdfc2F2ZV9jb2RlL3JlZ19yZXN0b3JlX2NvZGUgdGFibGVzLgoJKiBNYWtlZmlsZS5pbjogKGd0LWNhbGxlci1zYXZlLmgpOiBOZXcuCgoyMDA3LTA3LTI0ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogdHJlZS1zc2EtaWZjb21iaW5lLmMgKGlmY29tYmluZV9pZmFuZGlmKTogVXNlIGEgT05FIG9wZXJhbmQKCXdpdGggdGhlIG1vZGUgb2YgdGhlIG9yaWdpbmFsIG9wZXJhbmQgaW5zdGVhZCBvZgoJaW50ZWdlcl9vbmVfbm9kZS4KCjIwMDctMDctMjMgIEphbiBIdWJpY2thICA8akhAc3VzZS5jej4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9zZWNvbmRhcnlfbWVtb3J5X25lZWRlZCk6IEJyZWFrIG91dCB0by4uLgoJKGlubGluZV9zZWNvbmRhcnlfbWVtb3J5X25lZWRlZCk6IC4uLiBoZXJlLgoJKGl4ODZfbWVtb3J5X21vdmVfY29zdCk6IEJyZWFrIG91dCB0byAuLi4KCShpbmxpbmVfbWVtb3J5X21vdmVfY29zdCk6IC4uLiBoZXJlOyBhZGQgc3VwcG9ydCBmb3IgSU4gdmFsdWUgb2YgMiBmb3IKCW1heGltdW0gb2YgaW5wdXQgYW5kIG91dHB1dDsgZml4IGhhbmRsaW5nIG9mIFFfUkVHUyBvbiA2NGJpdC4KCShpeDg2X3NlY29uZGFyeV9tZW1vcnlfbmVlZGVkKTogTWljcm9vcHRpbWl6ZS4KCjIwMDctMDctMjMgIFNlYmFzdGlhbiBQb3AgIDxzZWJwb3BAZ21haWwuY29tPgoKCSogdHJlZS1kYXRhLXJlZi5jIChmaW5kX3ZlcnRleF9mb3Jfc3RtdCwgY3JlYXRlX3JkZ19lZGdlX2Zvcl9kZHIsCgljcmVhdGVfcmRnX2VkZ2VzX2Zvcl9zY2FsYXIsIGNyZWF0ZV9yZGdfZWRnZXMsIGNyZWF0ZV9yZGdfdmVydGljZXMsCglzdG10c19mcm9tX2xvb3AsIGtub3duX2RlcGVuZGVuY2VzX3AsIGJ1aWxkX3JkZyk6IE5ldy4KCSogdHJlZS1kYXRhLXJlZi5oOiBEZXBlbmRzIG9uIGdyYXBoZHMuaC4KCShyZGdfdmVydGV4LCBSREdWX1NUTVQsIHJkZ19kZXBfdHlwZSwgcmRnX2VkZ2UsIFJER0VfVFlQRSk6IE5ldy4KCShidWlsZF9yZGcpOiBEZWNsYXJlZC4KCSogTWFrZWZpbGUuaW4gKFRSRUVfREFUQV9SRUZfSCk6IERlcGVuZHMgb24gZ3JhcGhkcy5oLgoKMjAwNy0wNy0yMyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuYyAodmFsaWRfZ2ltcGxlX2V4cHJlc3Npb25fcCk6IE1hdGNoIHVwIHdpdGgKCWNjcF9taW5faW52YXJpYW50LgoKMjAwNy0wNy0yMyAgUGV0ZXIgQmVyZ25lciAgPGJlcmduZXJAdm5ldC5pYm0uY29tPgoJICAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvUFIyODY5MAoJKiBvcHRhYnMuYyAoZXhwYW5kX2Jpbm9wKTogKGVtaXRfY21wX2FuZF9qdW1wX2luc25zKTogQWxsb3cKCUVRIGNvbXBhcmVzLgoJKiBydGxhbmFsLmMgKGNvbW11dGF0aXZlX29wZXJhbmRfcHJlY2VkZW5jZSk6IFByZWZlciBib3RoIFJFR19QT0lOVEVSCglhbmQgTUVNX1BPSU5URVIgb3BlcmFuZHMgb3ZlciBSRUcgYW5kIE1FTSBvcGVyYW5kcy4KCShzd2FwX2NvbW11dGF0aXZlX29wZXJhbmRzX3ApOiBDaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIGJvb2wuCgkqIHJ0bC5oOiBVcGRhdGUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoJKiB0cmVlLXNzYS1hZGRyZXNzLmMgKGdlbl9hZGRyX3J0eCk6IFVzZSBzaW1wbGlmeV9nZW5fYmluYXJ5CglpbnN0ZWFkIG9mIGdlbl9ydHhfUExVUy4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3BsdXNfbWludXNfb3BfZGF0YV9jbXApOiBDaGFuZ2UgcmV0dXJuCgl2YWx1ZSB0byBib29sLiAgQ2hhbmdlIGZ1bmN0aW9uIGFyZ3VtZW50cyB0byBydHgncyBhbmQgdXBkYXRlIGNvZGUKCXRvIG1hdGNoLgoJKHNpbXBsaWZ5X3BsdXNfbWludXMpOiBVcGRhdGUgdGhlIHNpbXBsaWZ5X3BsdXNfbWludXNfb3BfZGF0YV9jbXAKCWNhbGxzIHRvIG1hdGNoIHRoZSBuZXcgZGVjbGFyYXRpb24uCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9hc3NvY2lhdGl2ZV9vcGVyYXRpb24pOiBEb24ndAoJcmVvcmRlciBzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uIGFyZ3VtZW50cy4KCjIwMDctMDctMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogVXNlIG1pcHNfY29zdHMgdG8gZGVyaXZlCgl0aGUgZGVmYXVsdCBicmFuY2ggY29zdC4KCSogY29uZmlnL21pcHMvbWlwcy5oIChCUkFOQ0hfQ09TVCk6IFVzZSBtaXBzX2JyYW5jaF9jb3N0IHJhdGhlcgoJdGhhbiBtaXBzX2Nvc3RzLgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobWJyYW5jaC1jb3N0PSk6IE5ldyBvcHRpb24uCgkqIGRvYy9pbnZva2UudGV4aSAoLW1icmFuY2gtY29zdCk6IERvY3VtZW50IG5ldyBNSVBTIG9wdGlvbi4KCjIwMDctMDctMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChHUl9SRUdfQ0xBU1NfUCwgQ09QX1JFR19DTEFTU19QKTogRGVsZXRlLgoJKFNFQ09OREFSWV9NRU1PUllfTkVFREVEKTogRGVsZXRlIGNvbW1lbnRlZC1vdXQgZGVmaW5pdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3JlZ2lzdGVyX21vdmVfY29zdCk6IFVzZSByZWdfY2xhc3Nfc3Vic2V0X3AKCWluc3RlYWQgb2YgR1JfUkVHX0NMQVNTX1AgYW5kIENPUF9SRUdfQ0xBU1NfUC4KCjIwMDctMDctMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvY29uc3RyYWludHMubWQgKGtzKTogTmV3IGNvbnN0cmFpbnQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCphZGQ8bW9kZT4zX3NwMSwgKmFkZDxtb2RlPjNfc3AyKTogRm9sZCBpbnRvLi4uCgkoKmFkZDxtb2RlPjNfbWlwczE2KTogLi4uaGVyZS4KCjIwMDctMDctMjEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX3NpZ25iaXQuCgkoc2lnbmJpdF9vcHRhYik6IERlZmluZSBjb3JyZXNwb25kaW5nIG1hY3JvLgoJKGVudW0gaW5zbl9jb2RlIHNpZ25iaXRfb3B0YWJbXSk6IFJlbW92ZSBhcnJheS4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBzaWduYml0X29wdGFiIHVzaW5nIGluaXRfb3B0YWIuCgkoZXhwYW5kX2NvcHlzaWduX2Fic25lZyk6IElmIGJhY2sgZW5kIHByb3ZpZGVzIHNpZ25iaXQgaW5zbiwgdXNlIGl0CglpbnN0ZWFkIG9mIGJpdCBvcGVyYXRpb25zIG9uIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50LgoJKiBidWlsdGlucy5jIChlbnVtIGluc25fY29kZSBzaWduYml0X29wdGFiW10pOiBSZW1vdmUgYXJyYXkuCgkoZXhwYW5kX2J1aWx0aW5fc2lnbmJpdCk6IENoZWNrIHNpZ25iaXRfb3B0YWItPmhhbmRsZXJzW10uaW5zbl9jb2RlCglmb3IgYXZhaWxhYmlsaXR5IG9mIHNpZ25iaXQgaW5zbi4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNpZ25iaXQ8bW9kZT4yKTogTmV3IGluc24gcGF0dGVybiB0byBpbXBsZW1lbnQKCXNpZ25iaXRmLCBzaWduYml0IGFuZCBzaWduYml0bCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzIHdoZW4KCVNTRSBtb2RlIGlzIG5vdCBhY3RpdmUuCgkoaXNpbmY8bW9kZT4yKTogRGlzYWJsZSBmb3IgbWZwbWF0aD1zc2UsMzg3LgoKMjAwNy0wNy0yMiAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiByZWdjbGFzcy5jIChpbnZhbGlkX21vZGVfY2hhbmdlX3ApOiBBdHRhY2ggQVRUUklCVVRFX1VOVVNFRCB0bwoJYGNsYXNzJyBwYXJhbWV0ZXIuCgkqIHN0cnVjdC1lcXVpdi5jIChub3RlX2xvY2FsX2xpdmUpOiBMaWtld2lzZSBmb3IgYHlfcmVnbm8nLgoKMjAwNy0wNy0yMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1jZmcuYyAodmVyaWZ5X2V4cHIpOiBDT05EX0VYUFJzIGNhbiBoYXZlIGFueQoJaW50ZWdyYWwgdHlwZWQgY29uZGl0aW9uLgoJKiB0cmVlLXNzYS5jICh1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wKTogRG8gbm90IHByZXNlcnZlCglib29sZWFubmVzcy4gIE9ubHkgcHJlc2VydmUgY29udmVyc2lvbnMgZnJvbSBhIG5vbi1iYXNlCgl0eXBlIHRvIGEgYmFzZSB0eXBlLCBub3QgaW4gZ2VuZXJhbCBiZXR3ZWVuIHR5cGVzIHdpdGgKCWRpZmZlcmVudCBUWVBFX01JTl9WQUxVRSBvciBUWVBFX01BWF9WQUxVRS4KCSogdHJlZS5kZWYgKENPTkRfRVhQUik6IERvY3VtZW50IHRoYXQgdGhlIGNvbmRpdGlvbgoJY2FuIGJlIG9mIGFueSBpbnRlZ3JhbCB0eXBlLgoKMjAwNy0wNy0yMCAgTmlnZWwgU3RlcGhlbnMgIDxuaWdlbEBtaXBzLmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAobWlwc19kd2FyZl9yZWdubyk6IERlY2xhcmUuCgkoREJYX1JFR0lTVEVSX05VTUJFUik6IFJlbW92ZSByZWR1bmRhbnQgYnJhY2tldHMuCgkoSElfUkVHTlVNLCBMT19SRUdOVU0pOiBEZWZpbmUgaW4gYW4gZW5kaWFuLWRlcGVuZGVudCB3YXkuCgkoQUMxSElfUkVHTlVNLCBBQzFMT19SRUdOVU0sIEFDMkhJX1JFR05VTSwgQUMyTE9fUkVHTlVNKQoJKEFDM0hJX1JFR05VTSwgQUMzTE9fUkVHTlVNLCBBQ0NfSElfUkVHX1ApOiBEZWxldGUuCgkocmVnX2NsYXNzKTogUmVuYW1lIEhJX1JFRyB0byBNRDBfUkVHIGFuZCBMT19SRUcgdG8gTUQxX1JFRy4KCShSRUdfQ0xBU1NfTkFNRVMpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19kd2FyZl9yZWdubyk6IE5ldyBhcnJheS4KCShtaXBzX3JlZ25vX3RvX2NsYXNzKTogUmVuYW1lIEhJX1JFRyB0byBNRDBfUkVHIGFuZCBMT19SRUcgdG8gTUQxX1JFRy4KCShtaXBzX3N1YndvcmQpOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBmb3IgYWNjdW11bGF0b3IgcmVnaXN0ZXJzLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFpbGl6ZSBtaXBzX2R3YXJmX3JlZ25vLiAgUmVtb3ZlIHVzZQoJb2YgQUNDX0hJX1JFR19QLgoJKG1pcHNfc3dhcF9yZWdpc3RlcnMpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19jb25kaXRpb25hbF9yZWdpc3Rlcl91c2FnZSk6IFN3YXAgYWNjdW11bGF0b3IgcmVnaXN0ZXJzCglhcm91bmQgaWYgVEFSR0VUX0xJVFRMRV9FTkRJQU4uCgkobWlwc19jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MpOiBSZW1vdmUgc3BlY2lhbCB0cmVhdG1lbnQgb2YgQUNDX1JFR1MuCgkqIGNvbmZpZy9taXBzL2NvbnN0cmFpbnRzLm1kIChoLCBsKTogVXNlIHRoZSBlbmRpYW5uZXNzIHRvIGNob29zZQoJYmV0d2VlbiBNRDBfUkVHIGFuZCBNRDFfUkVHLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqbWZoaWxvXzxtb2RlPl9tYWNjKTogVXNlIGEgZml4ZWQtc3RyaW5nLAoJYWx0ZXJuYXRpdmUtZGVwZW5kZW50IHRlbXBsYXRlLgoKMjAwNy0wNy0yMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAobW92c2kpOiBVc2UgY2FuX2NyZWF0ZV9wc2V1ZG9fcCBpbnN0ZWFkIG9mCglub19uZXdfcHNldWRvcy4KCjIwMDctMDctMjAgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBmdW5jdGlvbi5jICh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogRml4IGV4aXQKCXByZWRlY2Vzc29yIGZhbGx0aHJ1IGZsYWdzLgoKMjAwNy0wNy0yMCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAoYXNzZXJ0X2xvb3Bfcm9sbHNfbHQpOiBDb252ZXJ0IHRoZSBvcGVyYW5kcwoJb2YgY29tcGFyZSB0byB0aGUgc2FtZSB0eXBlLgoJKiBjZmdsb29wbWFuaXAuYyAoYWRkX2xvb3ApOiBVcGRhdGUgaW5mb3JtYXRpb24gYWJvdXQgbG9vcCBleGl0cy4KCShsb29wX3ZlcnNpb24pOiBSZW1vdmUgdGhlIGlubmVybW9zdCBsb29wIHJlcXVpcmVtZW50LgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKGRldGVybWluZV9leGl0X2NvbmRpdGlvbnMpOiBDb252ZXJ0IGJvdW5kcwoJdG8gc2l6ZXR5cGUgZm9yIHBvaW50ZXJzLgoKMjAwNy0wNy0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZWZpbGUuaW4gKEQzMlBCSVRfRlVOQ1MpOiBBZGQgX3NkX3RvX3RmIGFuZCBfdGZfdG9fc2QuCgkoRDY0UEJJVF9GVU5DUyk6IEFkZCBfZGRfdG9fdGYgYW5kIF90Zl90b19kZC4KCShEMTI4UEJJVF9GVU5DUyk6IEFkZCBfdGRfdG9fdGYgYW5kIF90Zl90b190ZC4KCgkqIGNvbmZpZy9kZnAtYml0LmM6IEVtcHR5IGZvciBURm1vZGUgY29udmVyc2lvbnMuCgoyMDA3LTA3LTE4ICBDYXJvbGluZSBUaWNlICA8Y3RpY2VAYXBwbGUuY29tPgoJCgkqIHZhci10cmFja2luZy5jIChmaW5kX3NyY19zdGF0dXMpOiBDaGVjayBmb3IgIENPTkRfRVhFQyBpbnNucwoJYW5kIGhhbmRsZSB0aGVtIGNvcnJlY3RseTsgY2hlY2sgdGhhdCBzcmMgaXMgbm90IE5VTEwgYmVmb3JlCgl0cnlpbmcgdG8gdXNlIGl0LgoJKGZpbmRfc3JjX3NldF9zcmMpOiBMaWtld2lzZS4KCQoyMDA3LTA3LTE4ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoJCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9leHBhbmRfbWFza19hbmRfc2hpZnQpOiBOZXcuCgkoc3RydWN0IGFsaWdubWVudF9jb250ZXh0LCBpbml0X2FsaWdubWVudF9jb250ZXh0KTogTmV3LgoJKHh0ZW5zYV9leHBhbmRfY29tcGFyZV9hbmRfc3dhcCwgeHRlbnNhX2V4cGFuZF9hdG9taWMpOiBOZXcuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKFhDSEFMX0hBVkVfUkVMRUFTRV9TWU5DKTogQWRkIGRlZmF1bHQuCgkoWENIQUxfSEFWRV9TMzJDMUkpOiBMaWtld2lzZS4KCShUQVJHRVRfUkVMRUFTRV9TWU5DLCBUQVJHRVRfUzMyQzFJKTogTmV3LgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5tZCAoVU5TUEVDVl9NRU1XKTogTmV3IGNvbnN0YW50LgoJKFVOU1BFQ1ZfUzMyUkksIFVOU1BFQ1ZfUzMyQzFJKTogTGlrZXdpc2UuCgkoQVRPTUlDLCBIUUkpOiBOZXcgbWFjcm9zLgoJKG1lbW9yeV9iYXJyaWVyLCAqbWVtb3J5X2JhcnJpZXIpOiBOZXcuCgkoc3luY19sb2NrX3JlbGVhc2VzaSk6IE5ldy4KCShzeW5jX2NvbXBhcmVfYW5kX3N3YXBzaSwgc3luY19jb21wYXJlX2FuZF9zd2FwPG1vZGU+KTogTmV3LgoJKHN5bmNfbG9ja190ZXN0X2FuZF9zZXQ8bW9kZT4pOiBOZXcuCgkoc3luY188YXRvbWljPjxtb2RlPik6IE5ldy4KCShzeW5jX29sZF88YXRvbWljPjxtb2RlPiwgc3luY19uZXdfPGF0b21pYz48bW9kZT4pOiBOZXcuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oICh4dGVuc2FfZXhwYW5kX2NvbXBhcmVfYW5kX3N3YXApOiBOZXcuCgkoeHRlbnNhX2V4cGFuZF9hdG9taWMpOiBOZXcuCgkKMjAwNy0wNy0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCVBSIHRhcmdldC8zMDY1MgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5faW50ZXJjbGFzc19tYXRoZm4pOiBQcm92aWRlIGEgZ2VuZXJpYwoJdHJhbnNmb3JtYXRpb24gZm9yIGJ1aWx0aW4gSVNOT1JNQUwuCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fSVNOT1JNQUwuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fSVNOT1JNQUwpOiBOZXcuCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgaXNub3JtYWwuCgoyMDA3LTA3LTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJUFIgdGFyZ2V0LzMwNjUyCgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9pbnRlcmNsYXNzX21hdGhmbik6IEFsbG93IGZvciBtaXNzaW5nCglvcHRhYnMgaW5mcmFzdHJ1Y3R1cmUuICBQcm92aWRlIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gZm9yCglGSU5JVEUvSVNGSU5JVEUuCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgRklOSVRFL0lTRklOSVRFLgoJKGZvbGRfYnVpbHRpbl9jbGFzc2lmeSk6IE1ha2UgSVNGSU5JVEUgY2Fub25pY2FsIGluc3RlYWQgb2YgRklOSVRFLgoJKGZvbGRfYnVpbHRpbl8xKTogTGlrZXdpc2UuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0lTRklOSVRFKTogTmV3LgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBpc2Zpbml0ZS4KCjIwMDctMDctMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCglQUiB0YXJnZXQvMzA2NTIKCVBSIG1pZGRsZS1lbmQvMjA1NTgKCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2ludGVyY2xhc3NfbWF0aGZuKTogUHJvdmlkZSBhCglnZW5lcmljIGZhbGxiYWNrIGZvciBpc2luZi4KCSogYy1jcHBidWlsdGluLmMgKGJ1aWx0aW5fZGVmaW5lX2Zsb2F0X2NvbnN0YW50cyk6IE1vdmUgRlAgbWF4CgljYWxjdWxhdGlvbiBjb2RlIC4uLgoJKiByZWFsLmMgKGdldF9tYXhfZmxvYXQpOiAuLi4gdG8gaGVyZS4KCSogcmVhbC5oIChnZXRfbWF4X2Zsb2F0KTogTmV3LgoKMjAwNy0wNy0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMzI2NjgKCgkqIGJ1aWx0aW4tYXR0cnMuZGVmIChBVFRSX1RZUEVHRU5FUklDLAoJQVRUUl9DT05TVF9OT1RIUk9XX1RZUEVHRU5FUklDKTogTmV3LgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9JU0lORiwgQlVJTFRfSU5fSVNOQU4sCglCVUlMVF9JTl9JU0dSRUFURVIsIEJVSUxUX0lOX0lTR1JFQVRFUkVRVUFMLCBCVUlMVF9JTl9JU0xFU1MsCglCVUlMVF9JTl9JU0xFU1NFUVVBTCwgQlVJTFRfSU5fSVNMRVNTR1JFQVRFUiwKCUJVSUxUX0lOX0lTVU5PUkRFUkVEKTogVXNlIEFUVFJfQ09OU1RfTk9USFJPV19UWVBFR0VORVJJQy4KCgkqIGMtY29tbW9uLmMgKGhhbmRsZV90eXBlX2dlbmVyaWNfYXR0cmlidXRlKTogTmV3LgoJKGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCAidHlwZSBnZW5lcmljIi4KCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogSGFuZGxlICJ0eXBlIGdlbmVyaWMiIGZ1bmN0aW9ucy4KCjIwMDctMDctMTggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2Etc2Njdm4uYyAodHJ5X3RvX3NpbXBsaWZ5KTogVXNlIHZhbGlkX2dpbXBsZV9leHByZXNzaW9uCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZSAodmFsaWRfZ2ltcGxlX2V4cHJlc3Npb24pOiBIYW5kbGUgQUREUl9FWFBSCglwcm9wZXJseS4KCjIwMDctMDctMTggIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCglQUiB0YXJnZXQvMzI4MDgKCSogY29uZmlnL2NyaXMvY3Jpcy5jIChjcmlzX3ByaW50X2luZGV4KTogRG9uJ3QgdXNlIFhFWFAgYmVmb3JlCgljaGVja2luZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGFuIGV4cHJlc3Npb24uCgoyMDA3LTA3LTE5ICBDaHJpc3RvcGggdm9uIFdpdHRpY2ggIDxDaHJpc3RvcGhfdldAcmVhY3Rvcy5vcmc+CgkgICAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUi9vdGhlciAzMDMzNQoJKiBjb25maWcvaTM4Ni9ob3N0LW1pbmd3MzIuYyAobWluZ3czMl9ndF9wY2hfdXNlX2FkZHJlc3MpOiBQdXQKCWZpbGUgbWFwcGluZyBvYmplY3QgaW4gbG9jYWwgbmFtZXNwYWNlIGlmIFdpbmRvd3MgdmVyc2lvbiBsYXRlcgoJdGhhbiBOVDQKCjIwMDctMDctMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9jYW5ub3RfZm9yY2VfY29uc3RfbWVtKTogRGVjbGFyZS4KCSogY29uZmlnL2FybS9hcm0uYyAoVEFSR0VUX0NBTk5PVF9GT1JDRV9DT05TVF9NRU0pOiBSZWRlZmluZSB0bwoJYXJtX2Nhbm5vdF9mb3JjZV9jb25zdF9tZW0uCgkoYXJtX2Nhbm5vdF9mb3JjZV9jb25zdF9tZW0pOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hcm0vYXJtLmggKEFSTV9PRkZTRVRTX01VU1RfQkVfV0lUSElOX1NFQ1RJT05TX1ApOiBOZXcgbWFjcm8uCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogVGVzdCBhcm1fY2Fubm90X2ZvcmNlX2NvbnN0X21lbSBpbnN0ZWFkCglvZiBhcm1fdGxzX3JlZmVyZW5jZWRfcC4KCSogY29uZmlnL2FybS9hcm0ubWQgKG1vdnNpKTogU3BsaXQgb3V0LW9mLXNlY3Rpb24gY29uc3RhbnRzIHdoZW4KCUFSTV9PRkZTRVRTX01VU1RfQkVfV0lUSElOX1NFQ1RJT05TX1AuCgkqIGNvbmZpZy9hcm0vdnh3b3Jrcy5oIChBUk1fT0ZGU0VUU19NVVNUX0JFX1dJVEhJTl9TRUNUSU9OU19QKTogRGVmaW5lLgoKMjAwNy0wNy0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjbGVhcl9jYWNoZSk6IFRyZWF0IHRoZSBzaXplIGFyZ3VtZW50IGFzIFBtb2RlLgoKMjAwNy0wNy0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqZXh0ZW5kcWloaTIpOiBDb252ZXJ0IHRoZSBkZXN0aW5hdGlvbgoJdG8gU0ltb2RlLgoKMjAwNy0wNy0xNyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGNvbmZpZy9wYS9mcHRyLmM6IFVwZGF0ZSBsaWNlbnNlIGhlYWRlci4KCSogY29uZmlnL3BhL21pbGxpNjQuUzogTGlrZXdpc2UuCgoyMDA3LTA3LTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogQ09QWUlOR192MzogTmV3IGZpbGUuICBDb250YWlucyB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsCglQdWJsaWMgTGljZW5zZS4KCSogQ09QWUlORy5MSUJfdjM6IE5ldyBmaWxlLiAgQ29udGFpbnMgdmVyc2lvbiAzIG9mIHRoZSBHTlUKCUxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoJKiBkb2MvaW5jbHVkZS9ncGxfdjMudGV4aTogTmV3IGZpbGUuICBDb250YWlucyB2ZXJzaW9uIDMgb2YKCXRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCjIwMDctMDctMTcgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMjc3MwoJKiBjZmdsYXlvdXQuYyAoZm9yY2Vfb25lX2V4aXRfZmFsbHRocnUpOiBOZXcgZnVuY3Rpb24uCgkoY2ZnX2xheW91dF9maW5hbGl6ZSk6IFVzZSBpdC4KCjIwMDctMDctMTYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCSAgICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogdHJlZS1pZi1jb252LmMgKGZpbmRfcGhpX3JlcGxhY2VtZW50X2NvbmRpdGlvbik6IFVuc2hhcmUgIipjb25kIgoJYmVmb3JlIGZvcmNpbmcgaXQgdG8gZ2ltcGxlIG9wZXJhbmQuCgoyMDA3LTA3LTE2ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChUVU5FXzI0Syk6IERlZmluZS4KCShUVU5FX01BQ0NfQ0hBSU5TKTogQWRkIFRVTkVfMjRLLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiAoKm11bF9hY2Nfc2ksICptdWxfc3ViX3NpKTogQ2hhbmdlIHR5cGUgdG8KCWltYWRkLgoJKiBjb25maWcvbWlwcy83NGsubWQgKHI3NGtfaW50X211bHQpOiBTcGxpdCBtYWRkL21zdWIgdG8gLi4KCShyNzRrX2ludF9tYWRkKTogLi4gdGhpcyBuZXcgcmVzZXJ2YXRpb24uCgkoZGVmaW5lX2J5cGFzcyk6IEZpeGVkIGJ5cGFzc2VzIGZvciByNzRrX2ludF9tYWRkIHRvIHVzZQoJbWlwc19saW5rZWRfbWFkZF9wLgoJKiBjb25maWcvbWlwcy8yNGsubWQgKGRlZmluZV9ieXBhc3MpOiBEZWZpbmUgbmV3CglyMjRrX2ludF9tdWwzLT5yMjRrX2ludF9tYWRkIGJ5cGFzcyB1c2luZyBtaXBzX2xpbmtlZF9tYWRkX3AuCgoyMDA3LTA3LTE2ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTmlnZWwgU3RlcGhlbnMgIDxuaWdlbEBtaXBzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEluY2x1ZGUgMjBrYy5tZC4KCSogY29uZmlnL21pcHMvMjBrYy5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19ydHhfY29zdF9kYXRhKTogRmlsbCBpbiAyMEtjIGNvc3RzLgoJKG1pcHNfYWRqdXN0X2Nvc3QpOiBUd2VhayBmb3IgMjBLYy4KCShtaXBzX2lzc3VlX3JhdGUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChUVU5FXzIwS0MpOiBEZWZpbmUuCgoyMDA3LTA3LTE2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHN0cnVjdCBwcm9jZXNzb3JfY29zdCk6IEFkZAoJY2FjaGVfbGluZV9zaXplLCBsMV9jYWNoZV9saW5lcywgYW5kIHNpbXVsdGFuZW91c19wcmVmZXRjaGVzCglmaWVsZHMuCgkoKl9jb3N0KTogQWRkIGNhY2hlIGluZm9ybWF0aW9uLgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogU2V0IGNhY2hlIHBhcmFtZXRlcnMuCgoyMDA3LTA3LTE2ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCglQUiBib290c3RyYXAvMzQ1NgoJKiBjb25maWcuZ2NjIChtaXBzLXNnaS1pcml4WzU2XSopOiBFbmFibGUgcHRocmVhZCBzdXBwb3J0LgoJKiBkb2MvaW5zdGFsbC50ZXhpIChtaXBzLXNnaS1pcml4Nik6IHB0aHJlYWQgc3VwcG9ydCB3b3JrcyBub3cuCgoyMDA3LTA3LTE2ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8zMjc1MwoJKiBjb25maWcvYXJtL2NpcnJ1cy5tZCAoY2lycnVzX2FybV9tb3ZzaV9pbnNuKTogUmVtb3ZlIGRlYWQgaW5zbi4KCShjaXJydXNfdGh1bWIyX21vdnNpX2luc24pOiBEaXR0by4KCjIwMDctMDctMTUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tZmFsbGJhY2suYyAoaW50ZXJwcmV0X2xpYmMpOiBDaGFuZ2UKCUNSMl9SRUdOTyB0byBSX0NSMi4KCjIwMDctMDctMTUgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdW53aW5kLXNqbGouYyAoX1Vud2luZF9HZXRJUEluZm8pOiBDaGVjayBmb3IgY29udGV4dC0+ZmMgIT0gTlVMTAoJYmVmb3JlIGxvb2tpbmcgaW4gdGhlIGNvbnRleHQuCgoyMDA3LTA3LTE1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIG1pZGRsZS1lbmQvMzIzOTgKCVBSIG1pZGRsZS1lbmQvMzI3NjkKCSogcGEtcHJvdG9zLmggKHBhX2VoX3JldHVybl9oYW5kbGVyX3J0eCk6IERlY2xhcmUuCgkqIHBhLmMgKHBhX2V4dHJhX2xpdmVfb25fZW50cnksIHJwX3NhdmVkKTogRGVjbGFyZS4KCShUQVJHRVRfRVhUUkFfTElWRV9PTl9FTlRSWSk6IERlZmluZS4KCShwYV9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgcnBfc2F2ZWQgYW5kCgljdXJyZW50X2Z1bmN0aW9uX2lzX2xlYWYgdG8gZ2VuZXJhdGUgLkNBTExJTkZPIHN0YXRlbWVudC4KCShocHBhX2V4cGFuZF9wcm9sb2d1ZSk6IFNldCBycF9zYXZlZC4KCShocHBhX2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBycF9zYXZlZC4KCShwYV9leHRyYV9saXZlX29uX2VudHJ5LCBwYV9laF9yZXR1cm5faGFuZGxlcl9ydHgpOiBOZXcgZnVuY3Rpb25zLgoJKiBwYS5oIChFSF9SRVRVUk5fSEFORExFUl9SVFgpOiBVc2UgcGFfZWhfcmV0dXJuX2hhbmRsZXJfcnR4LgoKMjAwNy0wNy0xNCAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCgkqIG9tZWdhLmMgKGNvYWxlc2NlKTogRml4IG1lbW9yeSBsZWFrIG9uIGVhcmx5IGV4aXQuCgkqIG1hdHJpeC1yZW9yZy5jIChjaGVja19hbGxvY2F0aW9uX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9nZXRfbmV3X3ZlY3RfdmFyKTogZnJlZSByZXN1bHQKCW9mIGNvbmNhdCgpLgoJKiBiYi1yZW9yZGVyLmMgKGZpbmRfcmFyZWx5X2V4ZWN1dGVkX2Jhc2ljX2Jsb2Nrc19hbmRfY3Jvc3NpbmdfZWRnZXMpOgoJcGFzcyBwb2ludGVyIHRvIGVkZ2UgdmVjdG9yCgkocGFydGl0aW9uX2hvdF9jb2xkX2Jhc2ljX2Jsb2Nrcyk6IEZpeCBtZW1vcnkgbGVhay4KCSogY29sbGVjdDIuYyAocHJlZml4X2Zyb21fc3RyaW5nKTogRnJlZSB0ZW1wb3Jhcnkgc3RvcmFnZS4KCSogcmVsb2FkMS5jIChmaXh1cF9hYm5vcm1hbF9lZGdlcyk6IEZyZWUgc2JpdG1hcC4KCjIwMDctMDctMTQgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmggKERPX0dMT0JBTF9DVE9SU19CT0RZKTogQWRkIHZvaWQgdG8gcHJvdG90eXBlLgoJKERPX0dMT0JBTF9EVE9SU19CT0RZKTogTGlrZXdpc2UuCgoyMDA3LTA3LTE0ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTmlnZWwgU3RlcGhlbnMgIDxuaWdlbEBtaXBzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBEb24ndCByZXR1cm4KCVNZTUJPTF9TTUFMTF9EQVRBIGZvciBjb25zdGFudCBwb29sIGFkZHJlc3NlcyBpZgoJVEFSR0VUX0VNQkVEREVEX0RBVEEgaXMgdHJ1ZS4KCjIwMDctMDctMTQgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGluaXRfbW14X3NzZV9idWlsdGlucyk6IERlZmluZSBhbGwgYnVpbHRpbnMKCWV4Y2VwdCBfX2J1aWx0aW5faWEzMl9lbW1zLCBfX2J1aWx0aW5faWEzMl9sZG14Y3NyLAoJX19idWlsdGluX2lhMzJfc3RteGNzciwgX19idWlsdGluX2lhMzJfbWFza21vdnEsIF9fYnVpbHRpbl9pYTMyX2xvYWR1cHMsCglfX2J1aWx0aW5faWEzMl9zdG9yZXVwcywgX19idWlsdGluX2lhMzJfbG9hZGhwcywgX19idWlsdGluX2lhMzJfbG9hZGxwcywKCV9fYnVpbHRpbl9pYTMyX3N0b3JlaHBzLCBfX2J1aWx0aW5faWEzMl9zdG9yZWxwcywKCV9fYnVpbHRpbl9pYTMyX21vdm50cHMsIF9fYnVpbHRpbl9pYTMyX21vdm50cSwgX19idWlsdGluX2lhMzJfc2ZlbmNlLAoJX19idWlsdGluX2lhMzJfZmVtbXMsIF9fYnVpbHRpbl9pYTMyX21hc2ttb3ZkcXUsIF9fYnVpbHRpbl9pYTMyX2xvYWR1cGQsCglfX2J1aWx0aW5faWEzMl9zdG9yZXVwZCwgX19idWlsdGluX2lhMzJfbG9hZGhwZCwgX19idWlsdGluX2lhMzJfbG9hZGxwZCwKCV9fYnVpbHRpbl9pYTMyX21vdm50aSwgX19idWlsdGluX2lhMzJfbW92bnRwZCwgX19idWlsdGluX2lhMzJfbW92bnRkcSwKCV9fYnVpbHRpbl9pYTMyX2NsZmx1c2gsIF9fYnVpbHRpbl9pYTMyX2xmZW5jZSwgX19idWlsdGluX2lhMzJfbWZlbmNlLAoJX19idWlsdGluX2lhMzJfbG9hZGRxdSwgX19idWlsdGluX2lhMzJfc3RvcmVkcXUsIF9fYnVpbHRpbl9pYTMyX21vbml0b3IsCglfX2J1aWx0aW5faWEzMl9td2FpdCwgX19idWlsdGluX2lhMzJfbGRkcXUsIF9fYnVpbHRpbl9pYTMyX21vdm50ZHFhLAoJX19idWlsdGluX2lhMzJfbW92bnRzZCBhbmQgX19idWlsdGluX2lhMzJfbW92bnRzcyBhcyBjb25zdCBidWlsdGlucwoJdXNpbmcgZGVmX2J1aWx0aW5fY29uc3QuCgoyMDA3LTA3LTE0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyNzA1CgkqIHRyZWUtc3NhLXNjY3ZuLmMgKHNldF9zc2FfdmFsX3RvKTogQWNjZXB0IFZOX1RPUCBhcyB2YWx1ZSBudW1iZXIuCgkoc2ltcGxpZnlfYmluYXJ5X2V4cHJlc3Npb24pOiBVc2UgU1NBX1ZBTCBjb25zaXN0ZW50bHkuCgoyMDA3LTA3LTEzICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoU1BFX0FDQ19SRUdOTyk6IERlbGV0ZSBkZWZpbml0aW9uLgoJKFNQRUZTQ1JfUkVHTk8pOiBEZWxldGUgZGVmaW5pdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogTElOS19SRUdJU1RFUl9SRUdOVU0gLT4gTFJfUkVHTk8uCglDT1VOVF9SRUdJU1RFUl9SRUdOVU0gLT4gQ1RSX1JFR05PLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBEbyBub3QgZGVmaW5lICpfUkVHTk8uCglMSU5LX1JFR0lTVEVSX1JFR05VTSAtPiBMUl9SRUdOTy4KCUNPVU5UX1JFR0lTVEVSX1JFR05VTSAtPiBDVFJfUkVHTk8uCgkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZDogTElOS19SRUdJU1RFUl9SRUdOVU0gLT4gCUxSX1JFR05PLgoJQ09VTlRfUkVHSVNURVJfUkVHTlVNIC0+IENUUl9SRUdOTy4KCSogY29uZmlnL3JzNjAwMC9saW51eC11bndpbmQuaDogRGVmaW5lIFJfTFIsIFJfQ1IyLCBSX1ZSMCwKCVJfVlJTQVZFLCBSX1ZTQ1IuIFVzZSB0aGVtLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi1mYWxsYmFjay5jOiBEZWZpbmUgUl9MUiwgUl9DVFIsIFJfQ1IyLAoJUl9YRVIsIFJfVlIwLCBSX1ZSU0FWRSwgUl9WU0NSLCBSX1NQRUZTQ1IuICBVc2UgdGhlbS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IERlZmluZSBSRUdOTyBjb25zdGFudHMuICBVc2UgdGhlbS4KCSogY29uZmlnL3JzNjAwMC9haXguaDogRGVmaW5lIFJfTFIuICBVc2UgaXQuCgkKMjAwNy0wNy0xMyAgQ2Fyb2xpbmUgVGljZSAgPGN0aWNlQGFwcGxlLmNvbT4KCQoJKiB0b3BsZXYuYyAocHJvY2Vzc19vcHRpb25zKTogVHVybiBmbGFnX3Zhcl90cmFja2luZ191bmluaXQgb2ZmIHdoZW4KCWZsYWdfdmFyX3RyYWNraW5nIGlzIGV4cGxpY2l0bHkgdHVybmVkIG9mZiAoaS5lLiB3aGVuIHZhcmlhYmxlCgl0cmFja2luZyBpcyBub3QgZmVhc2libGUpOyBvdGhlcndpc2UsIHR1cm4gZmxhZ192YXJfdHJhY2tpbmcgb24gd2hlbgoJZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0IGlzIG9uLgoJKiBydGwuZGVmIChWQVJfTE9DQVRJT04pOiBBZGQgYSBuZXcgaW50ZWdlciBzdWJmaWVsZCB0byBWQVJfTE9DQVRJT04KCW5vdGUgZGVmaW5pdGlvbnMsIHRvIGFsbG93IHJlY29yZGluZyBvZiBpbml0aWFsaXphdGlvbiBzdGF0dXMgaW4gdGhlCglub3Rlcy4KCSogZHdhcmYyb3V0LmMgKGR3YXJmX3N0YWNrX29wX25hbWUpOiBBZGQgY2FzZSBmb3IgRFdfT1BfR05VX3VuaW5pdC4KCShhZGRfdmFyX2xvY190b19kZWNsKTogQWRkIGNvbXBhcmlzb24gb2YgTk9URV9WQVJfTE9DQVRJT05fU1RBVFVTIHRvCglkZXRlcm1pbmUgaWYgdHdvIG5vdGUgbG9jYXRpb25zIGFyZSBlcXVhbC4KCShvdXRwdXRfbG9jX2xpc3QpOiBEb24ndCBvdXRwdXQgbGlzdCBlbnRyaWVzIHdob3NlIHN0YXJ0ICYgZW5kIGxhYmVscwoJYXJlIHRoZSBzYW1lLgoJKHJlZ19sb2NfZGVzY3JpcHRvcik6IEFkZCBwYXJhbWV0ZXIgZm9yIGluaXRpYWxpemF0aW9uIHN0YXR1czsgcGFzcyBpdAoJdG8gb3RoZXIgbG9jIGRlc2NyaXB0b3IgZnVuY3Rpb25zLgoJKG9uZV9yZWdfbG9jX2Rlc2NyaXB0b3IpOiBBZGQgcGFyYW1ldGVyIGZvciBpbml0aWFsaXphdGlvbiBzdGF0dXM7CgljaGVjayBpdHMgdmFsdWUgYW5kIGFkZCBEV19PUF9HTlVfdW5pbml0IHRvIHJldHVybmVkIGxvYyBkZXNjciBpZgoJYXBwcm9wcmlhdGUuCgkobXVsdGlwbGVfcmVnX2xvY19kZXNjcmlwdG9yKTogQWRkIHBhcmFtZXRlciBmb3IgaW5pdGlhbGl6YXRpb24KCXN0YXR1czsKCXBhc3MgaW5pdCBzdGF0dXMgYXJndW1lbnQgdG8gb3RoZXIgbG9jIGRlc2NyaXB0b3IgZnVuY3Rpb25zOyBjaGVjawoJdmFsdWUgb2YgaW50aWFsaXphdGlvbiBwYXJhbWV0ZXIgYW5kIGFkZCBEV19PUF9HTlVfdW5pbml0IHRvIHJldHVybmVkCglsb2MgZGVzY3IgaWYgYXBwcm9wcmlhdGUuCgkoYmFzZWRfbG9jX2Rlc2NyKTogQWRkIHBhcmFtZXRlciBmb3IgaW5pdGlhbGl6YXRpb24gc3RhdHVzOyBhZGQgbmV3Cgl2YXJpYWJsZSBmb3IgcmV0dXJuIHZhbHVlOyBjaGVjayB2YWx1ZSBvZiBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXIgYW5kCglhZGQgRFdfT1BfR05VX3VuaW5pdCB0byByZXR1cm5lZCBsb2MgZGVzY3IgaWYgYXBwcm9wcmlhdGUuCgkoY29uY2F0bl9tZW1fbG9jX2Rlc2NyaXB0b3IpOiBBZGQgcGFyYW1ldGVyIGZvciBpbml0aWFsaXphdGlvbiBzdGF0dXM7CglwYXNzIGluaXQgc3RhdHVzIGFyZ3VtZW50IHRvIG90aGVyIGxvYyBkZXNjcmlwdG9yIGZ1bmN0aW9uczsgY2hlY2sKCXZhbHVlIG9mIGludGlhbGl6YXRpb24gcGFyYW1ldGVyIGFuZCBhZGQgRFdfT1BfR05VX3VuaW5pdCB0byByZXR1cm5lZAoJbG9jIGRlc2NyIGlmIGFwcHJvcHJpYXRlLgoJKG1lbV9sb2NfZGVzY3JpcHRvcik6IExpa2V3aXNlLgoJKGNvbmNhdF9sb2NfZGVzY3JpcHRvcik6IExpa2V3aXNlLgoJKGNvbmNhdG5fbG9jX2Rlc2NyaXB0b3IpOiBMaWtld2lzZS4KCShsb2NfZGVzY3JpcHRvcik6IEFkZCBwYXJhbWV0ZXIgZm9yIGluaXRpYWxpemF0aW9uIHN0YXR1czsgcGFzcyBpdCBhcwoJYXJndW1lbnQgdG8gb3RoZXIgbG9jIGRlc2NyaXB0b3IgZnVuY3Rpb24gY2FsbHMuCgkobG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlXzEpOiBBZGQgYXBwcm9wcmlhdGUgaW5pdGlhbGl6YXRpb24gc3RhdHVzCgl0byBsb2MgZGVzY3JpcHRvciBmdW5jdGlvbiBjYWxscy4KCShhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogR2V0IGluaXRpYWxpemF0aW9uIHN0YXR1cwoJZnJvbSBWQVJfTE9DQVRJT04gbm90ZTsgYWRkIGluaXRpYWxpemF0aW9uIHN0YXR1cyB0byBsb2MgZGVzY3JpcHRvcgoJZnVuY3Rpb24gY2FsbHMuCgkqIGR3YXJmMi5oIChlbnVtIGR3YXJmX2xvY2F0aW9uX2F0b20pOiBOZXcgb3AsIERXX09QX0dOVV91bmluaXQuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBXaGVuIHByaW50aW5nIGEgVkFSX0xPQ0FUSU9OIG5vdGUsIGlmCglzdGF0dXMgaXMgdW5pbml0aWFsaXplZCwgYWRkICJbdW5pbmludF0iIHRvIG91dHB1dC4KCSogY29tbW9uLm9wdCAoZnZhci10cmFja2luZy11bmluaXQpOiBOZXcgb3B0aW9uLCBzaW1pbGFyIHRvCglmdmFyLXRyYWNraW5nLCB0byB0dXJuIG9uIHRyYWNraW5nIG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzOyBjcmVhdGVzCglhIG5ldyBnbG9iYWwgZmxhZywgZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0LgoJKiBydGwuaCAoTk9URV9WQVJfTE9DQVRJT05fU1RBVFVTKTogTmV3IG1hY3JvIGZvciBhY2Nlc3NpbmcgbmV3IGZpZWxkLgoJKGVudW0gdmFyX2luaXRfc3RhdHVzKTogTmV3IHR5cGUsIGZvciB2YXIgaW5pdGlhbGl6YXRpb24gc3RhdHVzIGZpZWxkLgoJKiB2YXItdHJhY2tpbmcuYyAoc3RydWN0IGxvY2F0aW9uX2NoYWluX2RlZik6IFR3byBuZXcgZmllbGRzLCBpbml0LAoJZm9yIGluaXRpYWxpemF0aW9uIHN0YXR1cywgYW5kIHNldF9zcmMgZm9yIHRoZSBhc3NpZ25tZW50IHZhbHVlIGV4cHIuCgkodW5zaGFyZV92YXJpYWJsZSk6IE5ldyBwYXJhbWV0ZXIgZm9yIGluaXRpYWxpemF0aW9uIHN0YXR1czsKCWluaXRpYWxpemUgbmV3IGluaXQgYW5kIHNldF9zcmMgZmllbGRzLgoJKHZhcl9yZWdfc2V0KTogTmV3IHBhcmFtZXRlcnMgZm9yIGluaXRpYWxpemF0aW9uIHN0YXR1cyBhbmQgdmFsdWU7CglwYXNzIHRoZW0gdG8gc2V0X3ZhcmlhYmxlX3BhcnQuCgkodmFyX21lbV9zZXQpOiBMaWtld2lzZS4KCShnZXRfaW5pdF92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCSh2YXJfcmVnX2RlbGV0ZV9hbmRfc2V0KTogTmV3IGluaXRpYWxpemF0aW9uIHN0YXR1cyAmIHZhbHVlCglwYXJhbWV0ZXJzOyBhZGQgY2FsbCB0byBnZXRfaW5pdF92YWx1ZSBpZiBzdGF0dXMgaXMgdW5rbm93bjsgcGFzcyBuZXcKCXBhcmFtZXRlcnMgdG8gY2xvYmJlcl92YXJpYWJsZV9wYXJ0IGFuZCB2YXJfcmVnX3NldC4KCSh2YXJfbWVtX2RlbGV0ZV9hbmRfc2V0KTogTGlrZXdpc2UuCgkodmFyX3JlZ19kZWxldGUpOiBQYXNzIG51bGwgc2V0X3NyYyB2YWx1ZSB0byBjbG9iYmVyX3ZhcmlhYmxlX3BhcnQuCgkodmFyX21lbV9kZWxldGUpOiBMaWtld2lzZS4KCSh2YXJpYWJsZV91bmlvbik6IFBhc3Mgc3RhdHVzIHRvIHVuc2hhcmVfdmFyaWFibGU7IGluaXRpYWxpemUgbmV3IGluaXQKCWFuZCBzZXRfc3JjIGZpZWxkcy4gSWYgZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0IGlzIG5vdCBzZXQsIGZvcmNlCglzdGF0dXMgdG8gaW5pdGlhbGl6ZWQuCgkoYWRkX3N0b3Jlcyk6IFN0b3JlIGluc24sIHJhdGhlciB0aGFuIE5FWFRfSU5TTihpbnNuKSwgc28gaXQgY2FuIGJlCgl1c2VkIGxhdGVyIHRvIGdldCB0aGUgc2V0X3NyYyB2YWx1ZS4KCShmaW5kX3NyY19zdGF0dXMpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9zcmNfc2V0X3NyYyk6IE5ldyBmdW5jdGlvbi4KCShjb21wdXRlX2JiX2RhdGFmbG93KTogUGFzcyBpbml0IHN0YXR1cyB0byBjYWxscyB0byB2YXJfcmVnX3NldCwKCXZhcl9tZW1fc2V0LCB2YXJfcmVnX2RlbGV0ZV9hbmRfc2V0IGFuZCB2YXJfbWVtX2RlbGV0ZV9hbmRfc2V0OyBmb3IKCU1PX1NFVCwgZ2V0IHNldF9zcmMgdmFsdWUgYW5kIHBhc3MgaXQgdG8gdmFyX3JlZ19kZWxldGVfYW5kX3NldAoJYW5kIHZhcl9tZW1fZGVsZXRlX2FuZF9zZXQuCgkoZHVtcF92YXJpYWJsZSk6IFByaW50IG91dCAiW3VuaW5pdF0iIGlmIGFwcHJvcHJpYXRlLgoJKHNldF92YXJpYWJsZV9wYXJ0KTogQWRkIG5ldyBpbml0aWFsaXphdGlvbiBhbmQgc2V0X3NyYyBwYXJhbWV0ZXJzOwoJcGFzcyBzdGF0dXMgdG8gdW5zaGFyZV92YXJpYWJsZTsgc2V0IG5vZGUtPmluaXQgYW5kIG5vZGUtID5zZXRfc3JjCglmaWVsZHMgYW5kIG1vZGlmeSBzbG90IGluIGhhc2ggdGFibGUgYXBwcm9wcmlhdGVseTsgc2F2ZSB0aGUgaW5pdCBhbmQKCXNldF9zcmMgdmFsdWVzIGlmIGFwcHJvcHJpYXRlIGFuZCBhc3NpZ24gdG8gdGhlIG5ldyBub2RlLgoJKGNsb2JiZXJfdmFyaWFibGVfcGFydCk6IE5ldyBzZXRfc3JjIHBhcmFtZXRlcjsgaWYgdHdvIG5vZGVzIGhhdmUKCXNhbWUgdmFyaWFibGUgYW5kIHNhbWUgbG9jYXRpb24gYnV0IGRpZmZlcmVudCBzZXRfc3JjIChhc3NpZ25tZW50KQoJdmFsdWVzLCBjbG9iYmVyIG9sZCBub2RlLgoJKGRlbGV0ZV92YXJpYWJsZV9wYXJ0KTogUGFzcyBpbml0IHN0YXR1cyB0byB1bnNoYXJlX3ZhcmlhYmxlLgoJKGVtaXRfbm90ZV9pbnNuX3Zhcl9sb2NhdGlvbik6IEFkZCBpbml0aWFsaXplZCB2YXI7IGFzc2lnbiB2YXIncyBpbml0CglzdGF0dXMgdG8gbmV3ICdpbml0aWFsaXplZCc7IHBhc3MgbmV3IGluaXQgc3RhdHVzIGZpZWxkIHRvIGNhbGxzIHRvCglnZW5fcnR4X1ZBUl9MT0NBVElPTi4gSWYgZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0IGlzIG5vdCBzZXQsIGZvcmNlCglzdGF0dXMgdG8gaW5pdGlhbGl6ZWQuCgkoZW1pdF9ub3Rlc19pbl9iYik6IFBhc3MgaW5pdGlhbGl6YXRpb24gc3RhdHVzIHRvIGNhbGxzIHRvCgl2YXJfcmVnX3NldCwgdmFyX21lbV9zZXQsIHZhcl9yZWdfZGVsZXRlX2FuZF9zZXQgYW5kCgl2YXJfbWVtX2RlbGV0ZV9hbmRfc2V0OyBmb3IgTU9fU0VULCBnZXQgc2V0X3NyYyB2YWx1ZSBhbmQgcGFzcyBpdCB0bwoJdmFyX3JlZ19kZWxldGVfYW5kX3NldCBhbmQgdmFyX21lbV9kZWxldGVfYW5kX3NldDsgY2FsbAoJZW1pdF9ub3Rlc19mb3JfY2hhbmdlcyBvbiBORVhUX0lOU04oaW5zbikgcmF0aGVyIHRoYW4gb24gaW5zbiwgdG8KCW1ha2UgdXAgZm9yIGNoYW5nZSBpbiBhZGRfc3RvcmVzLgoJKHZ0X2FkZF9mdW5jdGlvbl9wYXJhbWV0ZXJzKTogQWRkIHN0YXR1cyB0byBjYWxscyB0bwoJc2V0X3ZhcmlhYmxlX3BhcnQuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX292ZXJyaWRlX29wdGlvbnMpOiBUdXJuIG9uIHVuaW5pdGlhbGl6ZWQKCXRyYWNraW5nIGF1dG9tYXRpY2FsbHksIGlmIHZhcl90cmFja2luZyBpcyBvbiBhbmQgdGhlIHN5c3RlbSBpcwoJMTAuNSBvciBoaWdoZXIuCgkKMjAwNy0wNy0xMyAgU2EgTGl1ICA8c2FsaXVAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy5nY2M6IEFkZCBvcHRpb25zIGZvciBhcmNoIGFuZCB0dW5lIG9uIFNQVS4KCSogY29uZmlnL3NwdS9wcmVkaWNhdGVzLm1kOiBBZGQgY29uc3RhbnQgb3BlcmFuZHMgMCBhbmQgMS4KCSogY29uZmlnL3NwdS9zcHUtYnVpbHRpbnMuZGVmOiBBZGQgYnVpbHRpbnMgZm9yIGRvdWJsZSBwcmVjaXNpb24gCglmbG9hdGluZyBwb2ludCBjb21wYXJpc29uOiBzaV9kZmNlcSwgc2lfZGZjbWVxLAlzaV9kZmNndCwgc2lfZGZjbWd0LCAKCXNpX2RmdHN2LCBzcHVfY21wZXFfMTMsIHNwdV9jbXBhYnNlcV8xLCBzcHVfY21wZ3RfMTMsIHNwdV9jbXBhYnNndF8xLAoJc3B1X3Rlc3Rzdi4KCSogY29uZmlnL3NwdS9zcHUtYy5jOiBEZWZpbmUgX19TUFVfRURQX18gd2hlbiBidWlsdGlucyBpbnZva2VkIHdpdGggCglhIENFTExFRFAgdGFyZ2V0LgoJKiBjb25maWcvc3B1L3NwdS1wcm90b3MuaDogQWRkIG5ldyBmdW5jdGlvbiBwcm90b3R5cGVzLiAKCSogY29uZmlnL3NwdS9zcHUuYyAoc3B1X292ZXJyaWRlX29wdGlvbnMpOiBDaGVjayBvcHRpb25zIC1tYXJjaCBhbmQKCS1tdHVuZS4KCShzcHVfY29tcF9pY29kZSk6IEFkZCBjb21wYXJpc29uIGNvZGUgZm9yIERGbW9kZSBhbmQgdmVjdG9yIG1vZGUuCgkoc3B1X2VtaXRfYnJhbmNoX29yX3NldCk6IFVzZSB0aGUgbmV3IGNvZGUgZm9yIERGbW9kZSBhbmQgdmVjdG9yIAoJbW9kZSBjb21wYXJpc29uLgoJKHNwdV9jb25zdF9mcm9tX2ludCk6IE5ldy4gIENyZWF0ZSBhIHZlY3RvciBjb25zdGFudCBmcm9tIDQgaW50cy4KCShnZXRfdmVjX2NtcF9pbnNuKTogTmV3LiAgR2V0IGluc24gaW5kZXggb2YgdmVjdG9yIGNvbXBhcmUgaW5zdHJ1Y3Rpb24uCgkoc3B1X2VtaXRfdmVjdG9yX2NvbXBhcmUpOiBOZXcuICBFbWl0IHZlY3RvciBjb21wYXJlLgoJKHNwdV9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIpOiBOZXcuICBFbWl0IHZlY3RvciBjb25kaXRpb25hbCBleHByZXNzaW9uLgoJKiBjb25maWcvc3B1L3NwdS5oOiBBZGQgb3B0aW9ucyAtbWFyY2ggYW5kIC1tdHVuZS4gIERlZmluZSBwcm9jZXNzb3IKCXR5cGVzIFBST0NFU1NPUl9DRUxMIGFuZCBQUk9DRVNTT1JfQ0VMTEVEUC4gIERlZmluZSBtYWNybwoJQ0FOT05JQ0FMSVpFX0NPTVBBUklTT04uCgkqIGNvbmZpZy9zcHUvc3B1Lm1kOiBBZGQgbmV3IGluc25zIGZvciBkb3VibGUgcHJlY2lzaW9uIGNvbXBhcmUKCWFuZCBkb3VibGUgcHJlY2lzaW9uIHZlY3RvciBjb21wYXJlLiAgQWRkIHZjb25kIGFuZCBzbWF4L3NtaW4gcGF0dGVybnMKCXRvIGVuYWJsZSBERm1vZGUgdmVjdG9yIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uCgkqIGNvbmZpZy9zcHUvc3B1Lm9wdDogQWRkIG9wdGlvbnMgLW1hcmNoIGFuZCAtbXR1bmUuCgkqIGNvbmZpZy9zcHUvc3B1X2ludGVybmFscy5oOiBBZGQgYnVpbHRpbnMgZm9yIENFTExFRFAgdGFyZ2V0OgoJc2lfZGZjZXEsIHNpX2RmY21lcSwgc2lfZGZjZ3QsIHNpX2RmY21ndCwgc2lfZGZ0c3YuICBBZGQgYnVpbHRpbiBmb3IKCWJvdGggQ0VMTCBhbmQgQ0VMTEVEUCB0YXJnZXRzOiBzcHVfdGVzdHN2LgoJKiBjb25maWcvc3B1L3NwdV9pbnRyaW5zaWNzLmg6IEFkZCBmbGFnIG1uZW1vbmljcyBmb3IgdGVzdCBzcGVjaWFsIAoJdmFsdWVzLgoKMjAwNy0wNy0xMyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyNzIxCgkqIHRyZWUtc3NhLWNjcC5jIChtYXliZV9mb2xkX3N0bXRfaW5kaXJlY3QpOiBQcmVzZXJ2ZQoJVFJFRV9USElTX1ZPTEFUSUxFIG9uIHRoZSBmb2xkZWQgcmVmZXJlbmNlLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IFNldCBoYXNfdm9sYXRpbGVfb3BzCglpZiB0aGUgYXJyYXkgcmVmZXJlbmNlIGhhcyBUUkVFX1RISVNfVk9MQVRJTEUgc2V0LgoKMjAwNy0wNy0xMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIG90aGVyLzMyMTg4CgkqIGRvYy9saWJnY2MudGV4aTogVXBkYXRlIERGUCBpbnRyaW5zaWNzIGZvciBEUEQgYW5kIEJJRC4KCjIwMDctMDctMTMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBnZW5ndHlwZS1sZXgubDogQWxsb3cgZGVjbGFyYXRpb25zIHRvIGJlIGluZGVudGVkLgoKMjAwNy0wNy0xMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBnaW5jbHVkZS90Z21hdGguaDogTmV3LgoJKiBjb25maWcuZ2NjOiBVc2UgR0NDJ3MgdGdtYXRoLmggb24gbm9uLWdsaWJjIHN5c3RlbXMuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChIZWFkZXJzKTogRG9jdW1lbnQgdXNlX2djY190Z21hdGguCgkqIGNvbmZpZ3VyZS5hYyAoU1RNUF9GSVhQUk9UTyk6IEhvbm9yIHVzZV9nY2NfdGdtYXRoLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA3LTA3LTEzICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9saW51eC11bndpbmQuaCAoc2hfZmFsbGJhY2tfZnJhbWVfc3RhdGUpOiBVc2UKCWNvcnJlY3QgaW5kZXggd2hlbiBzZXR0aW5nIHJlZ2lzdGVyIHNhdmUgc3RhdGUgZm9yIHhkCglyZWdpc3RlcnMuCgoyMDA3LTA3LTEzICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5jIChtYXJrX3VzZSk6IFJlbW92ZS4KCjIwMDctMDctMTIgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jICh0aHVtYjFfY29tcHV0ZV9zYXZlX3JlZ19tYXNrKTogTWFrZSBzdXJlIHNjcmF0Y2gKCXJlZyBkb2VzIG5vdCBvdmVybGFwIHJldHVybiB2YWx1ZS4KCjIwMDctMDctMTIgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtcHJlLmMgKGdldF9leHByZXNzaW9uX3Z1c2VzKTogTW92ZSBvdXQgc2lkZS1lZmZlY3QuCgkoc2V0X2V4cHJlc3Npb25fdnVzZXMpOiBEaXR0by4KCShpbml0X3ByZSk6IEluaXRpYWxpemUgZXhwcmVzc2lvbl92dXNlcy4KCjIwMDctMDctMTIgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHN0b3JlbnRkZiwgc3RvcmVudHNmKTogTmV3LgoKMjAwNy0wNy0xMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBidWlsdGlucy5jIChnZXRfcG9pbnRlcl9hbGlnbm1lbnQpOiBIb25vciBERUNMX0FMSUdOIG9uIGEKCUZVTkNUSU9OX0RFQ0wuCgkqIHRyZWUuYyAoYnVpbGRfZGVjbF9zdGF0KTogTW92ZSBjb2RlIGZyb20gaGVyZS4uLgoJKG1ha2Vfbm9kZV9zdGF0KTogLi4uIHRvIGhlcmUuICBEb24ndCB1c2VsZXNzbHkgY2xlYXIgREVDTF9VU0VSX0FMSUdOLgoJKGV4cHJfYWxpZ24pOiBIb25vciBERUNMX0FMSUdOIG9uIGEgRlVOQ1RJT05fREVDTC4gIEFkZCBjb21tZW50CglhYm91dCB1c2luZyBERUNMX0FMSUdOIG9mIExBQkVMX0RFQ0wgYW5kIENPTlNUX0RFQ0wuCgkqIHRyZWUuaCAoREVDTF9VU0VSX0FMSUdOKTogRml4IG1pc3BsYWNlZCBjb21tZW50LgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfc3RhcnRfZnVuY3Rpb24pOiBVc2UgREVDTF9BTElHTiBpbnN0ZWFkIG9mCglGVU5DVElPTl9CT1VOREFSWS4KCjIwMDctMDctMTIgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgkgICAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNTQxMwoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9idWlsdGluX3ZlY3Rvcl9hbGlnbm1lbnRfcmVhY2hhYmxlKTogTmV3LgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9idWlsdGluX3ZlY3Rvcl9hbGlnbm1lbnRfcmVhY2hhYmxlKTogTmV3LgoJKiB0cmVlLmggKGNvbnRhaW5zX3BhY2tlZF9yZWZlcmVuY2UpOiBOZXcuCgkqIGV4cHIuYyAoY29udGFpbnNfcGFja2VkX3JlZmVyZW5jZSk6IE5ldy4KCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdG9yX2FsaWdubWVudF9yZWFjaGFibGVfcCk6IE5ldy4KCSh2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdubWVudCk6IENhbGwKCXZlY3Rvcl9hbGlnbm1lbnRfcmVhY2hhYmxlX3AuCgkqIHRhcmdldC5oICh2ZWN0b3JfYWxpZ25tZW50X3JlYWNoYWJsZSk6IE5ldyBidWlsdGluLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9WRUNUT1JfQUxJR05NRU5UX1JFQUNIQUJMRSk6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3ZlY3Rvcl9hbGlnbm1lbnRfcmVhY2hhYmxlKTogTmV3LgoJKFRBUkdFVF9WRUNUT1JfQUxJR05NRU5UX1JFQUNIQUJMRSk6IERlZmluZS4KCjIwMDctMDctMTIgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0YXJnZXQuaCAoYnVpbHRpbl92ZWN0b3JpemF0aW9uX2Nvc3QpOiBBZGQgbmV3IHRhcmdldCBidWlsdGluLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9WRUNUT1JJWkVfQlVJTFRJTl9WRUNUT1JJWkFUSU9OX0NPU1QpOiBOZXcuCgkqIHRyZWUtdmVjdG9yaXplci5oIChUQVJHX1NDQUxBUl9TVE1UX0NPU1QpOiBOZXcuCgkoVEFSR19TQ0FMQVJfTE9BRF9DT1NULCBUQVJHX1NDQUxBUl9TVE9SRV9DT1NUKTogTmV3LgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfc2xwX2luc3RhbmNlKTogSW5pdGlzbGlhemUKCXVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKGNvc3RfZm9yX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJsZV9pdGVycyk6IENhbGwgY29zdF9mb3Jfc3RtdCBpbnN0ZWFkIG9mCgl1c2luZyBjb3N0IDEgZm9yIGFsbCBzY2FsYXIgc3RtdHMuIEJlIGxlc3MgY29uc2VydmF0aXZlIHdoZW4KCWVzdGltYXRpbmcgdGhlIG51bWJlciBvZiBwcm9sb2d1ZS9lcHVsb2d1ZSBpdGVyYXRpb25zLiBDYWxsCgl0YXJnZXRtLnZlY3Rvcml6ZS5idWlsdGluX3ZlY3Rvcml6YXRpb25fY29zdC4gUmV0dXJuCgltaW5fcHJvZml0YWJsZV9pdGVycy0xLgoJKHZlY3RfbW9kZWxfcmVkdWN0aW9uX2Nvc3QpOiBVc2UgVEFSR19TQ0FMQVJfVE9fVkVDX0NPU1QgZm9yCglpbml0aWFsaXphdGlvbiBjb3N0IGluc3RlYWQgb2YgVEFSR19WRUNfU1RNVF9DT1NULiBVc2UKCVRBUkdfVkVDX1RPX1NDQUxBUl9DT1NUIGluc3RlYWQgb2YgVEFSR19WRUNfU1RNVF9DT1NUIGZvciByZWR1Y3Rpb24KCWVwaWxvZ3VlIGNvZGUuIEZpeCBlcGlsb2d1ZSBjb3N0IGNvbXB1dGF0aW9uLgoJKiBjb25maWcvc3B1L3NwdS5jIChzcHVfYnVpbHRpbl92ZWN0b3JpemF0aW9uX2Nvc3QpOiBOZXcuCgkoVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX1ZFQ1RPUklaQVRJT05fQ09TVCk6IEltcGxlbWVudC4KCSogY29uZmlnL3NwdS9zcHUuaCAoVEFSR19DT05EX0JSQU5DSF9DT1NULCBUQVJHX1NDQUxBUl9TVE1UX0NPU1QpOgoJKFRBUkdfU0NBTEFSX0xPQURfQ09TVCwgVEFSR19TQ0FMQVJfU1RPUkVfQ09TVCwgVEFSR19WRUNfU1RNVF9DT1NUKToKCShUQVJHX1ZFQ19UT19TQ0FMQVJfQ09TVCwgVEFSR19TQ0FMQVJfVE9fVkVDLCBUQVJHX1ZFQ19MT0FEX0NPU1QpOgoJKFRBUkdfVkVDX1VOQUxJR05FRF9MT0FEX0NPU1QsIFRBUkdfVkVDX1NUT1JFX0NPU1QpOiBEZWZpbmUuCgoyMDA3LTA3LTEyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jb252ZXJzaW9uKTogTWFrZSBzdXJlIHRoYXQgdGhlIHJlc3VsdAoJZnJvbSBtYXliZV9mb2xkX29mZnNldF90b19yZWZlcmVuY2UgaXMgdHJpdmlhbGx5IGNvbnZlcnRpYmxlCgl0byB0aGUgZGVzaXJlZCB0eXBlIGJlZm9yZSBkb2luZyB0aGUgc2ltcGxpZmljYXRpb24uCgkoZ2ltcGxpZnlfZXhwcik6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KTogVXNlIHRoZSBjb3JyZWN0IHR5cGVzIGZvcgoJYnVpbGRpbmcgdGhlIHNpbXBsaWZpZWQgZXhwcmVzc2lvbi4KCjIwMDctMDctMTIgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMjcyOQoJKiBjZmdob29rcy5jIChjYW5fZHVwbGljYXRlX2Jsb2NrX3ApOiBEbyBub3QgZm9yYmlkIGR1cGxpY2F0aW5nIGJsb2NrcwoJdGhhdCBmYWxsdGhydSB0byBleGl0LgoKMjAwNy0wNy0xMiAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2gubWQgKHN5bUdPVE9GRjJyZWcpOiBBZGQgbWlzc2luZyBwYXJlbnRoZXNpcy4KCShzeW1EVFBPRkYycmVnKTogTGlrZXdpc2UuCgoyMDA3LTA3LTExICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjY2MwoJCgkqIHRyZWUuaCAoVkFMVUVfSEFORExFX1ZVU0VTKTogUmVtb3ZlLgoJKHN0cnVjdCB0cmVlX3ZhbHVlX2hhbmRsZSk6IFJlbW92ZSB2dXNlcy4KCgkqIHRyZWUtdm4uYyAoY3JlYXRlX3ZhbHVlX2hhbmRsZV9mb3JfZXhwcik6IERvbid0IHNldAoJVkFMVUVfSEFORExFX1ZVU0VTLiAKCgkqIHRyZWUtc3NhLXByZS5jIChleHByZXNzaW9uX3Z1c2VzKTogTmV3LgoJKGFsbG9jX2V4cHJlc3Npb25faWQpOiBTZXQgdXAgZXhwcmVzc2lvbl92dXNlcy4KCShnZXRfZXhwcmVzc2lvbl92dXNlcyk6IE5ldy4KCShzZXRfZXhwcmVzc2lvbl92dXNlcyk6IERpdHRvLgoJKGNsZWFyX2V4cHJlc3Npb25faWRzKTogTW9kaWZ5IGZvciBleHByZXNzaW9uX3Z1c2VzLgoJKHBoaV90cmFuc2xhdGVfMSk6IERpdHRvLgoJKHBoaV90cmFuc2xhdGVfc2V0KTogRGl0dG8uCgkodmFsdWVfZGllc19pbl9ibG9ja194KTogRGl0dG8KCSh2YWxpZF9pbl9zZXRzKTogRGl0dG8uCgkoYWRkX3RvX3NldHMpOiBEaXR0by4KCShmaW5kX2V4aXN0aW5nX3ZhbHVlX2V4cHIpOiBEaXR0by4KCShjcmVhdGVfdmFsdWVfaGFuZGxlX2Zvcl9leHByKTogRGl0dG8uCgkobWFrZV92YWx1ZXNfZm9yX3N0bXQpOiBEaXR0by4KCSh2dXNlX2VxdWl2KTogUmVtb3ZlLgoKMjAwNy0wNy0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAobW9zdGx5Y2xlYW4pOiBSZW1vdmUgb2JqZWN0IGZpbGVzLgoKMjAwNy0wNy0xMSAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIHRvcGxldi5jIChub19uZXdfcHNldWRvcyk6IERlbGV0ZWQuCgkqIHJ0bC5oIChub19uZXdfcHNldWRvcyk6IERlbGV0ZWQuCgkqIHRyZWUtcGFzcy5oIChwYXNzX25vX25ld19wc2V1ZG9zKTogRGVsZXRlZC4gCgkqIHBhc3Nlcy5jIChwYXNzX25vX25ld19wc2V1ZG9zKTogRGVsZXRlZC4KCSogZmluYWwuYyAocmVzdF9vZl9jbGVhbl9zdGF0ZSk6IFJlbW92ZWQgbm9fbmV3X3BzZXVkb3MuCgkocmVzdF9vZl9ub19uZXdfcHNldWRvcywgcGFzc19ub19uZXdfcHNldWRvcyk6IERlbGV0ZWQuCgkqIHN0cnVjdC1lcXVpdi5jIChydHhfZXF1aXZfcCk6IFJlcGxhY2VkIG5vX25ld19wc2V1ZG9zIHdpdGggCglyZWxvYWRfY29tcGxldGVkLgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9jcm9zc2p1bXBfdG9fZWRnZSk6IERpdHRvLiAKCSogcnRsaG9va3MuYyAoZ2VuX2xvd3BhcnRfZ2VuZXJhbCk6IERpdHRvLgoJKiBvcHRhYnMuYyAocHJlcGFyZV9vcGVyYW5kKTogRGl0dG8uCgkqIG1vZGUtc3dpdGNoaW5nLmMgKHJlc3Rfb2ZfaGFuZGxlX21vZGVfc3dpdGNoaW5nKTogRGVsZXRlZCBzZXQgb2YKCW5vX25ld19wc2V1ZG9zLgoJKiBtb2R1bG8tc2NoZWQuYyAocmVzdF9vZl9oYW5kbGVfc21zKTogRGl0dG8uCgkqIHNlZS5jIChyZXN0X29mX2hhbmRsZV9zZWUpOiBEaXR0by4KCSogaWZjdnQuYyAoaWZfY29udmVydCk6IERpdHRvLgoJKGdhdGVfaGFuZGxlX2lmX2FmdGVyX2NvbWJpbmUpOiBSZXBsYWNlZCBub19uZXdfcHNldWRvcyB3aXRoIAoJcmVsb2FkX2NvbXBsZXRlZC4KCSogaW5pdC1yZWdzLmMgKGdhdGVfaW5pdGlhbGl6ZV9yZWdzKTogRGVsZXRlZCBzZXQgb2YKCW5vX25ld19wc2V1ZG9zLgoJKiBsb3dlci1zdWJyZWcuYyAoZGVjb21wb3NlX211bHRpd29yZF9zdWJyZWdzKTogRGl0dG8uIAoJKiBiYi1yZW9yZGVyLmMgKHJlc3Rfb2ZfaGFuZGxlX3BhcnRpdGlvbl9ibG9ja3MpOiBEaXR0by4KCSogZG9jL21kLnRleGk6IENoYW5nZWQgbm9fbmV3X3BzZXVkb3MgdG8gY2FuX2NyZWF0ZV9wc2V1ZG9fcC4KCQoyMDA3LTA3LTExICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMjY2MQoJKiBjb25maWcvaTM4Ni9zc2UubWQgKCpzc2UyX3N0b3JlcV9yZXg2NCk6IEhhbmRsZSA2NGJpdCBtZW0tPnJlZyBtb3Zlcy4KCSgqdmVjX2V4dHJhY3R2MmRpXzFfc3NlMik6IERpc2FibGUgZm9yIFRBUkdFVF82NEJJVC4KCSgqdmVjX2V4dHJhY3R2MmRpXzFfcmV4NjQpOiBOZXcgaW5zbiBwYXR0ZXJuLgoKMjAwNy0wNy0xMSAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LXVud2luZC5oIChtaXBzX2ZhbGxiYWNrX2ZyYW1lX3N0YXRlKTogUmV3cml0ZQoJcmV0dXJuIGFkZHJlc3MgY2FsY3VsYXRpb24uICBTdWJzdGl0dXRlIERXQVJGX0FMVF9GUkFNRV9SRVRVUk5fQ09MVU1OCglmb3IgU0lHTkFMX1VOV0lORF9SRVRVUk5fQ09MVU1OLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFNJR05BTF9VTldJTkRfUkVUVVJOX0NPTFVNTik6IFJlbW92ZS4KCShEV0FSRl9GUkFNRV9SRUdOVU0pOiBSZXdyaXRlLgoJKERXQVJGX0FMVF9GUkFNRV9SRVRVUk5fQ09MVU1OKSBEZWZpbmUuCgoyMDA3LTA3LTExICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMnIvbTMyci5oIChJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBSZXZlcnQgcHJldmlvdXMKCWRlbHRhIGFuZCB1c2UgZ2VuX2ludF9tb2RlIGluIHBsYWNlIG9mIEdFVF9JTlQgaW5zdGVhZC4KCjIwMDctMDctMTEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiByZWctc3RhY2suYyAoc3RydWN0IHRyZWVfb3B0X3Bhc3MgcGFzc19zdGFja19yZWdzKTogTnVsbGlmeSBuYW1lCglhbmQgbGV0dGVyIGZpZWxkLgoKMjAwNy0wNy0xMSAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJKiBwYXJhbXMuZGVmIChQQVJBTV9WRVJJRllfQ0FOT05JQ0FMX1RZUEVTKTogUmVtb3ZlLgoJKFBBUkFNX1VTRV9DQU5PTklDQUxfVFlQRVMpOiBOZXc7IGRlY2lkZXMgd2hldGhlciB0byB1c2UgY2Fub25pY2FsIAoJdHlwZXMgb3Igbm90LgoJKiBwYXJhbXMuaCAoVkVSSUZZX0NBTk9OSUNBTF9UWVBFUyk6IFJlbW92ZS4KCShVU0VfQ0FOT05JQ0FMX1RZUEVTKTogTmV3LgoJKiBkb2MvaW52b2tlLnRleGkgKHZlcmlmeS1jYW5vbmljYWwtdHlwZXMpOiBSZW1vdmUuCgkodXNlLWNhbm9uaWNhbC10eXBlcyk6IEFkZC4KCjIwMDctMDctMTEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zcHUvc3B1LmMgKHNwdV9vcHRpbWl6YXRpb25fb3B0aW9ucyk6IFJlbW92ZSBzZXR0aW5nIG9mCglwYXJhbWV0ZXIgUEFSQU1fTUFYX0NPTVBMRVRFTFlfUEVFTF9USU1FUy4KCShzcHVfb3ZlcnJpZGVfb3B0aW9ucyk6IE1vdmUgaXQgaGVyZS4KCjIwMDctMDctMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNSVBTX0lTQV9MRVZFTF9TUEVDKTogSGFuZGxlIC1tNGtzYyBhbmQgLW00a3NkLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY3B1X2luZm9fdGFibGUpOiBNZW50aW9uCglNSVBTX0lTQV9MRVZFTF9TUEVDIGluIHRoZSBjb21tZW50LgoKMjAwNy0wNy0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjcxMwoJKiB0cmVlLXNzYS1zY2N2bi5jIChjb3B5X3JlZmVyZW5jZV9vcHNfZnJvbV9yZWYpOiBIYW5kbGUgUkVBTF9DU1QuCgoyMDA3LTA3LTExICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMwNDgyCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBEbyBub3QgY2hhbmdlIGZsYWdfY29tcGxleF9tZXRob2QKCWNvbmRpdGlvbmFsIHRvIGZsYWdfaXNvYzk5LgoJKGNfY29tbW9uX2luaXRfb3B0aW9ucyk6IERvIGl0IGhlcmUsIHVuY29uZGl0aW9uYWxseS4KCjIwMDctMDctMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI1ODkKCSogZG9jL3RyZWUtc3NhLnRleGkgKFJvdWdoIEdJTVBMRSBHcmFtbWFyKTogQWRkIG1pc3NpbmcgcnVsZS4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX21pbl9pbnZhcmlhbnQpOiBDbGFyaWZ5IGhlYWQgY29tbWVudC4KCSogdHJlZS1zc2EtcHJvcGFnYXRlLmMgKHZhbGlkX2dpbXBsZV9leHByZXNzaW9uX3ApOiBOZXcKCXByZWRpY2F0ZSwgZXh0cmFjdGVkIGZyb20uLi4KCShzZXRfcmhzKTogLi4uaGVyZS4gIENhbGwgaXQgZm9yIHRoZSBleHByZXNzaW9uIG9uIGVudHJ5LgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuaCAodmFsaWRfZ2ltcGxlX2V4cHJlc3Npb25fcCk6IERlY2xhcmUuCgkqIHRyZWUtc3NhLXNjY3ZuLmM6IEluY2x1ZGUgdHJlZS1zc2EtcHJvcGFnYXRlLmguCgkoc2ltcGxpZnlfYmluYXJ5X2V4cHJlc3Npb24pOiBVc2UgdmFsaWRfZ2ltcGxlX2V4cHJlc3Npb25fcAoJdG8gdmFsaWRhdGUgdGhlIHNpbXBsaWZpY2F0aW9uLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2Etc2Njdm4ubyk6IERlcGVuZHMgb24gdHJlZS1zc2EtcHJvcGFnYXRlLmguCgoyMDA3LTA3LTExICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBEZWZpbmUgdG8KCURXQVJGMl9ERUJVRyBvbiAzMiBiaXQgdGFyZ2V0IHRvby4KCShEV0FSRjJfVU5XSU5EX0lORk8pOiBSZW9yZ2FuaXplIDY0LWJpdCB2cyAzMi1iaXQgZGVmaW5pdGlvbi4gCgoyMDA3LTA3LTExICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMnIvbTMyci5oIChJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBQcm92aWRlIGFsdGVybmF0aXZlCgl2ZXJzaW9uIGZvciA2NC1iaXQgaG9zdHMuCgoyMDA3LTA3LTEwICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX1NZTkNJKTogTmV3IHRhcmdldCBjYXBhYmlsaXR5CglwcmVkaWNhdGUuCgkoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogRW1pdCBjbGVhcl9jYWNoZSBpbnNuIGluc3RlYWQgb2YgIGxpYnJhcnkKCWNhbGwuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19leHBhbmRfc3luY2lfbG9vcCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoVU5TUEVDX0NMRUFSX0hBWkFSRCk6IE5ldyBjb25zdGFudC4KCShVTlNQRUNfUkRIV1IpOiBTYW1lLgoJKFVOU1BFQ19TWU5DSSk6IFNhbWUuCgkoVU5TUEVDX1NZTkMpOiBTYW1lLgoJKGNsZWFyX2NhY2hlKTogTmV3IGV4cGFuZC4KCShzeW5jKTogTmV3IGluc24uCgkoc3luY2kpOiBTYW1lLgoJKHJkaHdyKTogU2FtZS4KCShjbGVhcl9oYXphcmQpOiBTYW1lLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2V4cGFuZF9zeW5jaV9sb29wKTogRGVjbGFyZQoJZnVuY3Rpb24uCgkqIHRlc3RzdWl0ZS9nY2MudGFyZ2V0L21pcHMvY2xlYXItY2FjaGUtMS5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRlL2djYy50YXJnZXQvbWlwcy9jbGVhci1jYWNoZS0yLmM6IE5ldyB0ZXN0LgoKMjAwNy0wNy0xMCAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9yZWdfcnR4KTogQ2hlY2sgY2FuX2NyZWF0ZV9wc2V1ZG9fcCByYXRoZXIgdGhhbgoJbm9fbmV3X3BzZXVkb3MuCgoyMDA3LTA3LTEwICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9DTEVBUl9DQUNIRSk6IE5ldyBidWlsdGluLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9fX2NsZWFyX2NhY2hlKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluKTogQ2FsbCBleHBhbmRfYnVpbHRpbl9fX2NsZWFyX2NhY2hlIGZvcgoJQlVJTFRfSU5fQ0xFQVJfQ0FDSEUgY2FzZS4KCSogZG9jL2V4dGVuZC50ZXhpIChfX2J1aWx0aW5fX19jbGVhcl9jYWNoZSk6IERvY3VtZW50IG5ldyBidWlsdGluLgoJKiBkb2MvbWQudGV4aSAoY2xlYXJfY2FjaGUpOiBEb2N1bWVudCBuZXcgaW5zdHJ1Y3Rpb24gcGF0dGVybi4KCSogdGVzdHN1aXRlL2djYy5kZy9idWlsdGlucy02NC5jOiBOZXcgdGVzdC4KCjIwMDctMDctMTEgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL2NyaXMvY3Jpcy5tZCAoIm1vdnNpIik6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKMjAwNy0wNy0wOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgMzI2MTcKCSogYy1jb21tb24uYyAoY19hbGlnbm9mX2V4cHIpOiBMb29rIGF0IERFQ0xfQUxJR04gb2YKCUZVTkNUSU9OX0RFQ0xzLgoJKGhhbmRsZV9hbGlnbmVkX2F0dHJpYnV0ZSk6IEFsbG93IHVzZSBvbiBGVU5DVElPTl9ERUNMcy4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uKTogSG9ub3IgREVDTF9BTElHTgoJZm9yIEZVTkNUSU9OX0RFQ0xzLiAgRG9uJ3QgdXNlIGFsaWduX2Z1bmN0aW9uc19sb2cgaWYKCURFQ0xfVVNFUl9BTElHTi4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogUHJpbnQgREVDTF9BTElHTiBhbmQgREVDTF9VU0VSX0FMSUdOCglldmVuIGZvciBGVU5DVElPTl9ERUNMcy4KCSogYy1kZWNsLmMgKG1lcmdlX2RlY2xzKTogUHJvcGFnYXRlIERFQ0xfQUxJR04gZXZlbiBmb3IKCUZVTkNUSU9OX0RFQ0xzLgoJKiB0cmVlLmggKERFQ0xfQUxJR04pOiBVcGRhdGUgZm9yIG5ldyBsb2NhdGlvbiBvZiAnYWxpZ24nLgoJKERFQ0xfRlVOQ1RJT05fQ09ERSk6IFVwZGF0ZSBmb3IgbmV3IGxvY2F0aW9uIGFuZCBuYW1lIG9mCgknZnVuY3Rpb25fY29kZScuCgkoREVDTF9PRkZTRVRfQUxJR04pOiBVcGRhdGUgZm9yIG5ldyBsb2NhdGlvbiBvZiAnb2ZmX2FsaWduJy4KCShzdHJ1Y3QgdHJlZV9kZWNsX2NvbW1vbik6IE1vdmUgJ2FsaWduJyBhbmQgJ29mZl9hbGlnbicgb3V0CglvZiB1bmlvbiwgZW5zdXJlIHRoZXkncmUgc3RpbGwgb24gYSAzMi1iaXQgYm91bmRhcnkuICBSZW1vdmUKCW90aGVyIGZpZWxkcyBpbiB1bmlvbiAndTEnLgoJKHN0cnVjdCB0cmVlX2Z1bmN0aW9uX2RlY2wpOiBBZGQgZmllbGQgJ2Z1bmN0aW9uX2NvZGUnIHJlcGxhY2luZwoJJ3UxLmYnIGluIHRyZWVfZGVjbF9jb21tb24uCgkqIHRyZWUuYyAoYnVpbGRfZGVjbF9zdGF0KTogU2V0IGluaXRpYWwgdmFsdWUgb2YgREVDTF9BTElHTi4KCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogQWRkICdhbGlnbmVkJyBhdHRyaWJ1dGUuCgkoVmFyaWFibGUgQXR0cmlidXRlcyk6IENyb3NzLXJlZmVyZW5jZSAnYWxpZ25lZCcgYXR0cmlidXRlCgl0byBGdW5jdGlvbiBBdHRyaWJ1dGVzLgoJKiBmbGFncy5oIChmb3JjZV9hbGlnbl9mdW5jdGlvbnNfbG9nKTogRGVsZXRlLgoJKiB0b3BsZXYuYyAoZm9yY2VfYWxpZ25fZnVuY3Rpb25zX2xvZyk6IERlbGV0ZS4KCjIwMDctMDctMTAgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzMyNzA4CgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAodmVjX2NvbmNhdHYyZGkpOiBEaXNhYmxlIGZvciBUQVJHRVRfNjRCSVQuCgkoKnZlY19jb25jYXR2MmRpX3JleCk6IE5ldyBpbnNuIHBhdHRlcm4uCgoyMDA3LTA3LTEwICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCglQUiB0YXJnZXQvMzI1MzgKCSogY29uZmlnL21pcHMvaXJpczYuaCAoTElCR0NDX1NQRUMpOiBBZGQgbGlibS4KCjIwMDctMDctMTAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJUmVwbGFjZSBub19uZXdfcHNldWRvcyBpbiBiYWNrZW5kcy4KCSogcnRsLmggKGNhbl9jcmVhdGVfcHNldWRvX3ApOiBEZWZpbmUuCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfaW5kaXJlY3RfZGF0YV9yZWZlcmVuY2UpOiBVc2UKCWNhbl9jcmVhdGVfcHNldWRvX3AgKCkgaW5zdGVhZCBvZiBub19uZXdfcHNldWRvcy4KCShtYWNob3BpY19pbmRpcmVjdF9kYXRhX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKG1hY2hvcGljX2xlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2xlZ2l0aW1pemVfYWRkcmVzcyk6IExpa2V3aXNlLgoJKGFscGhhX2VtaXRfc2V0X2NvbnN0XzEpOiBMaWtld2lzZS4KCShhbHBoYV9lbWl0X3NldF9jb25zdCk6IExpa2V3aXNlLgoJKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfbW92ZSk6IExpa2V3aXNlLgoJKGFscGhhX3NwbGl0X2NvbmRpdGlvbmFsX21vdmUpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kICh2YXJpb3VzIHNwbGl0dGVycyk6IExpa2V3aXNlLgoJKG1vdnRpKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCShhcm1fbG9hZF9waWNfcmVnaXN0ZXIpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0ubWQgKGFkZHNpMywgc3Vic2kzLCBhbmRzaTMsIGlvcnNpMyk6IExpa2V3aXNlLgoJKG1vdmRpLCBtb3ZzaSwgbW92aGksIG1vdnFpLCBtb3ZzZiwgbW92ZGYpOiBMaWtld2lzZS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jcmlzL2NyaXMuYyAoY3Jpc19leHBhbmRfcGljX2NhbGxfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kIChtb3ZzaSk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoc3ltR09UMnJlZ19oaWxvKTogTGlrZXdpc2UuCgkoc3ltR09UT0ZGMnJlZ19oaWxvKTogTGlrZXdpc2UuCgkoc3ltR1BSRUwycmVnLCBzeW1HUFJFTDJyZWdfaGlsbyk6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGluc3YsIGV4dHp2KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfbW92ZSk6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX3ZlY3Rvcl9tb3ZlKTogTGlrZXdpc2UuCgkoaXg4Nl9wcmVwYXJlX2ZwX2NvbXBhcmVfYXJncyk6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX2NhcnJ5X2ZsYWdfY29tcGFyZSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0bHNfZHluYW1pY19nbnUyXzMyKTogTGlrZXdpc2UuCgkodGxzX2R5bmFtaWNfZ251Ml9jb21iaW5lXzMyKTogTGlrZXdpc2UuCgkodGxzX2R5bmFtaWNfZ251Ml82NCwgdGxzX2R5bmFtaWNfZ251Ml9jb21iaW5lXzY0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfbW92ZSk6IExpa2V3aXNlLgoJKGlhNjRfZXhwYW5kX21vdnhmX21vdnJmKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobTMyY19wcmVwYXJlX21vdmUpOiBMaWtld2lzZS4KCShtMzJjX3NwbGl0X21vdmUpOiBMaWtld2lzZS4KCShtMzJjX2V4cGFuZF9pbnN2KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKG1vdnNpKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19mb3JjZV90ZW1wb3JhcnkpOiBMaWtld2lzZS4KCShtaXBzX3NwbGl0X3N5bWJvbCk6IExpa2V3aXNlLgoJKG1pcHNfbW92ZV9pbnRlZ2VyKTogTGlrZXdpc2UuCgkobWlwc19sZWdpdGltaXplX2NvbnN0X21vdmUpOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92c2kpOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmMgKGVtaXRfbW92ZV9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlKTogTGlrZXdpc2UuCgkocnM2MDAwX2dvdF9yZWdpc3Rlcik6IExpa2V3aXNlLgoJKGNyZWF0ZV9UT0NfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkocnM2MDAwX21hY2hvcGljX2xlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGFkZDxtb2RlPjMpOiBMaWtld2lzZS4KCSh2YXJpb3VzIHNwbGl0dGVycyk6IExpa2V3aXNlLgoJKGlvcnNpMywgeG9yc2kzLCBpb3JkaTMsIHhvcmRpMyk6IExpa2V3aXNlLgoJKG1vdnNpX2dvdCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKGVtaXRfc3ltYm9saWNfbW92ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChtb3ZoaSwgbW92cWkpOiBMaWtld2lzZS4KCShsb2FkX211bHRpcGxlLCBzdG9yZV9tdWx0aXBsZSk6IExpa2V3aXNlLgoJKiBjb25maWcvc2NvcmUvc2NvcmUuYyAoc2NvcmVfZm9yY2VfdGVtcG9yYXJ5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChwcmVwYXJlX21vdmVfb3BlcmFuZHMpOiBMaWtld2lzZS4KCShwcmVwYXJlX2NicmFuY2hfb3BlcmFuZHMpOiBMaWtld2lzZS4KCShlbWl0X2ZwdV9zd2l0Y2gpOiBMaWtld2lzZS4KCShmcHNjcl9zZXRfZnJvbV9tZW0pOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kIChtb3ZkaWNjLCBtb3ZzaWNjLCBtb3ZzaWNjX3VtaW4pOiBMaWtld2lzZS4KCShhZGRkaTMsIHN1YnNpMyk6IExpa2V3aXNlLgoJKHZhcmlvdXMgc3BsaXR0ZXJzKTogTGlrZXdpc2UuCgkoZGl2c2lfaW52X2ZwX2NvbWJpbmUpOiBMaWtld2lzZS4KCShzeW1HT1RfbG9hZCwgc3ltR09UT0ZGMnJlZywgc3ltRFRQT0ZGMnJlZyk6IExpa2V3aXNlLgoJKHNlcSwgc2x0LCBzbGUsIHNndCwgc2dlLCBzZ3R1LCBzbHR1LCBzbGV1LCBzZ2V1KTogTGlrZXdpc2UuCgkoc25lKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9wcmVkaWNhdGVzLm1kICh4b3Jfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAobGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG1vdnNpX3BpY19sYWJlbF9yZWYpOiBMaWtld2lzZS4KCShtb3ZkaV9waWNfbGFiZWxfcmVmKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcHUvc3B1LmMgKHNwdV9zcGxpdF9pbW1lZGlhdGUpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kICh2YXJpb3VzIHNwbGl0dGVycyk6IFJlbW92ZSB0ZXN0Cgkhbm9fbmV3X3BzZXVkb3MgfHwgcmVsb2FkX2NvbXBsZXRlZC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X291dHB1dF9taV90aHVuayk6IERvbid0IHNldAoJbm9fbmV3X3BzZXVkb3MuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zY29yZS9zY29yZS5jICh0aF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgoyMDA3LTA3LTEwICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyNjY0CgkqIG1vZGUtc3dpdGNoaW5nLmMgKGNyZWF0ZV9wcmVfZXhpdCk6IFNraXAgYmFycmllciBpbnNucy4KCjIwMDctMDctMTAgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoc2Nldl9jb25zdF9wcm9wKTogQWRkIGFyZ3VtZW50cyB0bwoJZm9yY2VfZ2ltcGxlX29wZXJhbmRfYnNpLgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChyZXdyaXRlX3VzZV9ub25saW5lYXJfZXhwciwKCXJld3JpdGVfdXNlX2NvbXBhcmUpOiBEaXR0by4KCSogdHJlZS1zc2EtYWRkcmVzcy5jIChnaW1wbGlmeV9tZW1fcmVmX3BhcnRzLCBjcmVhdGVfbWVtX3JlZik6CglEaXR0by4KCSogdHJlZS1zc2EtaWZjb21iaW5lLmMgKGlmY29tYmluZV9pZmFuZGlmKTogRGl0dG8uCgkqIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYyAoaXNzdWVfcHJlZmV0Y2hfcmVmKTogRGl0dG8uCgkqIGxhbWJkYS1jb2RlLmMgKHJlcGxhY2VfdXNlc19lcXVpdl90b194X3dpdGhfeSk6IERpdHRvLgoJKiB0cmVlLXByb2ZpbGUuYyAocHJlcGFyZV9pbnN0cnVtZW50ZWRfdmFsdWUsCgl0cmVlX2dlbl9pbnRlcnZhbF9wcm9maWxlciwgdHJlZV9nZW5fcG93Ml9wcm9maWxlciwKCXRyZWVfZ2VuX29uZV92YWx1ZV9wcm9maWxlciwgdHJlZV9nZW5faWNfcHJvZmlsZXIsCgl0cmVlX2dlbl9pY19mdW5jX3Byb2ZpbGVyLCB0cmVlX2dlbl9hdmVyYWdlX3Byb2ZpbGVyLAoJdHJlZV9nZW5faW9yX3Byb2ZpbGVyKTogRGl0dG8uCgkqIHRyZWUtc3NhLXJlYXNzb2MuYyAobmVnYXRlX3ZhbHVlKTogRGl0dG8uCgkqIG1hdHJpeC1yZW9yZy5jICh0cmFuc2Zvcm1fYWNjZXNzX3NpdGVzLCB0cmFuc2Zvcm1fYWxsb2NhdGlvbl9zaXRlcyk6CglVc2UgZm9yY2VfZ2ltcGxlX29wZXJhbmRfYnNpLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfdXBkYXRlX2l2c19hZnRlcl92ZWN0b3JpemVyKTogRGl0dG8uCgkqIHRyZWUtaWYtY29udi5jIChhZGRfdG9fZHN0X3ByZWRpY2F0ZV9saXN0LAoJZmluZF9waGlfcmVwbGFjZW1lbnRfY29uZGl0aW9uKTogRGl0dG8uCgkqIGdpbXBsaWZ5LmMgKGZvcmNlX2dpbXBsZV9vcGVyYW5kX2JzaSk6IEFkZCBiZWZvcmUgYW5kIG0gYXJndW1lbnRzLgoJQ2FsbCBtYXJrX3N5bWJvbHNfZm9yX3JlbmFtaW5nIGZvciBuZXcgc3RhdGVtZW50cy4KCSogdHJlZS1mbG93LmggKGZvcmNlX2dpbXBsZV9vcGVyYW5kX2JzaSk6IERlY2xhcmF0aW9uIGNoYW5nZWQuCgoyMDA3LTA3LTEwICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY2ZnaG9va3MuYyAocmVtb3ZlX2VkZ2UpOiBOZXcgZnVuY3Rpb24uCgkocmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoLCByZW1vdmVfYnJhbmNoLCBtZXJnZV9ibG9ja3MpOiBVcGRhdGVkCglsb29wIGV4aXQgcmVzY2Fucy4KCSogY2ZnaG9va3MuaCAocmVtb3ZlX2VkZ2UpOiBEZWNsYXJlLgoJKiBjZmcuYyAocmVtb3ZlX2VkZ2UpOiBSZW5hbWVkIHRvIHJlbW92ZV9lZGdlX3Jhdy4KCSogYmFzaWMtYmxvY2suaCAocmVtb3ZlX2VkZ2UpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkIHRvIHJlbW92ZV9lZGdlX3Jhdy4KCjIwMDctMDctMDkgIFdvbGZnYW5nIEdlbGxlcmljaCAgPGdlbGxlcmljaEBkZS5pYm0uY29tPgoKCSogb3B0YWJzLmg6IEFkZGVkIGRlY2xhcmF0aW9uIGZvciBzaWduYml0X29wdGFiLiAgCgkqIG9wdGFicy5jOiAoaW5pdF9vcHRhYnMpOiBBZGRlZCBpbml0aWFsaXphdGlvbiBmb3Igc2lnbmJpdF9vcHRhYi4KCSogZ2Vub3B0aW5pdC5jIChvcHRhYnMpOiBBZGRlZCBlbnRyeSBmb3Igc2lnbmJpdCBpbnNucy4gIAoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zaWduYml0KTogQWRkZWQgY29kZSB0byB1c2UgYSBzaWduYml0CglpbnNuLCBpZiBhdmFpbGFibGUuICAKCSogY29uZmlnL3MzOTAvczM5MC5oIChTMzkwX1REQ19TSUdOQklUX1NFVCk6IE5ldyBjb25zdGFudC4gIAoJKiBjb25maWcvczM5MC9zMzkwLm1kIChzaWduYml0PG1vZGU+Mik6IE5ldyBleHBhbmRlci4gIAoKMjAwNy0wNy0wOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzI2OTgKCSogZm9sZC1jb25zdC5jIChmb2xkX3BsdXNtaW51c19tdWx0X2V4cHIpOiBNb3ZlIGNvbnN0YW50Cglhcmd1bWVudHMgc2Vjb25kIHRvIGFsbG93IGRlY29tcG9zaW5nLgoKMjAwNy0wNy0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQG9saXZhLmF0aG9tZS5sc2QuaWMudW5pY2FtcC5icj4KCglSZXZlcnQ6CgkyMDA3LTA3LTA2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCVBSIGRlYnVnLzIzNTUxCgkqIHRyZWUtc3NhLWNvcHlyZW5hbWUuYyAoY29weV9yZW5hbWVfcGFydGl0aW9uX2NvYWxlc2NlKToKCURpc3JlZ2FyZCBERUNMX0ZST01fSU5MSU5FLgoKMjAwNy0wNy0wOSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMjc4NTUKCSogZG9jL2ludm9rZS50ZXhpOiBBZGQgZnRyZWUtcmVhc3NvYyBmbGFnLgoJKiBjb21tb24ub3B0IChmdHJlZS1yZWFzc29jKTogTmV3IGZsYWcuCgkqIHRyZWUtc3NhLXJlYXNzb2MuYyAoZ2F0ZV90cmVlX3NzYV9yZWFzc29jKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShzdHJ1Y3QgdHJlZV9vcHRfcGFzcyBwYXNzX3JlYXNzb2MpOiBVc2UgZ2F0ZV90cmVlX3NzYV9yZWFzc29jLgoKMjAwNy0wNy0wOSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjY4MQoJKiB0cmVlLWlmLWNvbnYuYyAoZmluZF9waGlfcmVwbGFjZW1lbnRfY29uZGl0aW9uKTogVXNlIHRoZSBjb25kaXRpb24KCXNhdmVkIGluIHNlY29uZF9lZGdlLT5hdXggd2hlbiBmaXJzdF9iYiBpcyBhIGxvb3AgaGVhZGVyLgoKMjAwNy0wNy0wOSAgSmFuIEhVYmlja2EgIDxqaEBzdXNlLmN6PgoKCSogY3NlLmMgKGNzZV9pbnNuKTogQXZvaWQgaW52YWxpZCBzaGFyaW5nIG9uIHRyaWFsIHJlcGxhY2VtZW50LgoKMjAwNy0wNy0wOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogYy1kZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRG8gbm90IHByb21vdGUgcmV0dXJuIHR5cGUuCgoyMDA3LTA3LTA4ICBEYW5pZWwgRnJhbmtlICA8ZnJhbmtlLmRhbmllbEBnbWFpbC5jb20+CgoJKiBmdW5jdGlvbi5jIChkb193YXJuX3VudXNlZF9wYXJhbWV0ZXIpOiBEbyBub3Qgd2FybiBpZgoJVFJFRV9OT19XQVJOSU5HIGlzIHNldC4KCjIwMDctMDctMDggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkb2MvaW52b2tlLnRleGkgKERFQyBBbHBoYS9WTVMgT3B0aW9ucyk6IEZpeCB0eXBvLgoKMjAwNy0wNy0wOCAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCVJldmVydCB0aGlzIHBhdGNoOgoJMjAwNy0wNy0wNiAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBNYWtlIERPTExBUlNfSU5fSURFTlRJRklFUlMKCWFwcGx5IHRvIGFzc2VtYmx5IGxhbmd1YWdlLCB0b28uCgkqIGRvYy90bS50ZXhpIChET0xMQVJTX0lOX0lERU5USUZJRVJTKTogVXBkYXRlLgoKMjAwNy0wNy0wNyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJUmV2ZXJ0IChub3RlIHRoZSBzY2N2biBwb3J0aW9ucyBhcmUgKm5vdCogcmV2ZXJ0ZWQpCgkyMDA3LTA3LTA2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjM0ODgKCgkqIHRyZWUtdm4uYyAoc2V0X3ZhbHVlX2hhbmRsZSk6IFVzZSBkZWNsX3ZoX21hcCBmb3IgZGVjbCB2YWx1ZQoJaGFuZGxlcy4KCSogdHJlZS1mbG93LWlubGluZS5oIChnZXRfdmFsdWVfaGFuZGxlKTogRGl0dG8uCgkqIHRyZWUtc3NhLXByZS5jIChkZWNsX3ZoX21hcCk6IE5ldy4KCShkZWNsX25vZGVfcG9vbCk6IE5ldy4KCShjYW5fdmFsdWVfbnVtYmVyX29wZXJhdGlvbik6IFN1cHBvcnQgREVDTF9QLgoJKGNhbl9QUkVfb3BlcmF0aW9uKTogRGl0dG8uCgkoY3JlYXRlX2V4cHJlc3Npb25fYnlfcGllY2VzKTogRGl0dG8uCgkoZmluZF9leGlzdGluZ192YWx1ZV9leHByKTogTW9kaWZ5IHRvIGRpZmZlcm5ldGlhdGUgYmV0d2VlbgoJYWRkcmVzc2luZyBhbmQgdG9wIGxldmVsLgoJKGNyZWF0ZV92YWx1ZV9oYW5kbGVfZm9yX2V4cHIpOiBIYW5kbGUgREVDTCdzLgoJKHBvb2xpZnlfdHJlZSk6IERpdHRvLgoJKG1ha2VfdmFsdWVzX2Zvcl9waGkpOiBEb24ndCBpbnNlcnQgaW50byBQSElfR0VOIGR1cmluZyBGUkUuCgkobWFrZV92YWx1ZXNfZm9yX3N0bXQpOiBIYW5kbGUgREVDTCdzIHByb3Blcmx5LgoJKGluaXRfcHJlKTogUmVvcmcgdG8gbm90IGluaXQgdXNlbGVzcyB0aGluZ3MgZHVyaW5nIEZSRS4KCShmaW5pX3ByZSk6IERpdHRvLgoJKiB0cmVlLWZsb3cuaDogSW5jbHVkZSBwb2ludGVyLXNldC5oLgoJKGRlY2xfdmhfbWFwKTogRGVjbGFyZS4KCSogTWFrZWZpbGUuaW4gKFRSRUVfRkxPV19IKTogQWRkIHBvaW50ZXItc2V0LmgKCjIwMDctMDctMDcgRXJpYyBXZWRkaW5ndG9uICA8ZXdlZGRpbmd0b25AY3NvLmF0bWVsLmNvbT4KCgkqIGNvbmZpZy9hdnIvY29uc3RyYWludHMubWQgKGRlZmluZV9tZW1vcnlfY29uc3RyYWludCAiUSIpOiBGaXgKCXRoZSBjb25zdHJhaW50IGRlc2NyaXB0aW9uLgoJKiBkb2MvbWQudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gb2YgQVZSIGNvbnN0cmFpbnRzLgoKMjAwNy0wNy0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhdXRvLWluYy1kZWMuYywgY29uZmlnL2FybS9hcm0uYywKCWNvbmZpZy9tMzJyL2NvbnN0cmFpbnRzLm1kLCBjb25maWcvbWlwcy9taXBzLm1kLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuYywgY3NlbGliLmMsIGRjZS5jLCBkZi1jb3JlLmMsCglkZi1wcm9ibGVtcy5jLCBkZi1zY2FuLmMsIGRmLmgsIGRzZS5jLCBnaW1wbGlmeS5jLAoJdHJlZS1pZi1jb252LmMsIHRyZWUtc3NhLXNjY3ZuLmMsIHRyZWUtc3NhLmM6IEZpeCBjb21tZW50Cgl0eXBvcy4gIEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogZG9jL2ludm9rZS50ZXhpLCBkb2MvcnRsLnRleGk6IEZpeCB0eXBvcy4KCgkqIGNmZ3J0bC5jIChkZWxldGVfaW5zbl9jaGFpbl9hbmRfZWRnZXMpOiBSZW1vdmUuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgZGVsZXRlX2luc25fY2hhaW5fYW5kX2VkZ2VzLgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAocmVhbGxvY192b3AsIHJlYWxsb2NfdmRlZiwKCXJlYWxsb2NfdnVzZSk6IFJlbW92ZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHJlYWxsb2NfdmRlZgoJYW5kIHJlYWxsb2NfdnVzZS4KCjIwMDctMDctMDYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8yMzQ4OAoKCSogdHJlZS1zc2Etc2Njdm4uYyAoZXhwcl9oYXNfY29uc3RhbnRzKTogSGFuZGxlIHRjY19kZWNsYXJhdGlvbi4KCSh0cnlfdG9fc2ltcGxpZnkpOiBEaXR0by4KCSh2aXNpdF91c2UpOiBEaXR0by4KCSogdHJlZS12bi5jIChzZXRfdmFsdWVfaGFuZGxlKTogVXNlIGRlY2xfdmhfbWFwIGZvciBkZWNsIHZhbHVlCgloYW5kbGVzLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGdldF92YWx1ZV9oYW5kbGUpOiBEaXR0by4KCSogdHJlZS1zc2EtcHJlLmMgKGRlY2xfdmhfbWFwKTogTmV3LgoJKGRlY2xfbm9kZV9wb29sKTogTmV3LgoJKGNhbl92YWx1ZV9udW1iZXJfb3BlcmF0aW9uKTogU3VwcG9ydCBERUNMX1AuCgkoY2FuX1BSRV9vcGVyYXRpb24pOiBEaXR0by4KCShjcmVhdGVfZXhwcmVzc2lvbl9ieV9waWVjZXMpOiBEaXR0by4KCShmaW5kX2V4aXN0aW5nX3ZhbHVlX2V4cHIpOiBNb2RpZnkgdG8gZGlmZmVybmV0aWF0ZSBiZXR3ZWVuCglhZGRyZXNzaW5nIGFuZCB0b3AgbGV2ZWwuCgkoY3JlYXRlX3ZhbHVlX2hhbmRsZV9mb3JfZXhwcik6IEhhbmRsZSBERUNMJ3MuCgkocG9vbGlmeV90cmVlKTogRGl0dG8uCgkobWFrZV92YWx1ZXNfZm9yX3BoaSk6IERvbid0IGluc2VydCBpbnRvIFBISV9HRU4gZHVyaW5nIEZSRS4KCShtYWtlX3ZhbHVlc19mb3Jfc3RtdCk6IEhhbmRsZSBERUNMJ3MgcHJvcGVybHkuCgkoaW5pdF9wcmUpOiBSZW9yZyB0byBub3QgaW5pdCB1c2VsZXNzIHRoaW5ncyBkdXJpbmcgRlJFLgoJKGZpbmlfcHJlKTogRGl0dG8uCgkqIHRyZWUtZmxvdy5oOiBJbmNsdWRlIHBvaW50ZXItc2V0LmguCgkoZGVjbF92aF9tYXApOiBEZWNsYXJlLgoJKiBNYWtlZmlsZS5pbiAoVFJFRV9GTE9XX0gpOiBBZGQgcG9pbnRlci1zZXQuaAoJCQoyMDA3LTA3LTA2ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IE1ha2UgRE9MTEFSU19JTl9JREVOVElGSUVSUwoJYXBwbHkgdG8gYXNzZW1ibHkgbGFuZ3VhZ2UsIHRvby4KCSogZG9jL3RtLnRleGkgKERPTExBUlNfSU5fSURFTlRJRklFUlMpOiBVcGRhdGUuCgoyMDA3LTA3LTA2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjQ0MQoJKiBidWlsdGlucy5jIChzdGRfZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBEb24ndCB1c2UgbWFrZV90cmVlLgoKMjAwNy0wNy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKCpwcmVmZXRjaF9pNCk6IERpc2FibGUgZm9yIFRBUkdFVF9WWFdPUktTX1JUUC4KCShwcmVmZXRjaCk6IExpa2V3aXNlIGlmICJwcmVmIiB3b3VsZCBiZSB1c2VkLgoKMjAwNy0wNy0wNiAgSm9zaCBDb25uZXIgIDxqY29ubmVyQGFwcGxlLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyNjAyCglQUiBtaWRkbGUtZW5kLzMyNjAzCgkqIGNhbGxzLmMgKHN0b3JlX29uZV9hcmcpOiBIYW5kbGUgYXJndW1lbnRzIHdoaWNoIGFyZSBwYXJ0aWFsbHkKCW9uIHRoZSBzdGFjayB3aGVuIGRldGVjdGluZyBhcmd1bWVudCBvdmVybGFwLgoKMjAwNy0wNy0wNiAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIHJlbG9hZDEuYyAoY2hvb3NlX3JlbG9hZF9yZWdzKTogU2V0IHJlbG9hZF9zcGlsbF9pbmRleCBmb3IgcmVncwoJY2hvc2VuIGR1cmluZyBmaW5kX3JlbG9hZHMuCgoyMDA3LTA3LTA2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jYWxsX2V4cHIpOiBQcmVmZXIgREVDTF9BUkdVTUVOVFMgb3ZlcgoJVFlQRV9BUkdfVFlQRVMgZm9yIHZlcmlmaWNhdGlvbiBvZiBhcmd1bWVudCB0eXBlcy4gIFVzZQoJREVDTF9BUkdfVFlQRSBpbnN0ZWFkIG9mIHRoZSBQQVJNX0RFQ0wgdHlwZS4gIFRha2UgZXhjZXNzCglwYXJhbWV0ZXJzIGFzIHZhcmlhYmxlIGFyZ3VtZW50cy4KCjIwMDctMDctMDYgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBsaWJnY2MyLmggKHdvcmRfdHlwZSk6IFR5cGUgZGVmaW5pdGlvbiByZW1vdmVkLgoJKGNtcF9yZXR1cm5fdHlwZSwgc2hpZnRfY291bnRfdHlwZSk6IFR5cGUgZGVmaW5pdGlvbnMgYWRkZWQuCgkoX19sc2hyZGkzLCBfX2FzaGxkaTMsIF9fYXNocmRpMyk6IHdvcmRfdHlwZSBvZiBzZWNvbmQgcGFyYW1ldGVyCglyZXBsYWNlZCB3aXRoIHNoaWZ0X2NvdW50X3R5cGUuCgkoX19jbXBkaTIsIF9fdWNtcGRpMik6IHdvcmRfdHlwZSBvZiByZXR1cm4gdHlwZSByZXBsYWNlZCB3aXRoCgljbXBfcmV0dXJuX3R5cGUuCgkqIGxpYmdjYzIuYyAoX191ZGl2bW9kZGk0LCBfX21vZGRpMyk6IFR5cGUgb2YgbG9jYWwgdmFyaWFibGUgYwoJY2hhbmdlZCBmcm9tIHdvcmRfdHlwZSB0byBXdHlwZS4KCShfX2xzaHJkaTMsIF9fYXNobGRpMywgX19hc2hyZGkzKTogd29yZF90eXBlIG9mIHNlY29uZCBwYXJhbWV0ZXIKCXJlcGxhY2VkIHdpdGggc2hpZnRfY291bnRfdHlwZS4KCShfX2NtcGRpMiwgX191Y21wZGkyKTogd29yZF90eXBlIG9mIHJldHVybiB0eXBlIHJlcGxhY2VkIHdpdGgKCWNtcF9yZXR1cm5fdHlwZS4KCSogYy1jb21tb24uYyAoaGFuZGxlX21vZGVfYXR0cmlidXRlKTogSGFuZGxpbmcgZm9yIGxpYmdjY19jbXBfcmV0dXJuCglhbmQgbGliZ2NjX3NoaWZ0X2NvdW50IGF0dHJpYnV0ZSBhZGRlZC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfTElCR0NDX0NNUF9SRVRVUk5fTU9ERSwKCVRBUkdFVF9MSUJHQ0NfU0hJRlRfQ09VTlRfTU9ERSk6IE5ldyB0YXJnZXQgaG9va3MgZGVmaW5lZC4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBOZXcgdGFyZ2V0IGhvb2tzIGFkZGVkLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9saWJnY2NfY21wX3JldHVybl9tb2RlLAoJZGVmYXVsdF9saWJnY2Nfc2hpZnRfY291bnRfbW9kZSk6IERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgbmV3Cgl0YXJnZXQgaG9va3MgYWRkZWQuCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X2xpYmdjY19jbXBfcmV0dXJuX21vZGUsCglkZWZhdWx0X2xpYmdjY19zaGlmdF9jb3VudF9tb2RlKTogRnVuY3Rpb24gcHJvdG90eXBlcyBhZGRlZC4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogRmllbGRzIGZvciB0aGUgbmV3IHRhcmdldCBob29rcyBhZGRlZC4KCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcCk6IFVzZSBzaGlmdF9jb3VudF9tb2RlIHdoZW4gZXhwYW5kaW5nIHNoaWZ0CglhcyBsaWJyYXJ5IGNhbGwuCgkocHJlcGFyZV9jbXBfaW5zbik6IFVzZSBjbXBfcmV0dXJuX21vZGUgd2hlbiBleHBhbmRpbmcgY29tcGFyaXNvbiBhcwoJbGlicmFyeSBjYWxsLgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9MSUJHQ0NfQ01QX1JFVFVSTl9NT0RFLAoJVEFSR0VUX0xJQkdDQ19TSElGVF9DT1VOVF9NT0RFKTogRG9jdW1lbnRhdGlvbiBhZGRlZC4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9saWJnY2NfY21wX3JldHVybl9tb2RlLAoJczM5MF9saWJnY2Nfc2hpZnRfY291bnRfbW9kZSk6IEZ1bmN0aW9ucyBhZGRlZC4KCShUQVJHRVRfTElCR0NDX0NNUF9SRVRVUk5fTU9ERSwJVEFSR0VUX0xJQkdDQ19TSElGVF9DT1VOVF9NT0RFKToKCVRhcmdldCBob29rcyBkZWZpbmVkLgoKMjAwNy0wNy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlc3RvcmUgdGhlIG9yaWdpbmFsCglncF9zcF9vZmZzZXQgZm9yICFHRU5FUkFURV9NSVBTMTZFX1NBVkVfUkVTVE9SRSBhbmQgcmVtb3ZlIHRoZQoJZnBfc2l6ZSB0ZXJtIGZyb20gdGhlIEdFTkVSQVRFX01JUFMxNkVfU0FWRV9SRVNUT1JFIGNhbGN1bGF0aW9uLgoJRG9jdW1lbnQgd2h5IHRoZSBkaWZmZXJlbmNlIGlzIG5lZWRlZC4KCjIwMDctMDctMDYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGMtY29tbW9uLmMgKGJvb2xlYW5faW5jcmVtZW50KTogVXNlIGNvcnJlY3RseSB0eXBlZAoJY29uc3RhbnQuCgoyMDA3LTA3LTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwczE2ZV9zYXZlX3Jlc3RvcmVfcGF0dGVybl9wKTogQ2hlY2sgdGhhdAoJdGhlIHRvcG1vc3QgYXJndW1lbnQgcmVnaXN0ZXIgaXMgbm90IGFsc28gaW5jbHVkZWQgaW4gdGhlIHNhdmUgbWFzay4KCShtaXBzMTZlX2NvbGxlY3RfYXJndW1lbnRfc2F2ZV9wKTogVGFrZSBhIHBvaW50ZXIgdG8gdGhlIGFyZ3VtZW50CglyZWdpc3RlciwgcmF0aGVyIHRoYW4gYSBwb2ludGVyIHRvIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLgoJKG1pcHMxNmVfY29sbGVjdF9hcmd1bWVudF9zYXZlcyk6IE9ubHkgaW5jbHVkZSBhcmd1bWVudCBzYXZlcwoJdGhhdCBhcmVuJ3QgaW4gdGhlIHJlZ2lzdGVyIG1hc2suCgoyMDA3LTA3LTA2ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzI0NTAKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IEVtaXQgYmxvY2thZ2UgaW5zbgoJdG8gZW5zdXJlIHRoYXQgaW5zdHJ1Y3Rpb25zIGFyZSBub3QgbW92ZWQgaW50byB0aGUgcHJvbG9ndWUgd2hlbgoJcHJvZmlsaW5nIGlzIG9uLiAgUmVtb3ZlIHVudXNlZCBwcm9sb2d1ZV9lbmQgdmFyaWFibGUuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IEVtaXQgYmxvY2thZ2UgaW5zbiBpbnN0ZWFkIG9mIEFTTV9JTlBVVCBydHgKCWFzIGEgc2NoZWR1bGluZyBiYXJyaWVyLgoKMjAwNy0wNy0wNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgZGVidWcvMjM1NTEKCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UpOgoJRGlzcmVnYXJkIERFQ0xfRlJPTV9JTkxJTkUuCgoyMDA3LTA3LTA1ICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIHJ0bGFuYWwuYyAobnVtX3NpZ25fYml0X2NvcGllczEpOiBJbXByb3ZlIGNhc2VzIG9mIEFORGluZyBvcgoJSU9SaW5nIHdpdGggYSBjb25zdGFudC4KCjIwMDctMDctMDUgIFNlb25nYmFlIFBhcmsgIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyNDc1CgkqIGRmLXNjYW4uYyAoZGZfZGVmX3JlY29yZF8xKTogQWRkIGEgdXNlIG9mIHRoZSBzdGFjayBwb2ludGVyCglmb3IgZXZlcnkgZGVmaW5pdGlvbiBvZiB0aGUgc3RhY2sgcG9pbnRlci4KCjIwMDctMDctMDUgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKHZmcDNfY29uc3RfZG91YmxlX2luZGV4KTogQ29weSBzaWduZWQgcmVzdWx0cyBvZgoJUkVBTF9WQUxVRV9UT19JTlQgaW50byB1bnNpZ25lZCB2YXJzLgoKMjAwNy0wNy0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzI2MzkKCSogYWxpYXMuYyAoZ2V0X2FsaWFzX3NldCk6IFRyZWFkIE1FVEhPRF9UWVBFIHRoZSBzYW1lIGFzCglGVU5DVElPTl9UWVBFLgoJKiB0cmVlLXNzYS5jICh1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wKTogQ2hlY2sgY2Fub25pY2FsCgl0eXBlcyBlYXJseS4KCjIwMDctMDctMDUgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIubWQgKHplcm9fZXh0ZW5kcWloaTIsIHplcm9fZXh0ZW5kcWlzaTIsIAoJemVyb19leHRlbmRoaXNpMik6IENoYW5nZSB0byBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuIAoJKHplcm9fZXh0ZW5kcWlkaTIsIHplcm9fZXh0ZW5kaGlkaTIsIHplcm9fZXh0ZW5kc2lkaTIpOiBOZXcuCgoyMDA3LTA3LTA1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZnVuY3Rpb24uYyAobWF0Y2hfYXNtX2NvbnN0cmFpbnRzXzEsIHJlc3Rfb2ZfbWF0Y2hfYXNtX2NvbnN0cmFpbnRzLAoJcGFzc19tYXRjaF9hc21fY29uc3RyYWludHMpOiBOZXcuCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBBZGQgbmV3IHBhc3MuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFNldCBjZnVuLT5oYXNfYXNtX3N0YXRlbWVudC4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogQWRkIGhhc19hc21fc3RhdGVtZW50IGJpdC4KCShjdXJyZW50X2Z1bmN0aW9uX2hhc19hc21fc3RhdGVtZW50KTogTmV3LgoJKiB0cmVlLXBhc3MuaCAocGFzc19tYXRjaF9hc21fY29uc3RyYWludHMpOiBOZXcuCgoyMDA3LTA3LTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZmlsZV9zdGFydCk6IEF2b2lkIGRlY2xhcmF0aW9uCglhZnRlciBjb2RlLgoKMjAwNy0wNy0wNSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcF9kaXJlY3RseSk6IEZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbi4KCjIwMDctMDctMDUgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBydGwuZGVmIChOT1RFKTogQ2hhbmdlIHByaW50IGZvcm1hdCBzdHJpbmcgdG8gcHJpbnQKCW9wZXJhbmQgNSBhcyBhIG5vdGUgaW5zbiBuYW1lLgoKMjAwNy0wNy0wNSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoJICAgIERhdmlkIFVuZyAgPGRhdmlkdUBtaXBzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jcHVfaW5mbyk6IEFkZCA0a3NjIGFuZCA0a3NkIHByb2Nlc3NvcnMuCgkqIGRvYy9pbnZva2UudGV4aTogKE1JUFMgT3B0aW9ucyk6IERvY3VtZW50IHRoZW0uCgoyMDA3LTA3LTA1ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoKCUFkZCBzdXBwb3J0IGZvciBTbWFydE1JUFMgQVNFLgoKCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcF9kaXJlY3RseSk6IE5ldywgYnJva2VuIG91dCBmcm9tLi4uCgkoZXhwYW5kX2Jpbm9wKTogSGVyZS4gIE1ha2UgaXQgdHJ5IHJvdGF0aW5nIGluIHRoZSBvdGhlcgoJZGlyZWN0aW9uIGV2ZW4gd2hlbiB0aGUgc2Vjb25kIG9wZXJhbmQgaXNuJ3QgY29uc3RhbnQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCpsd3hzKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobXNtYXJ0bWlwcyk6IE5ldy4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2x3eHNfYWRkcmVzc19wKTogTmV3LgoJKG1pcHNfcnR4X2Nvc3RzKTogTWFrZSBpdCByZWNvZ25pemUgc2NhbGVkIGluZGV4ZWQgYWRkcmVzc2luZy4KCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19taXBzX3NtYXJ0bWlwcyB3aGVuIGNvbXBpbGluZyBmb3IgVEFSR0VUX1NNQVJUTUlQUy4KCShJU0FfSEFTX1JPUik6IERlZmluZSBmb3IgVEFSR0VUX1NNQVJUTUlQUy4KCShJU0FfSEFTX0xXWFMpOiBOZXcuCgkoQVNNX1NQRUMpOiBBZGQgLW1zbWFydG1pcHMvLW1uby1zbWFydG1pcHMuCgkqIGRvYy9pbnZva2UudGV4aSAoTUlQUyBPcHRpb25zKTogRG9jdW1lbnQgLW1zbWFydG1pcHMvLW1uby1zbWFydG1pcHMuCgkqIHRlc3RzdWl0ZS9nY2MudGFyZ2V0L21pcHMvc21hcnRtaXBzLWx3eHMuYzogTmV3IHRlc3QgY2FzZS4KCSogdGVzdHN1aXRlL2djYy50YXJnZXQvbWlwcy9zbWFydG1pcHMtcm9yLTEuYzogTmV3IHRlc3QgY2FzZS4KCSogdGVzdHN1aXRlL2djYy50YXJnZXQvbWlwcy9zbWFydG1pcHMtcm9yLTIuYzogTmV3IHRlc3QgY2FzZS4KCSogdGVzdHN1aXRlL2djYy50YXJnZXQvbWlwcy9zbWFydG1pcHMtcm9yLTMuYzogTmV3IHRlc3QgY2FzZS4KCSogdGVzdHN1aXRlL2djYy50YXJnZXQvbWlwcy9zbWFydG1pcHMtcm9yLTQuYzogTmV3IHRlc3QgY2FzZS4KCjIwMDctMDctMDUgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAobmV3X2xvb3BfdmVjX2luZm8pOiBJbml0aWFsaXplCglMT09QX1ZJTkZPX0NPU1RfTU9ERUxfTUlOX0lURVJTLgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAoX2xvb3BfdmVjX2luZm8pOiBBZGRlZCBuZXcgZmlsZWQKCW1pbl9wcm9maXRhYmxlX2l0ZXJzLgoJKExPT1BfVklORk9fQ09TVF9NT0RFTF9NSU5fSVRFUlMpOiBOZXcgYWNjZXNzIG1hY3JvIHRvIGFib3ZlIG5ldyBmaWVsZC4KCShUQVJHX1NDQUxBUl9UT19WRUNfQ09TVCk6IERlZmluZSBjb3N0IG9mIHNjYWxhciB0byB2ZWN0b3Igb3BlcmF0aW9uLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyk6IFNldAoJTE9PUF9WSU5GT19DT1NUX01PREVMX01JTl9JVEVSUy4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzKTogVXNlCglWRUNfbGVuZ3RoIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IExPT1BfVklORk9fTUFZX01JU0FMSUdOX1NUTVRTLgoJRml4IGNhbGN1bGF0aW9uIG9mIHBlZWxfaXRlcnNfcHJvbG9ndWUuIE1vdmUgY29uc2lkZXJhdGlvbiBvZiBlcGlsb2d1ZQoJYW5kIHByb2xvZ3VlIGNvc3QgdG8gYWZ0ZXIgdGhleSBhcmUgY29tcHV0ZWQuCgkodmVjdF9tb2RlbF9pbmR1Y3Rpb25fY29zdCk6IFVzZSBUQVJHX1NDQUxBUl9UT19WRUNfQ09TVCBpbnN0ZWFkIG9mCglUQVJHX1ZFQ19TVE1UX0NPU1QuCgkodmVjdF9tb2RlbF9zaW1wbGVfY29zdCk6IFRha2VzIGFkZGl0aW9uYWwgYXJndW1lbnQgZHQuIENvbnNpZGVyIGNvc3QKCW9mIGNyZWF0aW5nIHZlY3RvcnMgZnJvbSBzY2FsYXJzIGFjY29yZGluZyB0byBkdC4KCSh2ZWN0X21vZGVsX3N0b3JlX2Nvc3QpOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfY2FsbCk6IFVzZSBkdCBhcnJheSBpbnN0ZWFkIG9mIHNjYWxhciBkdC4gQ2FsbAoJdmVjdF9tb2RlbF9zaW1wbGVfY29zdCB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQgZHQuCgkodmVjdG9yaXphYmxlX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX3R5cGVfZGVtb3Rpb24pOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfdHlwZV9wcm9tb3Rpb24pOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfc3RvcmUpOiBVc2UgZHQgYXJyYXkgaW5zdGVhZCBvZiBzY2FsYXIgZHQuIENhbGwKCXZlY3RfbW9kZWxfc3RvcmVfY29zdCB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQgZHQuCgkodmVjdF9kb19wZWVsaW5nX2Zvcl9sb29wX2JvdW5kKTogRG9uJ3QgY2FsbAoJdmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJsZV9pdGVycy4gSW5zdGVhZCwgbG9va3VwCglMT09QX1ZJTkZPX0NPU1RfTU9ERUxfTUlOX0lURVJTLiBEb24ndCBhbHdheXMgcHJpbnQKCSJtYXkgbm90IGJlIHByb2ZpdGFibGUiLgoKMjAwNy0wNy0wNSAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0ZXN0c3VpdGUvMzIwMTQKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChVTlNQRUNfVlVQS0hTX1Y0U0YsIFVOU1BFQ19WVVBLTFNfVjRTRik6CgkoVU5TUEVDX1ZVUEtIVV9WNFNGLCBVTlNQRUNfVlVQS0xVX1Y0U0YpOiBOZXcuCgkodmVjX3VucGFja3NfZmxvYXRfaGlfdjhoaSwgdmVjX3VucGFja3NfZmxvYXRfbG9fdjhoaSk6IE5ldyBwYXR0ZXJucy4KCSh2ZWNfdW5wYWNrdV9mbG9hdF9oaV92OGhpLCB2ZWNfdW5wYWNrdV9mbG9hdF9sb192OGhpKTogTmV3IHBhdHRlcm5zLiAKCjIwMDctMDctMDUgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYWRkcmVzc19jb3N0KTogRG8gbm90IGNvbnNpZGVyIG1vcmUgY29tcGxleAoJYWRkcmVzc2luZyBtb2RlcyBjaGVhcGVyLgoKMjAwNy0wNy0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdfcmFuZ2VzX2J5X2xhYmVsX3JlZik6IE5ldyB0eXBlZGVmLgoJKGR3X3Jhbmdlc19zdHJ1Y3QpOiBSZW5hbWUgYmxvY2tfbnVtIHRvIG51bS4gIEFkanVzdC4KCShkd19yYW5nZXNfYnlfbGFiZWxfc3RydWN0KTogTmV3LgoJKHJhbmdlc19ieV9sYWJlbCwgcmFuZ2VzX2J5X2xhYmVsX2FsbG9jYXRlZCwKCXJhbmdlc19ieV9sYWJlbF9pbl91c2UpOiBOZXcgdmFyaWFibGVzLgoJKGFkZF9yYW5nZXNfbnVtKTogRmFjdG9yZWQgbW9zdCBvZiB0aGUgY29kZSBvdXQgb2YuLi4KCShhZGRfcmFuZ2VzKTogLi4uIHRoaXMgb25lLiAgUmV3cml0ZSBpbiB0ZXJtcyBvZiB0aGUgZm9ybWVyLgoJKGFkZF9yYW5nZXNfYnlfbGFiZWxzKTogTmV3LgoJKG91dHB1dF9yYW5nZXMpOiBPdXRwdXQgYnktbGFiZWwgcmFuZ2VzLgoJKGR3YXJmMm91dF9maW5pc2gpOiBPdXRwdXQgcmFuZ2UgZm9yIG11bHRpcGxlLXNlY3Rpb24KCWNvbXBpbGVfdW5pdC4gIE91dHB1dCBzdGFuZGFyZCBEV19BVF9sb3dfcGMgaW4gYWRkaXRpb24gdG8KCXVuZXhwZWN0ZWQgRFdfQVRfZW50cnlfcGMuCgoyMDA3LTA3LTA0ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjYwNAoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI2MDYKCgkqIHRyZWUtc3NhLXByZS5jIChiYl9iaXRtYXBfc2V0cyk6IFJlbW92ZWQgYW50aWNfc2FmZV9sb2Fkcy4KCShjb21wdXRlX2FudGljX3NhZmUpOiBSZW1vdmVkLgoJKEFOVElDX1NBRkVfTE9BRFMpOiBEaXR0by4KCShjb21wdXRlX2FudGljX2F1eCk6IERvbid0IHByaW50IEFOVElDX1NBRkVfTE9BRFMuCgkoZXhlY3V0ZV9wcmUpOiBEb24ndCBjYWxsIGNvbXB1dGVfYW50aWNfc2FmZS4KCSh2dXNlX2VxdWl2KTogTmV3IGZ1bmN0aW9uLgoJKG1ha2VfdmFsdWVzX2Zvcl9zdG10KTogVXNlIGl0CgkqIHRyZWUtc3NhLXNjY3ZuLmMgKHNldF9zc2FfdmFsX3RvKTogUmVtb3ZlIGFzc2VydCwgc2luY2UgaXQgaXMKCW5vdCBhbHdheXMgdHJ1ZS4KCjIwMDctMDctMDQgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCVBSIHRhcmdldC8zMTMzMQoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbmFrZWRfZnVuY3Rpb25fcCk6IEhhbmRsZSByZWNlaXZpbmcgYSB0eXBlCglyYXRoZXIgdGhhbiBhIGRlY2wuIAoJKGF2cl9hdHRyaWJ1dGVfdGFibGUpOiBNYWtlICJuYWtlZCIgYXR0cmlidXRlIGFwcGx5IHRvIGZ1bmN0aW9uIHR5cGVzCglyYXRoZXIgdGhhbiB0byBkZWNscy4KCShhdnJfaGFuZGxlX2ZudHlwZV9hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgoyMDA3LTA3LTA0ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0lOSVRJQUxJWkVSKTogUmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UKCWFmdGVyIFwuCgoyMDA3LTA3LTA0ICBEYXZpZCBVbmcgIDxkYXZpZHVAbWlwcy5jb20+CgkgICAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh0eXBlKTogQWRkIGxvZ2ljYWwsIHNpZ25leHQgYW5kIG1vdmUuCgkob25lX2NtcGw8bW9kZT4yLCAqYW5kPG1vZGU+MywgKmFuZDxtb2RlPjNfbWlwczE2LCAqaW9yPG1vZGU+MywKCSppb3I8bW9kZT4zX21pcHMxNiwgdHdvIHVubmFtZWQgaW5zbnMgYWZ0ZXIgKmlvcjxtb2RlPjNfbWlwczE2LAoJKm5vcjxtb2RlPjMsICJDb21iaW5lciBwYXR0ZXJucyB0byBvcHRpbWl6ZSB0cnVuY2F0ZS96ZXJvX2V4dGVuZAoJY29tYmluYXRpb25zIiwgKnplcm9fZXh0ZW5kPFNIT1JUOm1vZGU+PEdQUjptb2RlPjIsCgkqemVyb19leHRlbmRxaWhpMiwgKmV4dGVuZDxTSE9SVDptb2RlPjxHUFI6bW9kZT4yX21pcHMxNmUsCgkqZXh0ZW5kPFNIT1JUOm1vZGU+PEdQUjptb2RlPjJfc2U8U0hPUlQ6c2l6ZT4sICptb3ZkaV82NGJpdCwKCSptb3ZkaV82NGJpdF9taXBzMTYsICptb3ZzaV9pbnRlcm5hbCwgKm1vdnNpX21pcHMxNiwgbW92Y2MsCgkqbW92aGlfaW50ZXJuYWwsICptb3ZoaV9taXBzMTYsICptb3ZxaV9pbnRlcm5hbCwgKm1vdnFpX21pcHMxNiwKCSptb3ZzZl9oYXJkZmxvYXQsICptb3ZzZl9zb2Z0ZmxvYXQsICptb3ZzZl9taXBzMTYsCgkqbW92ZGZfaGFyZGZsb2F0XzY0Yml0LCAqbW92ZGZfaGFyZGZsb2F0XzMyYml0LAoJbW92djJzZl9oYXJkZmxvYXRfNjRiaXQpOiBVc2UgdGhlIG5ldyB0eXBlcy4KCSgqbW92ZGlfMzJiaXQsICptb3ZkaV9ncDMyX2ZwNjQsICptb3ZkaV8zMmJpdF9taXBzMTYsCgkqbW92ZGZfc29mdGZsb2F0LCAqbW92ZGZfbWlwczE2KTogVXNlICJtdWx0aSIuCgkoZXh0ZW5kcWloaTIpOiBSZXBsYWNlIHdpdGggYSBkZWZpbmVfZXhwYW5kLgoJKCpleHRlbmRxaWhpMl9taXBzMTZlLCAqZXh0ZW5kcWloaTIsICpleHRlbmRxaWhpMl9zZWIpOiBOZXcuCglCYXNlZCBvbiBleHRlbmQ8U0hPUlQ6bW9kZT48R1BSOm1vZGU+MiBwYXR0ZXJucy4KCSogY29uZmlnL21pcHMvNzRrLm1kIChyNzRrX2ludF9sb2dpY2FsKTogTmV3IHJlc2VydmF0aW9uIGFuZAoJYnlwYXNzZXMuCgkocjc0a19pbnRfYXJpdGgpOiBSZW1vdmUgInNsdCIuCgkqIGNvbmZpZy9taXBzLzI0ay5tZCwgY29uZmlnL21pcHMvNDEzMC5tZCwgY29uZmlnL21pcHMvNGsubWQsCgljb25maWcvbWlwcy81NDAwLm1kLCBjb25maWcvbWlwcy81NTAwLm1kLCBjb25maWcvbWlwcy81ay5tZCwKCWNvbmZpZy9taXBzLzcwMDAubWQsIGNvbmZpZy9taXBzLzkwMDAubWQsIGNvbmZpZy9taXBzL2dlbmVyaWMubWQsCgljb25maWcvbWlwcy9zYjEubWQsIGNvbmZpZy9taXBzL3NyNzFrLm1kOiBBZGQgbmV3IHR5cGVzIHRvCglyZXNlcnZhdGlvbnMgZm9yICJhcml0aCIuCgoyMDA3LTA3LTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS5jICh1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wKTogQWRkIGhhbmRsaW5nIGZvcgoJc2NhbGFyIGZsb2F0IGFuZCB2ZWN0b3IgdHlwZXMuICBPbmx5IGNhbGwgdGhlIHR5cGVzX2NvbXBhdGlibGVfcAoJbGFuZ2hvb2sgZm9yIGFnZ3JlZ2F0ZSB0eXBlcyBhcyBsYXN0IHJlc29ydC4gIEZvbGxvdyB0aGUKCXJ1bGVzLgoKMjAwNy0wNy0wNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBUcmVhdCBDT05WRVJUX0VYUFIKCXRoZSBzYW1lIGFzIE5PUF9FWFBSLgoKMjAwNy0wNy0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCB0YXJnZXRfaGVscCBmaWVsZC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfSEVMUCk6IE5ldy4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBVc2UgVEFSR0VUX0hFTFAuCgkqIG9wdHMuYyAoY29tbWFuZF9oYW5kbGVfb3B0aW9uKTogSW52b2tlIHRhcmdldF9oZWxwIGZ1bmN0aW9uLCBpZgoJZGVmaW5lZCwgd2hlbiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIC0tdGFyZ2V0LWhlbHAgb24gdGhlIGNvbW1hbmQKCWxpbmUuCgkqIGRvYy9pbnZva2UudGV4aTogTWVudGlvbiB0aGF0IC0tdGFyZ2V0LWhlbHAgbWlnaHQgcHJpbnQKCWFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBUQVJHRVRfSEVMUCBob29rLgoKCSogYXJtLmMgKFRBUkdFVF9IRUxQKTogT3ZlcnJpZGUgZGVmYXVsdCBkZWZpbml0aW9uLgoJKGFybV90YXJnZXRfaGVscCk6IE5ldyAtIGRpc3BsYXkgYSB3cmFwcGVkIGxpc3Qgb2YgY29yZXMgYW5kCglhcmNoaXRlY3R1cmVzIHN1cHBvcnRlZC4KCjIwMDctMDctMDQgIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCgkqIGNvbmZpZy92ODUwL3Y4NTAuYyAoZXhwYW5kX3Byb2xvZ3VlKTogTWFrZSBzdXJlCglHRU5fSU5UKCkgYXJndW1lbnQgaXMgc2lnbiBleHRlbmRlZCByYXRoZXIgdGhhbiB6ZXJvIGV4dGVuZGVkLgoJKGV4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKG91dHB1dF9tb3ZlX2RvdWJsZSk6IERlbGV0ZS4KCSogY29uZmlnL3Y4NTAvdjg1MC1wcm90b3MuaCAob3V0cHV0X21vdmVfZG91YmxlKTogRGVsZXRlLgoJKiBjb25maWcvdjg1MC92ODUwLm1kIChtb3ZkaSk6IERlbGV0ZS4KCSgqbW92ZGlfaW50ZXJuYWwpOiBEZWxldGUuCgkobW92ZGYpOiBEZWxldGUuCgkoKm1vdmRmX2ludGVybmFsKTogRGVsZXRlLgoKMjAwNy0wNy0wNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc2gvdnh3b3Jrcy5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFJlamVjdCAtbXJlbGF4Cgl1bmxlc3MgY29tcGlsaW5nIFJUUCBQSUMuCgoyMDA3LTA3LTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI0ODIKCSogdHJlZS1zc2EtaWZjb21iaW5lLmMgKHJlY29nbml6ZV9zaW5nbGVfYml0X3Rlc3QpOiBVc2UgdGhlCglvcmlnaW5hbCBzc2EgbmFtZSBpZiB3ZSBkaWRuJ3QgZmluZCBhIHNoaWZ0IGV4cHJlc3Npb24uCglGaXggc2hpZnQgY29uc3RhbnQgZm9yIGJpdCB6ZXJvIHRlc3QuCgoyMDA3LTA3LTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChpY19pbnZhbGlkYXRlKTogQWxpZ24gY29uc3RhbnQgcG9vbC4KCjIwMDctMDctMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAoYXJtLXdycy12eHdvcmtzKTogRG9uJ3QgaW5jbHVkZSBzdnI0LmguCgkqIGNvbmZpZy92eHdvcmtzLmggKFBUUkRJRkZfVFlQRSwgU0laRV9UWVBFLCBUQVJHRVRfUE9TSVhfSU8pOiBEZWZpbmUuCgkqIGNvbmZpZy9hcm0vdnh3b3Jrcy5oIChBU01fU1BFQyk6IERlbGV0ZS4KCShTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpOiBEZWZpbmUuCgoyMDA3LTA3LTA0ICBTZWJhc3RpYW4gUG9wICA8c2VicG9wQGdtYWlsLmNvbT4KCgkqIHRyZWUtZGF0YS1yZWYuaCAoZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uKTogTmV3IGZsYWcgcmV2ZXJzZWRfcC4KCShERFJfUkVWRVJTRURfUCk6IE5ldy4KCSogdHJlZS1kYXRhLXJlZi5jIChpbml0aWFsaXplX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbiwKCWJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3IpOiBTZXQgRERSX1JFVkVSU0VEX1AuCgoyMDA3LTA3LTA0ICBTZWJhc3RpYW4gUG9wICA8c2VicG9wQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyNDU3CgkqIHRyZWUtZGF0YS1yZWYuYyAoYW5hbHl6ZV9zaXZfc3Vic2NyaXB0X2NzdF9hZmZpbmUsCgljb21wdXRlX292ZXJsYXBfc3RlcHNfZm9yX2FmZmluZV8xXzIsIGFuYWx5emVfc3Vic2NyaXB0X2FmZmluZV9hZmZpbmUsCglpbml0X29tZWdhX2Zvcl9kZHJfMSk6IFVzZSBub24gY29uc2VydmF0aXZlIG51bWJlciBvZiBpdGVyYXRpb25zCgllc3RpbWF0aW9ucy4KCShhbmFseXplX3N1YnNjcmlwdF9hZmZpbmVfYWZmaW5lKTogVXNlIEhPU1RfV0lERV9JTlQgaW5zdGVhZCBvZiBpbnQuCgkoYW5hbHl6ZV9zaXZfc3Vic2NyaXB0KTogUmVtb3ZlIEZJWE1FIGFuZCByZWluaXRpYWxpemF0aW9uIG9mIAoJbGFzdF9jb25mbGljdHMgdG8gY2hyZWNfZG9udF9rbm93LgoJKiB0ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvdmVjdC9wcjMyNDU3LmY5MDogTmV3LgoKMjAwNy0wNy0wNCAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJKiB0cmVlLmMgKG1heWJlX2Nhbm9uaWNhbGl6ZV9hcmd0eXBlcyk6IEltcHJvdmUgZGVzY3JpcHRpb24uCgoyMDA3LTA3LTA0ICBEb3VnbGFzIEdyZWdvciAgPGRvdWcuZ3JlZ29yQGdtYWlsLmNvbT4KCgkqIHRyZWUuYyAobWF5YmVfY2Fub25pY2FsaXplX2FyZ3R5cGVzKTogTmV3LgoJKGJ1aWxkX2Z1bmN0aW9uX3R5cGUpOiBTZXQgY2Fub25pY2FsIHR5cGUuCgkoYnVpbGRfbWV0aG9kX3R5cGVfZGlyZWN0bHkpOiBEaXR0by4KCShyZWNvbnN0cnVjdF9jb21wbGV4X3R5cGUpOiBSZWJ1aWxkIHRoZSBNRVRIT0RfVFlQRSBub2RlCglwcm9wZXJseS4KCjIwMDctMDctMDMgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoc3RyaXBfb2Zmc2V0XzEpOiBUcmVhdCBQT0lOVEVSX1BMVVNfRVhQUgoJbGlrZSBQTFVTX0VYUFIuCgkocmV3cml0ZV91c2Vfbm9ubGluZWFyX2V4cHIpOiBMaWtld2lzZS4KCjIwMDctMDctMDMgIFNlb25nYmFlIFBhcmsgIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCgkqIHJ0bC5kZWYgKFVOU1BFQywgVVNFLCBDTE9CQkVSKTogTW9yZSBjb21tZW50cy4KCjIwMDctMDctMDQgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZHdhcmYyb3V0LmM6IE1vdmUgRFdBUkYyIGFiYnJldmlhdGlvbiBnbG9zc2FyeSBjbG9zZXIgdG8gdGhlIHRvcAoJb2YgdGhpcyBmaWxlLgoKCSogYy1vYmpjLWNvbW1vbi5jIChjX3R5cGVzX2NvbXBhdGlibGVfcCk6IEZpeCBpbmRlbnRhdGlvbi4KCgkqIGRvYy90bS50ZXhpIChSdW4tdGltZSBUYXJnZXQpOiBDYXBpdGFsaXNlICJDUFUiLgoJKEV4Y2VwdGlvbiBIYW5kbGluZyk6IExpa2V3aXNlLgoKMjAwNy0wNy0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaWZjdnQuYyAoZmluZF9jb25kX3RyYXApOiBBdm9pZCBpbnZhbGlkIFJUTCBzaGFyaW5nLgoKMjAwNy0wNy0wMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGRvYy9jcHBvcHRzLnRleGk6IEFkZCBjb25mbGljdGluZyBvcHRpb24gbm90ZSB0byAtZE0uCgkqIGRvYy9pbnZva2UudGV4aTogQWRkIG5vdGUgYWJvdXQgcG9zc2libGUgY29uZmxpY3RzIHdpdGgKCS1FIGZvciAtZENIQVJTIGFuZCBub3RlIHRoYXQgLWRNIHdpbGwgbm90IHByb2R1Y2UKCWFueSByZXN1bHRzIGlmIHRoZXJlIGlzIG5vIG1hY2hpbmUgZGVwZW5kZW50IHJlb3JnLgoJCjIwMDctMDctMDMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdHJlZS5oIChERUNMX0FMSUdOKTogQmFjayBvdXQgcHJldmlvdXMgY2hhbmdlLgoKMjAwNy0wNy0wMyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IFRlc3QgZm9yIC5kdHByZWx3b3JkIHN1cHBvcnQgb24gTUlQUy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfZHdhcmZfZHRwcmVsKTogTmV3LgoJKFRBUkdFVF9BU01fT1VUUFVUX0RXQVJGX0RUUFJFTCk6IERlZmluZS4KCjIwMDctMDctMDMgIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAod2l0aF9mcHUpOiBBbGxvdyAtLXdpdGgtZnB1PXZmcDMuCgkqIGNvbmZpZy9hcm0vYW91dC5oIChSRUdJU1RFUl9OQU1FUyk6IEFkZCBEMTYtRDMxLgoJKiBjb25maWcvYXJtL2FvZi5oIChSRUdJU1RFUl9OQU1FUyk6IEFkZCBEMTYtRDMxLgoJKiBjb25maWcvYXJtL2FybS5jIChGTF9WRlBWMyk6IE5ldyBmbGFnIGZvciBWRlB2MyBwcm9jZXNzb3IKCWNhcGFiaWxpdHkuCgkoYWxsX2ZwdXMpOiBBZGQgRlBVVFlQRV9WRlAzLgoJKGZwX21vZGVsX2Zvcl9mcHUpOiBBZGQgVkZQdjMgZmllbGQuCgkoYXJtX3J0eF9jb3N0c18xKTogR2l2ZSBjb3N0IHRvIFZGUHYzIGNvbnN0YW50cy4KCSh2ZnAzX2NvbnN0X2RvdWJsZV9pbmRleCk6IE5ldyBmdW5jdGlvbi4gUmV0dXJuIGludGVnZXIgaW5kZXggb2YKCVZGUHYzIGNvbnN0YW50IHN1aXRhYmxlIGZvciBmY29uc3Rbc2RdIGluc25zLCBvciAtMSBpZiBjb25zdGFudAoJaXNuJ3Qgc3VpdGFibGUuCgkodmZwM19jb25zdF9kb3VibGVfcnR4KTogTmV3IGZ1bmN0aW9uLiBUcnVlIGlmIFZGUHYzIGlzIGVuYWJsZWQKCWFuZCBhcmd1bWVudCByZXByZXNlbnRzIGEgdmFsaWQgUlRYIGZvciBhIFZGUHYzIGNvbnN0YW50LgoJKHZmcF9vdXRwdXRfZmxkbWQpOiBTcGxpdCBmbGRtZCB3aXRoID4gMTYgcmVnaXN0ZXJzIGluIHRoZSBsaXN0IGludG8KCXR3byBpbnN0cnVjdGlvbnMuCgkodmZwX2VtaXRfZnN0bWQpOiBTaW1pbGFyLCBmb3IgZnN0bWQuCgkoYXJtX3ByaW50X29wZXJhbmQpOiBJbXBsZW1lbnQgbmV3IGNvZGUgJ0cnIGZvciBWRlB2MyBmbG9hdGluZy1wb2ludAoJY29uc3RhbnRzLCByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIGluZGljZXMuCgkoYXJtX2hhcmRfcmVnbm9fbW9kZV9vayk6IFVzZSBWRlBfUkVHTk9fT0tfRk9SX1NJTkdMRSwKCVZGUF9SRUdOT19PS19GT1JfRE9VQkxFIG1hY3Jvcy4KCShhcm1fcmVnbm9fY2xhc3MpOiBIYW5kbGUgVkZQdjMgZDAtZDcsIGxvdywgaGlnaCByZWdpc3RlciBzcGxpdC4KCShhcm1fZmlsZV9zdGFydCk6IFNldCBmbG9hdC1hYmkgYXR0cmlidXRlIGZvciBWRlB2MywgYW5kIG91dHB1dAoJY29ycmVjdCAiLmZwdSIgYXNzZW1ibGVyIGRpcmVjdGl2ZS4KCShhcm1fZGJ4X3JlZ2lzdGVyX251bWJlcmluZyk6IEFkZCBGSVhNRS4KCSogY29uZmlnL2FybS9hcm0uaCAoVEFSR0VUX1ZGUDMpOiBOZXcgbWFjcm8uIFRhcmdldCBzdXBwb3J0cyBWRlB2My4KCShmcHV0eXBlKTogQWRkIEZQVVRZUEVfVkZQMy4KCShGSVhFRF9SRUdJU1RFUlMpOiBBZGQgMzIgcmVnaXN0ZXJzIGZvciBEMTYtRDMxLgoJKENBTExfVVNFRF9SRUdJU1RFUlMpOiBMaWtld2lzZS4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IEFkZCBub3RlIGFib3V0IGNvbmRpdGlvbmFsIGRlZmluaXRpb24KCW9mIExBU1RfVkZQX1JFR05VTS4gTWFrZSBEMTYtRDMxIGNhbGxlci1zYXZlZCwgaWYgcHJlc2VudC4KCShMQVNUX1ZGUF9SRUdOVU0pOiBFeHRlbmQgYXZhaWxhYmxlIFZGUCByZWdpc3RlcnMgZm9yIFZGUHYzLgoJKEQ3X1ZGUF9SRUdOVU0pOiBOZXcuCgkoTEFTVF9MT19WRlBfUkVHTlVNLCBGSVJTVF9ISV9WRlBfUkVHTlVNLCBMQVNUX0hJX1ZGUF9SRUdOVU0pCgkoVkZQX1JFR05PX09LX0ZPUl9TSU5HTEUsIFZGUF9SRUdOT19PS19GT1JfU0lOR0xFKQoJKFZGUF9SRUdOT19PS19GT1JfRE9VQkxFKTogRGVmaW5lIG5ldyBtYWNyb3MuCgkoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogU2hpZnQgdXAgdG8gMTI4IHRvIGFjY29tbW9kYXRlIFZGUHYzLgoJKFJFR19BTExPQ19PUkRFUik6IEFkanVzdCBmb3IgVkZQdjMuCgkocmVnX2NsYXNzKTogQWRkIFZGUF9EMF9EN19SRUdTLCBWRlBfTE9fUkVHUywgVkZQX0hJX1JFR1MuCgkoUkVHX0NMQVNTX05BTUVTKTogQWRkIGVudHJpZXMgY29ycmVzcG9uZGluZyB0byBWRlBfRDBfRDdfUkVHUywKCVZGUF9MT19SRUdTLCBWRlBfSElfUkVHUy4KCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBMaWtld2lzZS4gRXh0ZW5kIGNvbnRlbnRzIGZvciBWRlBfUkVHUy4KCShJU19WRlBfQ0xBU1MpOiBEZWZpbmUgbWFjcm8uCgkoU0VDT05EQVJZX09VVFBVVF9SRUxPQURfQ0xBU1MsIFNFQ09OREFSWV9JTlBVVF9SRUxPQURfQ0xBU1MpOiBVc2UKCUlTX1ZGUF9DTEFTUy4KCShSRUdJU1RFUl9NT1ZFX0NPU1QpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKHZmcDNfY29uc3RfZG91YmxlX3J0eCk6IEFkZCBwcm90b3R5cGUuCgkqIGNvbmZpZy9hcm0vdmZwLm1kIChWRlBDQ19SRUdOVU0pOiBSZWRlZmluZSBhcyAxMjcuCgkoKmFybV9tb3ZzaV92ZnAsICp0aHVtYjJfbW92c2lfdmZwLCAqbW92c2ZjY192ZnApCgkoKnRodW1iMl9tb3ZzZmNjX3ZmcCwgKmFic3NmMl92ZnAsICpuZWdzZjJfdmZwLCAqYWRkc2YzX3ZmcCkKCSgqc3Vic2YzX3ZmcCwgKmRpdnNmX3ZmcCwgKm11bHNmX3ZmcCwgKm11bHNmM25lZ3NmX3ZmcCkKCSgqbXVsc2YzYWRkc2ZfdmZwLCAqbXVsc2Yzc3Vic2ZfdmZwLCAqbXVsc2YzbmVnc2ZhZGRzZl92ZnApCgkoKmV4dGVuZHNmZGYyX3ZmcCwgKnRydW5jZGZzZjJfdmZwLCAqdHJ1bmNzaXNmMl92ZnApCgkoKnRydW5jc2lkZjJfdmZwLCBmaXh1bnNfdHJ1bmNzZnNpMiwgZml4dW5zX3RydW5jZGZzaTIpCgkoKmZsb2F0c2lzZjJfdmZwLCAqZmxvYXRzaWRmMl92ZnAsIGZsb2F0dW5zc2lzZjIpCgkoZmxvYXR1bnNzaWRmMiwgKnNxcnRzZjJfdmZwLCAqY21wc2Zfc3BsaXRfdmZwKQoJKCpjbXBzZl90cmFwX3NwbGl0X3ZmcCwgKmNtcHNmX3ZmcCwgKmNtcHNmX3RyYXBfdmZwKTogVXNlICd0JwoJd2hlcmUgYXBwcm9wcmlhdGUgZm9yIHNpbmdsZS13b3JkIHJlZ2lzdGVycy4KCSgqbW92c2ZfdmZwLCAqdGh1bWIyX21vdnNmX3ZmcCwgKm1vdmRmX3ZmcCwgKnRodW1iMl9tb3ZkZl92ZnApOgoJQXMgYWJvdmUuIEZpeCB0eXBlIGF0dHJpYnV0ZXMuCgkqIGNvbmZpZy9hcm0vY29uc3RyYWludHMubWQgKHJlZ2lzdGVyX2NvbnRyYWludCAidCIpOiBEZWZpbmUuCgkocmVnaXN0ZXJfY29uc3RyYWludCAidyIpOiBDaGFuZ2UgdG8gRDAtRDE1LCBvciBEMC1EMzEgZm9yCglWRlB2My9ORU9OLgoJKHJlZ2lzdGVyX2NvbnN0cmFpbnQgIngiKTogRGVmaW5lLgoJKGNvbnN0cmFpbnQgIkR2Iik6IERlZmluZS4KCjIwMDctMDctMDMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdHJlZS5oIChERUNMX0FMSUdOKTogUHJldmVudCB1c2Ugb24gYSBGVU5DVElPTl9ERUNMLgoKMjAwNy0wNy0wMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogYy1wYXJzZXIuYyAob2JqY19wcV9jb250ZXh0KTogUmVtb3ZlZC4KCShvYmpjX25lZWRfcmF3X2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShjX3BhcnNlcikgPG9iamNfcHFfY29udGV4dD46IE5ldyBmaWVsZC4KCTxvYmpjX25lZWRfcmF3X2lkZW50aWZpZXI+OiBMaWtld2lzZS4KCShPQkpDX05FRURfUkFXX0lERU5USUZJRVIpOiBSZW1vdmVkLgoJKGNfbGV4X29uZV90b2tlbik6IFVwZGF0ZS4KCShjX3BhcnNlcl9vYmpjX3Byb3RvY29sX2RlZmluaXRpb24pOiBVcGRhdGUuCgkoY19wYXJzZXJfb2JqY19tZXRob2RfZGVmaW5pdGlvbik6IFVwZGF0ZS4KCShjX3BhcnNlcl9vYmpjX21ldGhvZHByb3RvKTogVXBkYXRlLgoJKGNfcGFyc2VyX2RlY2xzcGVjcyk6IFVwZGF0ZS4KCjIwMDctMDctMDMgIERhdmlkIFVuZyAgPGRhdmlkdUBtaXBzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19pc3N1ZV9yYXRlKTogUmV0dXJuIDQgZm9yIDc0SyBwcm9jZXNzb3JzLgoKMjAwNy0wNy0wMyAgRGF2aWQgVW5nICA8ZGF2aWR1QG1pcHMuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbWFyY2g9NzRrZjNfMi4KCSogY29uZmlnL21pcHMvbWlwcy5oIChQUk9DRVNTT1JfNzRLRjNfMik6IE5ldyBwcm9jZXNzb3JfdHlwZS4KCShUVU5FXzc0Syk6IENoZWNrIGZvciBpdC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NwdV9pbmZvKTogQWRkIDc0a2YzXzIuCgkobWlwc19ydHhfY29zdF9kYXRhKTogQWRkIGFuIGVudHJ5IGZvciBQUk9DRVNTT1JfNzRLRjNfMi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoY3B1KTogQWRkIDc0a2YzXzIuCgkqIGNvbmZpZy9taXBzLzc0ay5tZCAocjc0a19pbnRfbG9naWNhbCwgcjc0a19pbnRfYXJpdGgsIHI3NGtfaW50X25vcCkKCShyNzRrX2ludF9jbW92ZSwgcjc0a19pbnRfbXVsdCwgcjc0a19pbnRfbXVsMywgcjc0a19pbnRfbWZoaWxvKQoJKHI3NGtfaW50X210aGlsbywgcjc0a19pbnRfZGl2LCByNzRrX2ludF9jYWxsLCByNzRrX2ludF9qdW1wKQoJKHI3NGtfaW50X2xvYWQsIHI3NGtfaW50X3N0b3JlLCByNzRrX3Vua25vd24sIHI3NGtfbXVsdGkpOiBBZGQKCTc0a2YzXzIgdG8gdGhlIENQVSBsaXN0LgoJKHI3NGtmM18yX2ZhZGQsIHI3NGtmM18yX2Ztb3ZlLCByNzRrZjNfMl9mbG9hZCwgcjc0a2YzXzJfZnN0b3JlKQoJKHI3NGtmM18yX2ZtdWxfc2YsIHI3NGtmM18yX2ZtdWxfZGYsIHI3NGtmM18yX2ZkaXZfc2YpCgkocjc0a2YzXzJfZmRpdl9kZiwgcjc0a2YzXzJfZnJzcXJ0X3NmLCByNzRrZjNfMl9mcnNxcnRfZGYpCgkocjc0a2YzXzJfZmNtcCwgcjc0a2YzXzJfZmN2dCwgcjc0a2YzXzJfZnhmZXJfdG9fYzEpCgkocjc0a2YzXzJfZnhmZXJfZnJvbV9jMSk6IE5ldyBpbnNuIHJlc2VydmF0aW9ucy4KCjIwMDctMDctMDMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoJICAgIERhdmlkIFVuZyAgPGRhdmlkdUBtaXBzLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVwbGFjZSAtbWFyY2g9MjRrZiB3aXRoIC1tYXJjaD0yNGtmMl8xIGFuZAoJLW1hcmNoPTI0a3ggd2l0aCAtbWFyY2g9MjRrZjFfMS4gIExpa2V3aXNlIDI0a2VbZnhdLCAzNGtbZnhdCglhbmQgNzRrW2Z4XS4gIERvY3VtZW50IGFsaWFzZXMgZm9yIHRoZSBuZXcgb3B0aW9ucy4KCSogY29uZmlnL21pcHMvbWlwcy5oIChQUk9DRVNTT1JfMjRLRik6IFJlbmFtZSB0by4uLgoJKFBST0NFU1NPUl8yNEtGMl8xKTogLi4udGhpcy4KCShQUk9DRVNTT1JfMjRLWCk6IFJlbmFtZSB0by4uLgoJKFBST0NFU1NPUl8yNEtGMV8xKTogLi4udGhpcy4KCShQUk9DRVNTT1JfNzRLRik6IFJlbmFtZSB0by4uLgoJKFBST0NFU1NPUl83NEtGMl8xKTogLi4udGhpcy4KCShQUk9DRVNTT1JfNzRLWCk6IFJlbmFtZSB0by4uLgoJKFBST0NFU1NPUl83NEtGMV8xKTogLi4udGhpcy4KCShUVU5FXzc0Syk6IFVwZGF0ZSBQUk9DRVNTT1JfKiBuYW1lcy4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NwdV9pbmZvKTogQWRkIDI0a2YyXzEgYXMgYSBzeW5vbnltCglmb3IgMjRrZi4gIEFkZCAyNGtmMV8xIGFuZCAyNGtmeCBhcyBzeW5vbnltcyBmb3IgMjRreC4gIExpa2V3aXNlCgl0aGUgMjRrZSosIDM0ayogYW5kIDc0ayogcHJvY2Vzc29ycy4gIFVwZGF0ZSBQUk9DRVNTT1JfKiBuYW1lcy4KCShtaXBzX3J0eF9jb3N0X2RhdGEpOiBVcGRhdGUgcHJvY2Vzc29yIG5hbWVzIGluIGNvbW1lbnRzLgoJKG1pcHNfaXNzdWVfcmF0ZSk6IFVwZGF0ZSBQUk9DRVNTT1JfKiBuYW1lcy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoY3B1KTogUmVuYW1lIDI0a2YgdG8gMjRrZjJfMSwgMjRreCB0bwoJMjRrZjFfMSwgNzRrZiB0byA3NGtmMl8xIGFuZCA3NGt4IHRvIDc0a2YxXzEuCgkqIGNvbmZpZy9taXBzLzI0ay5tZDogUmVuYW1lIEZQVS1yZWxhdGVkIHIyNGtfKiBpbnNuIHJlc2VydmF0aW9ucwoJdG8gcjI0a2YyXzFfKi4gIFJlbmFtZSByMjRreF8qIGluc24gcmVzZXJ2YXRpb25zIHRvIHIyNGtmMV8xXyouCglVcGRhdGUgY3B1IGF0dHJpYnV0ZSBuYW1lcy4KCShyMjRrX2ZwdV9pc3MpOiBSZW5hbWUgdGhpcyByZXNlcnZhdGlvbiB0by4uLgoJKHIyNGtmMl8xX2ZwdV9pc3MpOiAuLi50aGlzIGFuZCB1cGRhdGUgYWxsIHVzZXMuCgkocjI0a3hfZnB1X2lzcyk6IFJlbmFtZSB0aGlzIHJlc2VydmF0aW9uIHRvLi4uCgkocjI0a2YxXzFfZnB1X2lzcyk6IC4uLnRoaXMgYW5kIHVwZGF0ZSBhbGwgdXNlcy4KCSogY29uZmlnL21pcHMvNzRrLm1kOiBSZW5hbWUgRlBVLXJlbGF0ZWQgcjc0a2ZfKiBpbnNuIHJlc2VydmF0aW9ucwoJdG8gcjc0a2YyXzFfKi4gIFJlbmFtZSByNzRreF8qIGluc24gcmVzZXJ2YXRpb25zIHRvIHI3NGtmMV8xXyouCglVcGRhdGUgY3B1IGF0dHJpYnV0ZSBuYW1lcy4KCjIwMDctMDctMDEgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL20zMnIvY29uc3RyYWludHMubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvbTMyci9tMzJyLmM6IEluY2x1ZGUgdG0tY29uc3Rycy5oLgoJKHNtYWxsX2RhdGFfb3BlcmFuZCk6IFVzZSBzYXRpc2ZpZXNfY29uc3RyYWludF8qIGluc3RlYWQgb2YgbWFjcm8uCgkoYWRkcjI0X29wZXJhbmQsIGdlbl9jb21wYXJlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogUmVtb3ZlLgoJKElOVDhfUCwgVVBQRVIxNl9QLCBVSU5UMzJfUCwgVUlOVDVfUCwgSU5WRVJURURfU0lHTkVEXzhCSVQsCglDT05TVF9PS19GT1JfTEVUVEVSX1AsIENPTlNUX0RPVUJMRV9PS19GT1JfTEVUVEVSX1AsCglFWFRSQV9DT05TVFJBSU5UKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIubWQ6IEluY2x1ZGUgY29uc3RyYWludHMubWQuCgkoKm1vdnNpX2luc24pOiBVc2Ugc2F0aXNmaWVzX2NvbnN0cmFpbnRfKiBpbnN0ZWFkIG9mIG1hY3JvLgoJKGFuZHNpMywgaW9yc2kzLCB4b3JzaTMsIHNlcV9pbnNuKzEsIHNuZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9wcmVkaWNhdGVzLm1kIChjb25kaXRpb25hbF9tb3ZlX29wZXJhbmQpOiBMaWtld2lzZS4KCSh0d29faW5zbl9jb25zdF9vcGVyYW5kLCBpbnQ4X29wZXJhbmQsIHVpbnQxNl9vcGVyYW5kLAoJcmVnX29yX2ludDE2X29wZXJhbmQsIHJlZ19vcl91aW50MTZfb3BlcmFuZCwKCXJlZ19vcl9jbXBfaW50MTZfb3BlcmFuZCwgY21wX2ludDE2X29wZXJhbmQsCglzZXRoX2FkZDNfb3BlcmFuZCk6IExpa2V3aXNlLgoKMjAwNy0wNy0wMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGdtYWlsLmNvbT4KCgkqIGxpYmdjYzIuaDogQ29uZGl0aW9uYWxseSBkZWNsYXJlIF9fYnN3YXBzaTIgYW5kCglfX2Jzd2FwZGkyLgoJCjIwMDctMDctMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGRkZy5jIChjaGVja19zY2NzKTogRGVmaW5lIG9ubHkgaWYgRU5BQkxFX0NIRUNLSU5HIGlzCglkZWZpbmVkLgoKMjAwNy0wNy0wMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJUFIgdGFyZ2V0LzI4MzA3CgkqIGd0aHItcG9zaXguaCBbU1VQUE9SVFNfV0VBSyAmJiBHVEhSRUFEX1VTRV9XRUFLXQoJKF9fZ3RocndfcHJhZ21hKTogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb24uCgkoX19ndGhydzIpOiBVc2UgaXQuCgkqIGd0aHItcG9zaXguYyAoX19ndGhyd19wcmFnbWEpOiBEZWZpbmUuCgoyMDA3LTA3LTAzICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUtc3NhLXNjY3ZuLmMgKHNldF9zc2FfdmFsX3RvKTogQ2hlY2sgZm9yIG9wZXJhbmRfZXF1YWxfcAoJYmVmb3JlIGRlY2xhcmluZyBpbmVxdWFsaXR5LgoKMjAwNy0wNy0wMyAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogY29tYmluZS5jIChyZWNvZ19mb3JfY29tYmluZSk6IExvZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mCgkgIG1hdGNoaW5nIG5ldyBpbnNuIHBhdHRlcm5zIGFnYWluc3QgdGhlIG1hY2hpbmUgZGVzY3JpcHRpb24gaW4KCSAgZGV0YWlsZWQgZHVtcHMuCgoyMDA3LTA3LTAzICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBkZGcuYyAocHJpbnRfc2Njcyk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19zY2NzKTogTmV3IGZ1bmN0aW9uLgoJKGNyZWF0ZV9kZGdfYWxsX3NjY3MpOiBVc2UgaXQuCgkqIGRkZy5oIChwcmludF9zY2NzKTogRGVjbGFyZS4KCSogbW9kdWxvLXNjaGVkLmMgKHNtc19vcmRlcl9ub2Rlcyk6IENhbGwgcHJpbnRfc2Njcy4KCjIwMDctMDctMDMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9tb2RlX2Zvcl9zdWZmaXgpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X21vZGVfZm9yX3N1ZmZpeCk6IE5ldyBkZWZhdWx0IHRhcmdldCBob29rLgoJKiB0YXJnZXQuaCAoc3RydWN0IGMpOiBOZXcgc3RydWN0dXJlIGluIHRoZSB0YXJnZXRtIHN0cnVjdC4KCShtb2RlX2Zvcl9zdWZmaXgpOiBOZXcgdGFyZ2V0IGhvb2sgYXMgcGFydCBvZiBzdHJ1Y3QgYy4KCXRhcmdldC1kZWYuaCAoVEFSR0VUX0NfTU9ERV9GT1JfU1VGRklYKTogRGVmaW5lIGFzCglkZWZhdWx0X21vZGVfZm9yX3N1ZmZpeC4KCShUQVJHRVRfQyk6IE5ldyBkZWZpbmUuCgkqIGMtbGV4LmM6IEluY2x1ZGUgInRhcmdldC5oIi4KCShpbnRlcnByZXRfZmxvYXQpOiBVc2UgdGFyZ2V0bS5jLm1vZGVfZm9yX3N1ZmZpeCB0byBkZXRlcm1pbmUKCXRoZSBtb2RlIGZvciBhIGdpdmVuIG5vbi1zdGFuZGFyZCBzdWZmaXguCglNYWtlZmlsZS5pbiAoYy1sZXgubyk6IERlcGVuZCBvbiAkKFRBUkdFVF9IKS4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9jX21vZGVfZm9yX3N1ZmZpeCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoVEFSR0VUX0NfTU9ERV9GT1JfU1VGRklYKTogRGVmaW5lIHRvIGl4ODZfY19tb2RlX2Zvcl9zdWZmaXguCgoJKiBkb2MvZXh0ZW5kLnRleGkgKEZsb2F0aW5nIFR5cGVzKTogTmV3IG5vZGUuICBEb2N1bWVudCBfX2Zsb2F0ODAgYW5kCglfX2Zsb2F0MTI4IHR5cGVzLiAgRG9jdW1lbnQgJ3cnLCAnVycsICdxJyBhbmQgJ1EnIHN1ZmZpeGVzLgoKMjAwNy0wNy0wMyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgdGFyZ2V0LzMyNTA2CgkqIGNvbmZpZy9zaC9zaC5tZCAodWRpdnNpM19pMV9tZWRpYSk6IFVzZSB0YXJnZXRfcmVnX29wZXJhbmQKCXByZWRpY2F0ZSBpbnN0ZWFkIG9mIHRhcmdldF9vcGVyYW5kLgoJKGRpdnNpM19pMV9tZWRpYSwgZGl2c2kzX21lZGlhXzIpOiBMaWtld2lzZS4KCjIwMDctMDctMDIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLmggKGFsaWFzX3NldHNfbWlnaHRfY29uZmxpY3RfcCk6IFJlbmFtZSBpbnRvCglhbGlhc19zZXRzX211c3RfY29uZmxpY3RfcC4KCSogYWxpYXMuYyAoYWxpYXNfc2V0c19taWdodF9jb25mbGljdF9wKTogTGlrZXdpc2UuCgkoYWxpYXNfc2V0c19jb25mbGljdF9wKTogVXNlIGl0LgoJKG9iamVjdHNfbXVzdF9jb25mbGljdF9wKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKHN0cmljdF9hbGlhc2luZ193YXJuaW5nKTogQWRqdXN0LgoKMjAwNy0wNy0wMiAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJKiBydGxob29rcy5jIChnZW5fbG93cGFydF9pZl9wb3NzaWJsZSk6IENoZWNrIGZvcgoJaW52YWxpZCBzdWJyZWcgYmVmb3JlIGNhbGxpbmcgZ2VuX2xvd3BhcnRfU1VCUkVHLgoKMjAwNy0wNy0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luOS5oOiBBZGQgY29weXJpZ2h0IG5vdGljZS4KCShMSU5LX0NPTU1BTkRfU1BFQyk6IEFkZCBjb21tZW50LgoJKERBUldJTl9MSUJTWVNURU1fSEFTX1VOV0lORCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoTURfVU5XSU5EX1NVUFBPUlQpOiBDb25kaXRpb25hbGlzZSBvbgoJREFSV0lOX0xJQlNZU1RFTV9IQVNfVU5XSU5ELgoKMjAwNy0wNy0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbGliZ29tcC8zMjQ2OAoJKiBvbXAtbG93LmMgKGNoZWNrX2NvbWJpbmVkX3BhcmFsbGVsKTogTmV3IGZ1bmN0aW9uLgoJKGxvd2VyX29tcF9wYXJhbGxlbCk6IENhbGwgaXQgdmlhIHdhbGtfc3RtdHMsIHNldAoJT01QX1BBUkFMTEVMX0NPTUJJTkVEIGlmIGFwcHJvcHJpYXRlLgoJKGRldGVybWluZV9wYXJhbGxlbF90eXBlKTogSWYgT01QX0ZPUiByZXNwLiBPTVBfU0VDVElPTlMKCWlzbid0IHRoZSBvbmx5IHN0YXRlbWVudCBpbiBXU19FTlRSWV9CQiBvciBPTVBfUkVUVVJOCgl0aGUgb25seSBvbmUgaW4gUEFSX0VYSVRfQkIgYW5kIG5vdCBPTVBfUEFSQUxMRUxfQ09NQklORUQsCglkb24ndCBjb25zaWRlciBpdCBhcyBjb21iaW5lZCBwYXJhbGxlbC4KCjIwMDctMDctMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjIChnY2NfZ3h4X2luY2x1ZGVfZGlyKTogVXNlICQobGlic3ViZGlyX3RvX3ByZWZpeCkuCgkoZ2NjX3Rvb2xkaXIpOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbiAobGlic3ViZGlyX3RvX3ByZWZpeCk6IE5ldyB2YXJpYWJsZSwgYmFzZWQgb24gdGhlCglvbGQgY29uZmlndXJlLmFjIGdjY190b29sZGlyIHNldHRpbmcuCgkocHJlZml4X3RvX2V4ZWNfcHJlZml4KTogTmV3IHZhcmlhYmxlLgoJKERSSVZFUl9ERUZJTkVTKTogVXNlICQobGlic3ViZGlyX3RvX3ByZWZpeCkkKHByZWZpeF90b19leGVjX3ByZWZpeCkKCXJhdGhlciB0aGFuICQodW5saWJzdWJkaXIpLy4uLyB0byBkZXJpdmUgVE9PTERJUl9CQVNFX1BSRUZJWC4KCjIwMDctMDctMDIgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8zMjU4MwoJRml4IFBSIHRyZWUtb3B0aW1pemF0aW9uLzMyNTg0CgkqIHRyZWUtc3NhLXByZS5jIChwaGlfdHJhbnNsYXRlKTogQWx3YXlzIHBhc3Mgc2VlbiBiaXRtYXAuCgkocGhpX3RyYW5zbGF0ZV9zZXQpOiBVc2UgcGhpX3RyYW5zbGF0ZSBkaXJlY3RseSBub3cuCgkobWFrZV92YWx1ZXNfZm9yX3N0bXQpOiBEb24ndCB2YWx1ZSBudW1iZXIgUkhTIGlmIHdlIGFscmVhZHkga25vdwoJaXQgaXMgY29uc3RhbnQuCgoyMDA3LTA3LTAyICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCSAgICBKaW0gV2lsc29uIDx3aWxzb25Ac3BlY2lmaXguY29tPgoKCVBSIHRhcmdldC8zMTY4NAoJKiBoYWlmYS1zY2hlZC5jIChhZGRfdG9fc3BlY3VsYXRpdmVfYmxvY2spOiBDaGFuZ2UgY29weV9ydHggdG8KCWNvcHlfaW5zbi4KCjIwMDctMDctMDIgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOaWdlbCBTdGVwaGVucyAgPG5pZ2VsQG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwczE2ZV9zYXZlX3Jlc3RvcmVfaW5mbyk6IE5ldyBzdHJ1Y3QuCgkobWlwczE2ZV9vdXRwdXRfc2F2ZV9yZXN0b3JlKTogRGVjbGFyZS4KCShtaXBzMTZlX3NhdmVfcmVzdG9yZV9wYXR0ZXJuX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChHRU5FUkFURV9NSVBTMTZFX1NBVkVfUkVTVE9SRSk6IE5ldyBtYWNyby4KCSogY29uZmlnL21pcHMvbWlwcy5jIChNSVBTX01BWF9GSVJTVF9TVEFDS19TVEVQKTogUmV0dXJuIDB4N2Y4Cglmb3IgR0VORVJBVEVfTUlQUzE2RV9TQVZFX1JFU1RPUkUuICBSZXR1cm4gMHg0MDAgZm9yIFRBUkdFVF9NSVBTMTYKCSYmICFHRU5FUkFURV9NSVBTMTZFX1NBVkVfUkVTVE9SRSAmJiAhVEFSR0VUXzY0QklULgoJKEJJVFNFVF9QKTogTmV3IGdsb2JhbCBtYWNybywgZXh0cmFjdGVkIGZyb20uLi4KCShtaXBzX2Zvcl9lYWNoX3NhdmVkX3JlZyk6IC4uLmhlcmUuCgkobWlwczE2ZV9zYXZlX3Jlc3RvcmVfaW5mbyk6IE5ldyBzdHJ1Y3QuCgkobWlwczE2ZV9zMl9zOF9yZWdzLCBtaXBzMTZlX2EwX2EzX3JlZ3MpOiBOZXcgdmFyaWFibGVzLgoJKG1pcHMxNmVfc2F2ZV9yZXN0b3JlX3JlZ3MpOiBOZXcgdmFyaWFibGUuCgkobWlwc19zcGxpdF9wbHVzLCBtaXBzMTZlX2ZpbmRfZmlyc3RfcmVnaXN0ZXIpOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHMxNmVfbWFza19yZWdpc3RlcnMpOiBOZXcgZnVuY3Rpb24uCgkoY29tcHV0ZV9mcmFtZV9zaXplKTogRXhwYW5kIHRoZSBjb21tZW50YXJ5IGJlZm9yZSB0aGUgZnVuY3Rpb24uCglFbmZvcmNlIHRoZSBNSVBTMTZlIHNhdmUgYW5kIHJlc3RvcmUgcmVnaXN0ZXIgcmFuZ2UgcmVzdHJpY3Rpb25zLgoJUGFkIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHNhdmUgYXJlYSBhdCB0aGUgbG93IGVuZC4KCShtaXBzMTZlX3NhdmVfcmVzdG9yZV9yZWcsIG1pcHMxNmVfYnVpbGRfc2F2ZV9yZXN0b3JlKQoJKG1pcHMxNmVfc2F2ZV9yZXN0b3JlX3BhdHRlcm5fcCwgbWlwczE2ZV9hZGRfcmVnaXN0ZXJfcmFuZ2UpCgkobWlwczE2ZV9vdXRwdXRfc2F2ZV9yZXN0b3JlLCBtaXBzMTZlX2NvbGxlY3RfcHJvcGFnYXRlX3ZhbHVlKQoJKG1pcHMxNmVfY29sbGVjdF9hcmd1bWVudF9zYXZlLCBtaXBzMTZlX2NvbGxlY3RfYXJndW1lbnRfc2F2ZXMpOgoJTmV3IGZ1bmN0aW9ucy4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSwgbWlwc19leHBhbmRfZXBpbG9ndWUpOiBIYW5kbGUKCUdFTkVSQVRFX01JUFMxNkVfU0FWRV9SRVNUT1JFLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqbWlwczE2ZV9zYXZlX3Jlc3RvcmUpOiBOZXcgcGF0dGVybi4KCjIwMDctMDctMDIgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE5NjYKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyNTMzCgkqIHRyZWUtaWYtY29udi5jIChhZGRfdG9fZHN0X3ByZWRpY2F0ZV9saXN0KTogVXNlICJlZGdlIiwgbm90CgkiYmFzaWNfYmxvY2siIGRlc2NyaXB0aW9uIGFzIGl0cyB0aGlyZCBhcmd1bWVudC4gIFVwZGF0ZSBmdW5jdGlvbgoJY2FsbHMgdG8gZ2V0IGRlc3RpbmF0aW9uIGJiIGZyb20gImVkZ2UiIGFyZ3VtZW50LiAgU2F2ZSAiY29uZCIgaW50bwoJYXV4IGZpZWxkIG9mIHRoZSBlZGdlLiAgVXBkYXRlIHByb3RvdHlwZSBmb3IgY2hhbmdlZCBhcmd1bWVudHMuCgkoaWZfY29udmVydGlibGVfbG9vcF9wKTogQ2xlYXIgYXV4IGZpZWxkIG9mIGluY29taW5nIGVkZ2VzIGlmIGJiCgljb250YWlucyBwaGkgbm9kZS4KCShmaW5kX3BoaV9yZXBsYWNlbWVudF9jb25kaXRpb24pOiBPcGVyYXRlIG9uIGluY29taW5nIGVkZ2VzLCBub3QKCW9uIHByZWRlY2Vzc29yIGJsb2Nrcy4gIElmIHRoZXJlIGlzIGEgY29uZGl0aW9uIHNhdmVkIGluIHRoZQoJaW5jb21pbmcgZWRnZSBhdXggZmllbGQsIEFORCBpdCB3aXRoIGluY29taW5nIGJiIHByZWRpY2F0ZS4KCVJldHVybiBzb3VyY2UgYmIgb2YgdGhlIGZpcnN0IGVkZ2UuCgkoY2xlYW5fcHJlZGljYXRlX2xpc3RzKTogQ2xlYW4gYXV4IGZpZWxkIG9mIG91dGdvaW5nIG5vZGUgZWRnZXMuCgkodHJlZV9pZl9jb252ZXJzaW9uKTogRG8gbm90IGluaXRpYWxpemUgY29uZCB2YXJpYWJsZS4gTW92ZQoJdmFyaWFibGUgZGVjbGFyYXRpb24gaW50byB0aGUgbG9vcC4KCShyZXBsYWNlX3BoaV93aXRoX2NvbmRfZ2ltcGxlX21vZGlmeV9zdG10KTogUmVtb3ZlIHVubmVkZWQKCWluaXRpYWxpemF0aW9ucyBvZiBuZXdfc3RtdCwgYXJnMCBhbmQgYXJnMSB2YXJpYWJsZXMuCgoyMDA3LTA3LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRyZWUtbnJ2LmMgKGRlc3Rfc2FmZV9mb3JfbnJ2X3ApOiBHcm9rIGFueSBoYW5kbGVkX2NvbXBvbmVudF9wLAoJU1NBX05BTUVzLCBSRVNVTFRfREVDTHMgYW5kIFBBUk1fREVDTHMuCgoyMDA3LTA3LTAyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS5jICh1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wKTogRG9jdW1lbnQKCWZ1dHVyZSBpbnRlbnQgYXMgZGVmaW5pbmcgdGhlIG1pZGRsZS1lbmQgdHlwZSBzeXN0ZW0uCglSZS1zdHJ1Y3R1cmUgdG8gY2FsbCBsYW5naG9vayBsYXN0LCBncm91cCBieSB0eXBlIGNsYXNzLAoJbWFyayBxdWVzdGlvbmFibGUgcGFydHMuCgoyMDA3LTA3LTAyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLWZsb3cuaCAodHlwZXNfY29tcGF0aWJsZV9wKTogRGVjbGFyZS4KCSogdHJlZS1zc2EuYyAodHlwZXNfY29tcGF0aWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBpcGEtdHlwZS1lc2NhcGUuYyAoZGlzY292ZXJfdW5pcXVlX3R5cGUpOiBVc2UKCXR5cGVzX2NvbXBhdGlibGVfcCBpbnN0ZWFkIG9mIGxhbmdfaG9va3MudHlwZXNfY29tcGF0aWJsZV9wLgoJKiB0cmVlLXNzYS1jb3B5cmVuYW1lLmMgKGNvcHlfcmVuYW1lX3BhcnRpdGlvbl9jb2FsZXNjZSk6IExpa2V3aXNlLgoJKiB0cmVlLXZuLmMgKGV4cHJlc3Npb25zX2VxdWFsX3ApOiBMaWtld2lzZS4KCSogdHJlZS5jIChmaWVsZHNfY29tcGF0aWJsZV9wKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jIChhdmFpbF9leHByX2VxKTogTGlrZXdpc2UuCgkoY3Byb3Bfb3BlcmFuZCk6IFVzZSB1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wIGluc3RlYWQgb2YKCWxhbmdfaG9va3MudHlwZXNfY29tcGF0aWJsZV9wLgoJKiB0cmVlLWlubGluZS5jIChzZXR1cF9vbmVfcGFyYW1ldGVyKTogTGlrZXdpc2UuCgkoZGVjbGFyZV9yZXR1cm5fdmFyaWFibGUpOiBMaWtld2lzZS4KCSogdHJlZS1ucnYuYyAodHJlZV9ucnYpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY2NwLmMgKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2FycmF5X3JlZik6IExpa2V3aXNlLgoJKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShtYXliZV9mb2xkX29mZnNldF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY29weS5jIChtYXlfcHJvcGFnYXRlX2NvcHkpOiBMaWtld2lzZS4KCShtZXJnZV9hbGlhc19pbmZvKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwcl8xKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXBoaW9wdC5jIChjb25kaXRpb25hbF9yZXBsYWNlbWVudCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1yZWFzc29jLmMgKG9wdGltaXplX29wc19saXN0KTogTGlrZXdpc2UuCgkqIHRyZWUtdGFpbGNhbGwuYyAoZmluZF90YWlsX2NhbGxzKTogTGlrZXdpc2UuCgkqIHRyZWUtdmVjdC1nZW5lcmljLmMgKGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uc18xKTogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmMgKGNhbm9uaWNhbGl6ZV9hZGRyX2V4cHIpOiBMaWtld2lzZS4KCShmb2xkX2luZGlyZWN0X3JlZl9yaHMpOiBMaWtld2lzZS4KCShnaW1wbGlmeV9hZGRyX2V4cHIpOiBMaWtld2lzZS4gIFN3YXAgcGFyYW1ldGVycyB0byBjcHRfc2FtZV90eXBlLgoJKGNwdF9zYW1lX3R5cGUpOiBMaWtld2lzZS4KCShjaGVja19wb2ludGVyX3R5cGVzX3IpOiBTd2FwIHBhcmFtZXRlcnMgdG8gY3B0X3NhbWVfdHlwZQoJd2hlcmUgYXBwcm9wcmlhdGUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb252ZXJ0KTogUmV2ZXJ0IGZpeCBmb3IgUFIxNTk4OC4KCSogdHJlZS1pbmxpbmUuYyAoc2V0dXBfb25lX3BhcmFtZXRlcik6IEluc3RlYWQgZml4IGl0IGhlcmUgYnkKCXVzaW5nIGZvbGRfYnVpbGQxIGluc3RlYWQgb2YgZm9sZF9jb252ZXJ0IGFuZCBjaGVja2luZyBmb3IKCWVycm9yX21hcmtfbm9kZS4gIENvbnZlcnQgb25seSBpZiB0aGUgY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuCgoyMDA3LTA3LTAyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIC5nbnVfYXR0cmlidXRlIG9uIFBvd2VyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9maWxlX3N0YXJ0KTogSWYgc3VwcG9ydGVkLCBvdXRwdXQKCWF0dHJpYnV0ZSBmb3IgZmxvYXRpbmctcG9pbnQgQUJJLgoKMjAwNy0wNy0wMiAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyMjMwCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjQ3NwoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfZGF0YV9yZWZzKTogRmFpbCBpZiBiYXNlIAoJYWRkcmVzcyBpcyBhIGNvbnN0YW50LgoKMjAwNy0wNy0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjIChtaXBzaXNhMzItKi1lbGYqLCBtaXBzaXNhMzJlbC0qLWVsZiopCgkobWlwc2lzYTMycjItKi1lbGYqLCBtaXBzaXNhMzJyMmVsLSotZWxmKikKCShtaXBzaXNhNjQtKi1lbGYqLCBtaXBzaXNhNjRlbC0qLWVsZiopOiBDb21iaW5lIHRvcC1sZXZlbAoJc3Rhbnphcy4gIFVzZSB0aGUgZmlyc3QgcGFydCBvZiB0aGUgdHJpcGxldCB0byBzZXQgTUlQU19JU0FfREVGQVVMVC4KCVJlbW92ZSByZWR1bmRhbnQgc2V0dGluZyBvZiBNQVNLX0ZMT0FUNjQgYW5kIE1BU0tfNjRCSVQgZm9yIHRoZQoJNjQtYml0IHRhcmdldHMuICBBZGQgc3VwcG9ydCBmb3IgKi1lbGZvYWJpKi4KCSogY29uZmlnL21pcHMvdC1pc2EzMjY0IChNVUxUSUxJQl9PUFRJT05TLCBNVUxUSUxJQl9ESVJOQU1FUyk6IFVzZQoJZGlmZmVyZW50IHNldHRpbmdzIGlmICQodG1fZGVmaW5lcykgZG9lcyBub3Qgc2VsZWN0IHRoZSBFQUJJLgoJKE1VTFRJTElCX0VYQ0xVU0lPTlMpOiBEZWZpbmUgaW4gdGhvc2UgY2lyY3Vtc3RhbmNlcy4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNSVBTX0lTQV9MRVZFTF9PUFRJT05fU1BFQyk6IE5ldyBtYWNyby4KCShNSVBTX0FSQ0hfT1BUSU9OX1NQRUMpOiBMaWtld2lzZS4KCShNSVBTX0lTQV9MRVZFTF9TUEVDKTogTGlrZXdpc2UuCgkoT1BUSU9OX0RFRkFVTFRfU1BFQ1MpOiBVc2UgTUlQU19BUkNIX09QVElPTl9TUEVDLgoJKiBjb25maWcvbWlwcy9lbGZvYWJpLmg6IE5ldyBmaWxlLgoKMjAwNy0wNy0wMiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1mbG93LmggKHRyZWVfc3NhX3VzZWxlc3NfdHlwZV9jb252ZXJzaW9uXzEpOiBSZW5hbWUgdG8gLi4uCgkodXNlbGVzc190eXBlX2NvbnZlcnNpb25fcCk6IC4uLiB0aGlzLgoJKiB0cmVlLXNzYS5jICh0cmVlX3NzYV91c2VsZXNzX3R5cGVfY29udmVyc2lvbl8xKTogUmVuYW1lIHRvIC4uLgoJKHVzZWxlc3NfdHlwZV9jb252ZXJzaW9uX3ApOiAuLi4gdGhpcy4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX21lbW9yeV9vcCk6IFJlbmFtZQoJdHJlZV9zc2FfdXNlbGVzc190eXBlX2NvbnZlcnNpb25fMSB0byB1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wLgoJKiB0cmVlLWNmZy5jICh2ZXJpZnlfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1hZGRyZXNzLmMgKHRyZWVfc3NhX3VzZWxlc3NfdHlwZV9jb252ZXJzaW9uXzEpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY2NwLmMgKGNjcF9mb2xkKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWNvcHkuYyAobWF5X3Byb3BhZ2F0ZV9jb3B5KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jIChlbGltaW5hdGVfcmVkdW5kYW50X2NvbXB1dGF0aW9ucyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2V4cHJfMSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHJlZmluZV9ib3VuZHNfdXNpbmdfZ3VhcmQpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtcHJlLmMgKGVsaW1pbmF0ZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS5jIChkZWxldGVfdHJlZV9zc2EpOiBMaWtld2lzZS4KCSh0cmVlX3NzYV91c2VsZXNzX3R5cGVfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkMl9zdGF0KTogTGlrZXdpc2UuCgoyMDA3LTA3LTAxICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI1NzEKCSogdHJlZS1zc2Etc2Njdm4uYyAodmlzaXRfdXNlKTogU2hvcnRjdXQgY29waWVzIHRvIGF2b2lkCglzaW1wbGlmeWluZyB0aGVtLgoKMjAwNy0wNy0wMSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1zY2N2bi5jIChjb3B5X3JlZmVyZW5jZV9vcHNfZnJvbV9yZWYpOiBIYW5kbGUgY29uc3RhbnRzCglhbmQgb3RoZXIgZXhwZWN0ZWQgb3BlcmF0aW9ucyBleHBsaWNpdGx5LCBjaGFuZ2UgZGVmYXVsdCB0bwoJZ2NjX3VucmVhY2hhYmxlLiAKCjIwMDctMDctMDEgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fY2Fubm90X2NvcHlfaW5zbl9wKTogRG8gbm90IGV4cGVjdCBhCglQQVJBTExFTC4KCSogY29uZmlnL2FybS9hcm0ubWQgKHBpY19hZGRfZG90X3BsdXNfZm91ciwgcGljX2FkZF9kb3RfcGx1c19laWdodCkKCSh0bHNfbG9hZF9kb3RfcGx1c19laWdodCk6IE1vdmUgdGhlIGxhYmVsIG51bWJlciBpbnRvIHRoZSB1bnNwZWMuCgkqIGNvbmZpZy9hcm0vdGh1bWIyLm1kIChwaWNfbG9hZF9kb3RfcGx1c19mb3VyKTogTGlrZXdpc2UuCgoyMDA3LTA3LTAxICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZHdhcmYyb3V0LmMgKGluaXRpYWxfcmV0dXJuX3NhdmUpOiBEZWZpbmUgb25seSBpZiB1c2VkLgoKMjAwNy0wNy0wMSAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCglVbnJldmVydGluZyBSaWNoYXJkJ3MgUmV2ZXJ0IG9mOgoKCTIwMDctMDYtMjcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZGNlLmMgKGRlbGV0YWJsZV9pbnNuX3BfMSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShkZWxldGFibGVfaW5zbl9wKTogLi4uaGVyZS4gIE9ubHkgdHJlYXQgYmFyZSBVU0VzIGFuZCBDTE9CQkVScwoJc3BlY2lhbGx5LCBub3QgdGhvc2UgaW5zaWRlIFBBUkFMTEVMcy4gIFJlbW92ZSBCT0RZIGFyZ3VtZW50CglhbmQgYWRqdXN0IHJlY3Vyc2l2ZSBjYWxsIGFjY29yZGluZ2x5LgoJKHByZXNjYW5faW5zbnNfZm9yX2RjZSk6IFVwZGF0ZSBjYWxsIHRvIGRlbGV0ZV9pbnNuX3AuCgoyMDA3LTA3LTAxICBWbGFkaW1pciBZYW5vdnNreSAgPHlhbm92QGlsLmlibS5jb20+CgkgICAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogZGRnLmMgKGNyZWF0ZV9kZGdfYWxsX3NjY3MpOiBGaXggbWlzc2VkCglpbml0aWFsaXphdGlvbiBvZiBzY2Nfbm9kZXMuCgoyMDA3LTA3LTAxICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzI1NTkKCSogZm9sZC1jb25zdC5jIChmb2xkLWJpbmFyeSkgW1BMVVNfRVhQUl06IENvbnZlcnQgflggKyBYIHRvIDEgb3IKCVggKyB+WCB0byAxIG9ubHkgZm9yIElOVEVHUkFMX1RZUEVfUCB0eXBlLgoKMjAwNy0wNi0zMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciAuZ251X2F0dHJpYnV0ZSBvbiBNSVBTLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2ZpbGVfc3RhcnQpOiBJZiBzdXBwb3J0ZWQsIG91dHB1dAoJYXR0cmlidXRlIGZvciBmbG9hdGluZy1wb2ludCBBQkkuCgoyMDA3LTA2LTMwICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMjQzMwoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChmZnNzaTIpOiBFeHBhbmQgYXMgZmZzX2Ntb3ZlIGZvciBUQVJHRVRfQ01PVkUuCgkoZmZzX2Ntb3ZlKTogTmV3IGV4cGFuZGVyIHRvIGV4cGFuZCB1c2luZyBjdHogcGF0dGVybi4KCSgqZmZzX2Ntb3ZlKTogUmVtb3ZlIHBhdHRlcm4uCgkoKmZmc19ub19jbW92ZSk6IEVuYWJsZSBvbmx5IGZvciAhVEFSR0VUX0NNT1ZFLgoJKGZmc2RpMik6IEV4cGFuZCB1c2luZyBjdHogcGF0dGVybi4KCSgqZmZzX3JleDY0KTogUmVtb3ZlIHBhdHRlcm4uCgoyMDA3LTA2LTMwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzIyOTYKCSogcGEubWQgKHJldHVybik6IERlbGV0ZSBwYXR0ZXJuLgoJKHJldHVybl9pbnRlcm5hbCk6IFJlbW92ZSAiKGNvbnN0X2ludCAxKSIgZnJvbSBwYXR0ZXJuLgoJKGVwaWxvZ3VlKTogVXNlIHJldHVybl9pbnRlcm5hbCBwYXR0ZXJuIGZvciB0cml2aWFsIHJldHVybnMuCgkqIHBhLXByb3Rvcy5oIChocHBhX2Nhbl91c2VfcmV0dXJuX2luc25fcCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogcGEuYyAoaHBwYV9jYW5fdXNlX3JldHVybl9pbnNuX3ApOiBEZWxldGUgZnVuY3Rpb24uICBJbmNsdWRlICJkZi5oIi4KCjIwMDctMDYtMzAgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtcHJlLmMgKGlzX2V4Y2VwdGlvbl9yZWxhdGVkKTogTmV3IGZ1bmN0aW9uCgkoY2FuX3ZhbHVlX251bWJlcl9vcGVyYXRpb24pOiBVc2UgaXQuCgoyMDA3LTA2LTMwICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCQoJRml4IFBSIHRyZWUtb3B0aW1pemF0aW9uLzMyNTQwCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE2NTEKCgkqIHRyZWUtc3NhLXNjY3ZuLmM6IE5ldyBmaWxlLgoKCSogdHJlZS1zc2Etc2Njdm4uaDogRGl0dG8uCgkKCSogdHJlZS12bi5jOiBJbmNsdWRlIHRyZWUtc3NhLXNjY3ZuLmgKCSh2YWxfZXhwcl9wYWlkX2QpOiBSZW1vdmVkLgoJKHZhbHVlX3RhYmxlKTogRGl0dG8uCgkodm5fY29tcHV0ZSk6IERpdHRvLgoJKHZhbF9leHByX3BhaXJfaGFzaCk6IERpdHRvLgoJKHZhbF9leHByX3BhaXJfZXhwcl9lcSk6IERpdHRvLgoJKGNvcHlfdnVzZXNfZnJvbV9zdG10KTogRGl0dG8uCgkodm5fZGVsZXRlKTogRGl0dG8uCgkodm5faW5pdCk6IERpdHRvLgoJKHNoYXJlZF92dXNlc19mcm9tX3N0bXQpOiBEaXR0by4KCShwcmludF9jcmVhdGlvbl90b19maWxlKTogTW92ZWQgdXAuCgkoc29ydF92dXNlcyk6IERpdHRvLgoJKHNvcnRfdnVzZXNfaGVhcCk6IERpdHRvLgoJKHNldF92YWx1ZV9oYW5kbGUpOiBNYWtlIG5vbi1zdGF0aWMuCgkobWFrZV92YWx1ZV9oYW5kbGUpOiBEaXR0by4KCSh2bl9hZGQpOiBSZXdyaXR0ZW4gdG8gdXNlIHNjY3ZuIGxvb2t1cHMuCgkodm5fYWRkX3dpdGhfdnVzZXMpOiBEaXR0by4KCSh2bl9sb29rdXApOiBEaXR0byAoYW5kIHNlY29uZCBhcmd1bWVudCByZW1vdmVkKS4KCSh2bl9sb29rdXBfd2l0aF92dXNlcyk6IERpdHRvLgoJKHZuX2xvb2t1cF9vcl9hZGQpOiBEaXR0byAoYW5kIHNlY29uZCBhcmd1bWVudCByZW1vdmVkKTsKCSh2bl9sb29rdXBfb3JfYWRkX3dpdGhfdnVzZXMpOiBEaXR0by4KCSh2bl9sb29rdXBfd2l0aF9zdG10KTogTmV3LgoJKHZuX2xvb2t1cF9vcl9hZGRfd2l0aF9zdG10KTogRGl0dG8uCgkoY3JlYXRlX3ZhbHVlX2hhbmRsZV9mb3JfZXhwcik6IERpdHRvLgoKCSogdHJlZS1zc2EtcHJlLmM6IEluY2x1ZGUgdHJlZS1zc2Etc2Njdm4uaC4KCShzZWVuX2R1cmluZ190cmFuc2xhdGUpOiBOZXcgZnVuY3Rpb24uCgkocGhpX3RyYW5zX2xvb2t1cCk6IFVzZSBpdGVyYXRpdmVfaGFzaF9leHByLCBub3Qgdm5fY29tcHV0ZS4KCShwaGlfdHJhbnNfYWRkKTogRGl0dG8uCgkoY29uc3RhbnRfZXhwcl9wKTogRklFTERfREVDTCBpcyBhbHdheXMgY29uc3RhbnQuCgkocGhpX3RyYW5zbGF0ZV8xKTogUmVuYW1lZCBmcm9tIHBoaV90cmFuc2xhdGUsIGFkZCBzZWVuIGJpdG1hcC4KCVVzZSBjb25zdGFudF9leHByX3AuCglBdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gb24gbXV0dWFsbHkgdmFsdWVkIGV4cHJlc3Npb25zLgoJQ2hhbmdlIGNhbGxlcnMgb2Ygdm5fbG9va3VwX29yX2FkZC4KCShwaGlfdHJhbnNsYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXB1dGVfYW50aWNfc2FmZSk6IEFsbG93IHBoaSBub2Rlcy4KCShjcmVhdGVfY29tcG9uZW50X3JlZl9ieV9waWVjZXMpOiBVcGRhdGUgZm9yIEZJRUxEX0RFQ0wgY2hhbmdlLgoJKGZpbmRfb3JfZ2VuZXJhdGVfZXhwcmVzc2lvbik6IFJld3JpdGUgc2xpZ2h0bHkuCgkoY3JlYXRlX2V4cHJlc3Npb25fYnlfcGllY2VzKTogVXBkYXRlZCBmb3Igdm5fbG9va3VwX29yX2FkZAoJY2hhbmdlLgoJVXBkYXRlIFZOX0lORk8gZm9yIG5ldyBuYW1lcy4KCShpbnNlcnRfaW50b19wcmVkc19vZl9ibG9jayk6IFVwZGF0ZSBmb3IgbmV3IG5hbWVzLgoJKGFkZF90b19leHBfZ2VuKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF90b19zZXRzKTogVXNlIHZuX2xvb2t1cF9vcl9hZGRfd2l0aF9zdG10LgoJKGZpbmRfZXhpc3RpbmdfdmFsdWVfZXhwcik6IFJld3JpdGUgdG8gY2hhbmdlZCB2bl9sb29rdXAuCgkoY3JlYXRlX3ZhbHVlX2V4cHJfZnJvbSk6IERpdHRvLCBhbmQgdXNlIGFkZF90b19leHBfZ2VuLgoJKHRyeV9sb29rX3Rocm91Z2hfbG9hZCk6IFJlbW92ZWQuCgkodHJ5X2NvbWJpbmVfY29udmVyc2lvbik6IERpdHRvLgoJKGdldF9zY2N2bl92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShtYWtlX3ZhbHVlc19mb3JfcGhpKTogRGl0dG8uCgkobWFrZV92YWx1ZXNfZm9yX3N0bXQpOiBEaXR0by4KCShjb21wdXRlX2F2YWlsKTogUmV3cml0dGVuIGZvciB2bl9sb29rdXBfb3JfYWRkIGNoYW5nZXMgYW5kIHRvIHVzZQoJU0NDVk4uCgkoaW5pdF9wcmUpOiBVcGRhdGUgZm9yIFNDQ1ZOIGNoYW5nZXMuCgkoZmluaV9wcmUpOiBEaXR0by4KCShleGVjdXRlX3ByZSk6IERpdHRvLgoKCSogdHJlZS1mbG93LmggKG1ha2VfdmFsdWVfaGFuZGxlKTogRGVjbGFyZS4KCShzZXRfdmFsdWVfaGFuZGxlKTogRGl0dG8uCgkoc29ydF92dXNlc19oZWFwKTogRGl0dG8uCgkodm5fbG9va3VwX29yX2FkZF93aXRoX3N0bXQpOiBEaXR0by4KCSh2bl9sb29rdXBfd2l0aF9zdG10KTogRGl0dG8uCgkodm5fY29tcHV0ZSk6IFJlbW92ZS4KCSh2bl9pbml0KTogRGl0dG8uCgkodm5fZGVsZXRlKTogRGl0dG8uCgkodm5fbG9va3VwKTogVXBkYXRlIGFyZ3VtZW50cy4KCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1wcmUubyk6IEFkZCB0cmVlLXNzYS1zY2N2bi5oCgkodHJlZS12bi5vKTogRGl0dG8uCgkodHJlZS1zc2Etc2Njdm4ubyk6IE5ldy4KCShPQkpTLWNvbW1vbik6IEFkZCB0cmVlLXNzYS1zY2N2bi5vCgkKMjAwNy0wNi0zMCAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJUFIgYy80MDc2CgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2V4dGVybmFsX3JlZik6IERvbid0IG1hcmsgYXMgdXNlZCBpZiBjYWxsZWQKCWZyb20gaXRzZWxmLgoJKiBjYWxscy5jIChydHhfZm9yX2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCQoyMDA3LTA2LTMwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglSZXZlcnQ6CgoJMjAwNy0wNi0yNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkY2UuYyAoZGVsZXRhYmxlX2luc25fcF8xKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbS4uLgoJKGRlbGV0YWJsZV9pbnNuX3ApOiAuLi5oZXJlLiAgT25seSB0cmVhdCBiYXJlIFVTRXMgYW5kIENMT0JCRVJzCglzcGVjaWFsbHksIG5vdCB0aG9zZSBpbnNpZGUgUEFSQUxMRUxzLiAgUmVtb3ZlIEJPRFkgYXJndW1lbnQKCWFuZCBhZGp1c3QgcmVjdXJzaXZlIGNhbGwgYWNjb3JkaW5nbHkuCgkocHJlc2Nhbl9pbnNuc19mb3JfZGNlKTogVXBkYXRlIGNhbGwgdG8gZGVsZXRlX2luc25fcC4KCjIwMDctMDYtMzAgIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV92YWxpZGF0ZV9jb3N0KTogTmV3IHBhcmFtZXRlciBORVdPVEhFUlBBVC4KCSh0cnlfY29tYmluZSk6IE1vdmUgcG90ZW50aWFsIGNhbGxzIHRvIHVuZG9fYWxsKCkgc28gdGhleSBoYXBwZW4KCWJlZm9yZSB3ZSBjb21taXQgdG8gdXNpbmcgdGhlIGNvbWJpbmVkIGluc25zLgoKMjAwNy0wNi0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC11bnJvbGwuYyAodW5yb2xsX2xvb3BfcnVudGltZV9pdGVyYXRpb25zKTogVW5zaGFyZSBuZXdseSBlbWl0Cgljb2RlLgoKMjAwNy0wNi0zMCAgVGhvbWFzIE5ldW1hbm4gIDx0bmV1bWFubkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBpcGEuYyAoY2dyYXBoX3Bvc3RvcmRlcik6IENhc3QgYWNjb3JkaW5nIHRvIHRoZSBjb2RpbmcgY29udmVudGlvbnMuCgkoY2dyYXBoX3JlbW92ZV91bnJlYWNoYWJsZV9ub2Rlcyk6IExpa2V3aXNlLgoJKiBpcGEtY3AuYyAoaXBjcF9wcm9wYWdhdGVfc3RhZ2UpOiBVc2UgQk9UVE9NIGluc3RlYWQgb2YgaW50ZWdlciAwLgoJKiBpcGEtaW5saW5lLmMgKHVwZGF0ZV9jYWxsZXJfa2V5cyk6IENhc3QgYWNjb3JkaW5nIHRvIHRoZSBjb2RpbmcKCWNvbnZlbnRpb25zLgoJKGNncmFwaF9kZWNpZGVfcmVjdXJzaXZlX2lubGluaW5nKTogTGlrZXdpc2UuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19vZl9zbWFsbF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHRyeV9pbmxpbmUpOiBMaWtld2lzZS4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkpOiBMaWtld2lzZS4KCSogaXBhLXB1cmUtY29uc3QuYyAoZ2V0X2Z1bmN0aW9uX3N0YXRlKTogTGlrZXdpc2UuCgkoc2Nhbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGFuYWx5emVfZnVuY3Rpb24pOiBMaWtld2lzZS4KIAkoc3RhdGljX2V4ZWN1dGUpOiBMaWtld2lzZS4KCSogaXBhLXJlZmVyZW5jZS5jIChzY2FuX2Zvcl9zdGF0aWNfcmVmcyk6IExpa2V3aXNlLgoJKG1lcmdlX2NhbGxlZV9sb2NhbF9pbmZvKTogTGlrZXdpc2UuCgkoYW5hbHl6ZV9mdW5jdGlvbik6IFVzZSB0eXBlIHNhZmUgbWVtb3J5IG1hY3Jvcy4KCShzdGF0aWNfZXhlY3V0ZSk6IExpa2V3aXNlLiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIGNvbnZlbnRpb25zLgoJKiBpcGEtdHlwZS1lc2NhcGUuYyAoc2Nhbl9mb3JfcmVncyk6IENhc3QgYWNjb3JkaW5nIHRvIHRoZSBjb2RpbmcKCWNvbnZlbnRpb25zLgoJKiBpcGEtdXRpbHMuYyAoc2VhcmNoYyk6IExpa2V3aXNlLiBBdm9pZCB1c2luZyBDKysga2V5d29yZHMgYXMgdmFyaWFibGUKCW5hbWVzLgoJKGlwYV91dGlsc19yZWR1Y2VkX2lub3JkZXIpOiBMaWtld2lzZS4gVXNlIHR5cGUgc2FmZSBtZW1vcnkgbWFjcm9zLgoJKiBpcGEtdXRpbHMuaCAoc3RydWN0IGlwYV9kZmFfaW5mbyk6IEF2b2lkIHVzaW5nIEMrKyBrZXl3b3JkcyBhcwoJdmFyaWFibGUgbmFtZXMuCgoyMDA3LTA2LTI5ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwMDI0CgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9vbmNlKTogSW50aWxpemUgY29uc3RfdGlueV9ydHhbMF0KCWZvciBjb21wbGV4IG1vZGVzIChib3RoIGludCBhbmQgcmVhbCkuCgoyMDA3LTA2LTI5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2UuYzogUmV2ZXIgYWNjaWRlbnRhbGx5IGNvbWl0dGVkIFRPRE9fdmVyaWZ5X3J0bF9zaGFyaW5nIGNoYW5nZS4KCjIwMDctMDYtMjkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBtaWRkbGUtZW5kLzMyMzcyCgkqIGNzZS5jIChjc2VfaW5zbik6IEF2b2lkIGludmFsaWQgc2hhcmluZyBpbiBiZXR3ZWVuIHJlZ2lzdGVyIG5vdGUgYW5kCgl0aGUgaW5zbiBwYXR0ZXJuLgoKMjAwNy0wNi0yOSAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCVBSIHRhcmdldC8zMjMzNQoJKiBjb25maWcvYXZyL2F2ci5jOiBJbmNsdWRlIGRhdGFmbG93IGhlYWRlciBmaWxlLgoJKGV4cGFuZF9wcm9sb2d1ZSk6IEFkanVzdCBmb3IgcHJvbG9ndWUgaW5zbiBjaGFuZ2UuCgkqIGNvbmZpZy9hdnIvYXZyLm1kIChjYWxsX3Byb2xvZ3VlX3NhdmVzKTogT25seSBtb2RpZnkgUkVHX1NQIG9uY2UKCWluc2lkZSBhIGluc24uCgoyMDA3LTA2LTI5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMjQ5MwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jYWxsX2V4cHIpOiBJZ25vcmUgdmFyaWFibGUgYXJndW1lbnQgcGFydHMKCWR1cmluZyB0eXBlIHZlcmlmaWNhdGlvbi4KCjIwMDctMDYtMjkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlY29nLmMgKHZhbGlkYXRlX2NoYW5nZV9ydHhfMSk6IFVuc2hhcmUgVE8gYXJndW1lbnQuCgoyMDA3LTA2LTI5ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI0NjU5CgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdG9yaXphYmxlX2NhbGwpOiBIYW5kbGUKCShudW5pdHNfaW4gPT0gbnVuaXRzX291dCAvIDIpIGFuZCAobnVuaXRzX291dCA9PSBudW5pdHNfaW4gLyAyKSBjYXNlcy4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAodmVjX3BhY2tfc2ZpeF92MmRmKTogTmV3IGV4cGFuZGVyLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGVudW0gaXg4Nl9idWlsdGlucykKCVtJWDg2X0JVSUxUSU5fVkVDX1BBQ0tfU0ZJWF06IE5ldyBjb25zdGFudC4KCShzdHJ1Y3QgYmRlc2NfMmFyZykgW19fYnVpbHRpbl9pYTMyX3ZlY19wYWNrX3NmaXhdOiBOZXcgYnVpbHRpbgoJZGVzY3JpcHRpb24uCgkoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBEZWZpbmUgYWxsIGJ1aWx0aW5zIHdpdGggMiBhcmd1bWVudHMgYXMKCWNvbnN0IHVzaW5nIGRlZl9idWlsdGluX2NvbnN0LgoJKGl4ODZfZXhwYW5kX2Jpbm9wX2J1aWx0aW4pOiBSZW1vdmUgYm9ndXMgYXNzZXJ0KCkgdGhhdCBpbnNuIHdhbnRzCglpbnB1dCBvcGVyYW5kcyBpbiB0aGUgc2FtZSBtb2RlcyBhcyB0aGUgcmVzdWx0LgoJKGl4ODZfYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uKTogSGFuZGxlIEJVSUxUX0lOX0xSSU5ULgoKMjAwNy0wNi0yOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0BuaWxkcmFtLmNvLnVrPgoKCSogZGYtcHJvYmxlbXMuYyAoZGZfc2V0X3VudXNlZF9ub3Rlc19mb3JfbXcpOiBGaXggZm9ybWF0dGluZy4KCShkZl9zZXRfZGVhZF9ub3Rlc19mb3JfbXcpOiBMaWtld2lzZS4KCjIwMDctMDYtMjkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBjLWNvbW1vbi5jIChwb2ludGVyX2ludF9zdW0pOiBEbyB0aGUgbmVnYXRpb24gaW4gc2l6ZXR5cGUuCgoyMDA3LTA2LTI4ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJjL20zMmMuaCAoT1ZFUlJJREVfT1BUSU9OUyk6IE9taXQgdW5uZWVkZWQgc2VtaWNvbG9uLgoKMjAwNy0wNi0yOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKEMrKyBEaWFsZWN0IE9wdGlvbnMpOiBEb2N1bWVudAoJZnZpc2liaWxpdHktbXMtY29tcGF0LgoJKiBjLm9wdCAoZnZpc2liaWxpdHktbXMtY29tcGF0KTogTmV3LgoKMjAwNy0wNi0yOCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgdHJlZS1vcHQvMzI0MTcKCSogdHJlZS1hZmZpbmUuYyAoYWZmX2NvbWJpbmF0aW9uX2FkZF9lbHQpOiBIYW5kbGUKCXBvaW50ZXIgYWRkaXRpb24gc3BlY2lhbGx5LgoKMjAwNy0wNi0yOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBFbnN1cmUKCWRlY2wgaXMgbm9uLWV4dGVybmFsIGZvciBBSVggQUJJLgoKMjAwNy0wNi0yOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kIChjdXJyZW50X2ZpbGVfZnVuY3Rpb25fb3BlcmFuZCk6CglFbnN1cmUgdGhlIHN5bWJvbCBpcyBub24tZXh0ZXJuYWwgZm9yIEFJWCBBQkkuCgoyMDA3LTA2LTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29tbW9uLm9wdCAoZmlwYS1tYXRyaXgtcmVvcmcpOiBBZGQgT3B0aW1pemF0aW9uIGF0dHJpYnV0ZS4KCShmZGNlLCBmZHNlLCBmcHJlZGljdGl2ZS1jb21tb25pbmcpOiBMaWtld2lzZS4KCjIwMDctMDYtMjggRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgPGZ4Y291ZGVydEBnY2MuZ251Lm9yZz4KCglQUiBvdGhlci8zMTQwMAoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogUmVjb2duaXplIHRoZSBuZXcgLXN0YXRpYy1saWJnZm9ydHJhbgoJb3B0aW9uLgoKMjAwNy0wNi0yNyAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCVBSIHRhcmdldC8zMjQxOAoJKiBjb25maWcvbTMyYy9tMzJjLmMgKG0zMmNfZWhfcmV0dXJuX3N0YWNrYWRqX3J0eCk6IERhdGFmbG93IGZpeDoKCVVzZSBhIGNhbGwgY2xvYmJlcmVkIGhhcmQgcmVnIGluc3RlYWQgb2YgYSBwc2V1ZG8gcmVnLgoKMjAwNy0wNi0yNyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2gubWQgKGxvYWRfZ2JyKTogVXNlIGNvcnJlY3Qgb3BlcmFuZCBjb25zdHJhaW50LgoKMjAwNy0wNi0yNyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgdGFyZ2V0LzMyNDc5CgkqIGNvbmZpZy9zaC9zaC5tZCAodWRpdnNpMyk6IERvbid0IHdyYXAgdGhlIHNlcXVlbmNlIHdpdGgKCVJFR19MSUJDQUxMIGFuZCBSRUdfUkVUVkFMIG5vdGVzLgoJKGRpdnNpMywgbXVsc2kzKTogTGlrZXdpc2UuCgkobXVsaGlzaTMpOiBMaWtld2lzZS4gIFVzZSBlbWl0X2xpYmNhbGxfYmxvY2suCgkodW11bGhpc2kzLCBzbXVsc2kzX2hpZ2hwYXJ0LCB1bXVsc2kzX2hpZ2hwYXJ0X2kpOiBMaWtld2lzZS4KCjIwMDctMDYtMjcgIFNlb25nYmFlIFBhcmsgIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyNDgxCgkqIGNvbWJpbmUuYyAoYWRqdXN0X2Zvcl9uZXdfZGVzdCk6IFJlc2NhbiB0aGUgY2hhbmdlZCBpbnNuLgoKMjAwNy0wNi0yNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkY2UuYyAoZGVsZXRhYmxlX2luc25fcF8xKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbS4uLgoJKGRlbGV0YWJsZV9pbnNuX3ApOiAuLi5oZXJlLiAgT25seSB0cmVhdCBiYXJlIFVTRXMgYW5kIENMT0JCRVJzCglzcGVjaWFsbHksIG5vdCB0aG9zZSBpbnNpZGUgUEFSQUxMRUxzLiAgUmVtb3ZlIEJPRFkgYXJndW1lbnQKCWFuZCBhZGp1c3QgcmVjdXJzaXZlIGNhbGwgYWNjb3JkaW5nbHkuCgkocHJlc2Nhbl9pbnNuc19mb3JfZGNlKTogVXBkYXRlIGNhbGwgdG8gZGVsZXRlX2luc25fcC4KCjIwMDctMDYtMjcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMyNDkyCgkqIHRyZWUuaCAoZm9sZF9jb252ZXJ0aWJsZV9wKTogRGVjbGFyZS4KCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbnZlcnRpYmxlX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NhbGxfZXhwcik6IFVzZSBmb2xkX2NvbnZlcnRpYmxlX3AKCWluc3RlYWQgb2YgbGFuZ19ob29rcy50eXBlc19jb21wYXRpYmxlX3AuCgoyMDA3LTA2LTI2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmd3Byb3AuYyAodHJ5X2Z3cHJvcF9zdWJzdCk6IFVzZSB2YWxpZGF0ZV91bnNoYXJlX2NoYW5nZS4KCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY3NlX3NpbXBsaWZ5X3NldCk6IEluc3RlYWQgb2YgY29weWluZyB0aGUgcnR4CgllYXJseSB1c2UgdmFsaWRhdGVfdW5zaGFyZV9jaGFuZ2UuCgkocmVsb2FkX2NvbWJpbmUpOiBMaWtld2lzZS4KCSogcmVjb2cuYyAoY2hhbmdlX3QpOiBOZXcgZmllbGQgdW5zaGFyZS4KCSh2YWxpZGF0ZV9jaGFuZ2VfMSk6IFJlbmFtZSBmcm9tIHZhbGlkYXRlX2NoYW5nZTsgYWRkIGFyZ3VtZW50IHVuc2hhcmUuCgkodmFsaWRhdGVfY2hhbmdlKTogVHVybiBpbnRvIHdyYXBwZXIgb2YgdmFsaWRhdGVfY2hhbmdlXzE7IHVwZGF0ZQoJcHJvdG90eXBlIGZvciBib29scy4KCSh2YWxpZGF0ZV91bnNoYXJlX2NoYW5nZSk6IE5ldy4KCShjb25maXJtX2NoYW5nZV9ncm91cCk6IFVuc2hhcmUgY2hhbmdlcyBpZiBhc2tlZCBmb3I7IGF2b2lkIHVubmVjZXNhcnkKCWNhbGxzIG9mIGRmX2luc25fcmVzY2FuLgoJKiByZWNvZy5oICh2YWxpZGF0ZV9jaGFuZ2UpOiBSZXBsYWNlIGludHMgYnkgYm9vbHMuCgkodmFsaWRhdGVfdW5zaGFyZV9jaGFuZ2UpOiBEZWNsYXJlLgoKMjAwNy0wNi0yNiAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIHRyZWUuZGVmIChWRUNfV0lERU5fTVVMVF9MT19FWFBSKTogQ29ycmVjdGVkIHN0cmluZyBuYW1lLgoJCjIwMDctMDYtMjYgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbmV4dF9hcmcpOiBDaGFuZ2UgUG1vZGUgdG8gcHRyX21vZGUuCgoyMDA3LTA2LTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpcGEtaW5saW5lLmMgKGNncmFwaF9tYXJrX2lubGluZSk6IEFzc2VydCB0aGF0IHdlIG5ldmVyIGlubGluZQoJdW5pbmxpbmFibGUgY2FsbC4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nX29mX3NtYWxsX2Z1bmN0aW9uLCBjZ3JhcGhfZGVjaWRlX2lubGluaW5nLAoJY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19pbmNyZW1lbnRhbGx5KTogTW92ZSB1bmlubGluYWJpbGl0eSBjaGVja3MgdG8KCXBsYWNlcyBvdGhlciBjYWxsIHNpdGUgc3BlY2lmaWMgY2hlY2tzIGFyZSBwZXJmb3JtZWQuCgoyMDA3LTA2LTI1ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiB0cmVlLW9wdC8zMjQyMQoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24pOiBDb252ZXJ0CglQT0lOVEVSX1BMVVNfRVhQUiBvdmVyIHRvIFBMVVNfRVhQUi4KCjIwMDctMDYtMjUgIENoYW8teWluZyBGdSAgPGZ1QG1pcHMuY29tPgoKCSogZG9jL3J0bC50ZXhpIChNYWNoaW5lIE1vZGVzKTogRG9jdW1lbnQgUVEsIEhRLCBTUSwgRFEsIFRRLAoJVVFRLCBVSFEsIFVTUSwgVURRLCBVVFEsIEhBLCBTQSwgREEsIFRBLCBVSEEsIFVTQSwgVURBLCBhbmQgVVRBbW9kZXMuCglEb2N1bWVudCBNT0RFX0ZSQUNULCBNT0RFX1VGUkFDVCwgTU9ERV9BQ0NVTSwgTU9ERV9VQUNDVU0uCglEb2N1bWVudCBHRVRfTU9ERV9JQklULCBhbmQgR0VUX01PREVfRkJJVC4KCgkqIG1hY2htb2RlLmggKFZFQ1RPUl9NT0RFX1ApOiBUZXN0IE1PREVfVkVDVE9SX0ZSQUNULAoJTU9ERV9WRUNUT1JfVUZSQUNULCBNT0RFX1ZFQ1RPUl9BQ0NVTSwgTU9ERV9WRUNUT1JfVUFDQ1VNLgoJKFNDQUxBUl9GUkFDVF9NT0RFX1AsIFNDQUxBUl9VRlJBQ1RfTU9ERV9QLCBBTExfU0NBTEFSX0ZSQUNUX01PREVfUCwKCVNDQUxBUl9BQ0NVTV9NT0RFX1AsIFNDQUxBUl9VQUNDVU1fTU9ERV9QLCBBTExfU0NBTEFSX0FDQ1VNX01PREVfUCwKCVNJR05FRF9TQ0FMQVJfRklYRURfUE9JTlRfTU9ERV9QLCBVTlNJR05FRF9TQ0FMQVJfRklYRURfUE9JTlRfTU9ERV9QLAoJQUxMX1NDQUxBUl9GSVhFRF9QT0lOVF9NT0RFX1AsIEZSQUNUX01PREVfUCwgVUZSQUNUX01PREVfUCwKCUFMTF9GUkFDVF9NT0RFX1AsIEFDQ1VNX01PREVfUCwgVUFDQ1VNX01PREVfUCwgQUxMX0FDQ1VNX01PREVfUCwKCVNJR05FRF9GSVhFRF9QT0lOVF9NT0RFX1AsIFVOU0lHTkVEX0ZJWEVEX1BPSU5UX01PREVfUCwKCUFMTF9GSVhFRF9QT0lOVF9NT0RFX1ApOiBOZXcgZGVmaW5lLgoJKENMQVNTX0hBU19XSURFUl9NT0RFU19QKTogVGVzdCBNT0RFX0ZSQUNULCBNT0RFX1VGUkFDVCwgTU9ERV9BQ0NVTSwKCU1PREVfVUFDQ1VNLgoJKEdFVF9NT0RFX0lCSVQsIEdFVF9NT0RFX0ZCSVQpOiBOZXcgZGVmaW5lLgoKCSogbW9kZS1jbGFzc2VzLmRlZiAoTU9ERV9GUkFDVCwgTU9ERV9VRlJBQ1QsIE1PREVfQUNDVU0sIE1PREVfVUFDQ1VNLAoJTU9ERV9WRUNUT1JfRlJBQ1QsIE1PREVfVkVDVE9SX1VGUkFDVCwgTU9ERV9WRUNUT1JfQUNDVU0sCglNT0RFX1ZFQ1RPUl9VQUNDVU0pOiBOZXcgbW9kZSBjbGFzc2VzLgoKCSogbWFjaG1vZGUuZGVmOiBEb2N1bWVudCBGUkFDVF9NT0RFLCBVRlJBQ1RfTU9ERSwgQUNDVU1fTU9ERSwKCVVBQ0NVTV9NT0RFLCBBREpVU1RfSUJJVCwgYW5kIEFESlVTVF9GQklULgoJQWRkIFFRLCBIUSwgU1EsIERRLCBUUSwgVVFRLCBVSFEsIFVTUSwgVURRLCBVVFEsIEhBLCBTQSwgREEsIFRBLCBVSEEsCglVU0EsIFVEQSwgYW5kIFVUQS4KCgkqIGdlbm1vZGVzLmMgKHN0cnVjdCBtb2RlX2RhdGEpOiBBZGQgaWJpdCBhbmQgZmJpdCBmaWVsZHMuCgkoYmxhbmtfbW9kZSk6IEluaXRpYWxpemUgaWJpdCBhbmQgZmJpdC4KCShhZGpfaWJpdCwgYWRqX2ZiaXQpOiBOZXcgdG8gYWRqdXN0IGliaXQgYW5kIGZiaXQuCgkodmVjdG9yX2NsYXNzKTogSGFuZGxlIE1PREVfRlJBQ1QsIE1PREVfVUZSQUNULCBNT0RFX0FDQ1VNLAoJTU9ERV9VQUNDVU0uCgkobmV3X2FkanVzdCk6IENoYW5nZSByZXF1aXJlZF9jbGFzcyB0byByZXF1aXJlZF9jbGFzc19mcm9tIGFuZAoJcmVxdWlyZWRfY2xhc3NfdG8gZm9yIHRlc3Rpbmcgd2l0aGluIGEgcmFuZ2UuCgkoY29tcGxldGVfbW9kZSk6IEhhbmRsZSBNT0RFX0ZSQUNULCBNT0RFX1VGUkFDVCwgTU9ERV9BQ0NVTSwKCU1PREVfVUFDQ1VNLCBNT0RFX1ZFQ1RPUl9GUkFDVCwgTU9ERV9WRUNUT1JfVUZSQUNULCBNT0RFX1ZFQ1RPUl9BQ0NVTSwKCU1PREVfVkVDVE9SX1VBQ0NVTS4KCShGUkFDVF9NT0RFLCBVRlJBQ1RfTU9ERSwgQUNDVU1fTU9ERSwgVUFDQ1VNX01PREUpOiBOZXcgZGVmaW5lLgoJKG1ha2VfZml4ZWRfcG9pbnRfbW9kZSk6IE5ldy4KCShfQUREX0FESlVTVCk6IENoYW5nZSBDIHRvIEMxIGFuZCBDMi4KCShBREpVU1RfQllURVNJWkUsIEFESlVTVF9BTElHTk1FTlQsIEFESlVTVF9GTE9BVF9GT1JNQVQpOiBDaGFuZ2UgdG8KCXVzZSBhIHJhbmdlIGZvciBtYWNoaW5lIGNsYXNzZXMuCgkoQURKVVNUX0lCSVQsIEFESlVTVF9GQklUKTogTmV3LgoJKGVtaXRfaW5zbl9tb2Rlc19oKTogT3V0cHV0IGRlZmluZXMgb2YgQ09OU1RfTU9ERV9JQklUIGFuZAoJQ09OU1RfTU9ERV9GQklULgoJKGVtaXRfbW9kZV9hZGp1c3RtZW50cyk6IEhhbmRsZSBNT0RFX1ZFQ1RPUl9GUkFDVCwgTU9ERV9WRUNUT1JfVUZSQUNULAoJTU9ERV9WRUNUT1JfQUNDVU0sIE1PREVfVkVDVE9SX1VBQ0NVTS4KCUVtaXQgYWRqdXN0bWVudCBmb3IgaWJpdCBhbmQgZmJpdC4KCShlbWl0X21vZGVfaWJpdCwgZW1pdF9tb2RlX2ZiaXQpOiBOZXcuCgkoZW1pdF9pbnNuX21vZGVzX2MpOiBBZGQgZW1pdF9tb2RlX2liaXQgYW5kIGVtaXRfbW9kZV9mYml0LgoKMjAwNy0wNi0yNSAgTmF0aGFuIEZyb3lkICA8ZnJveWRuakBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCpmcm9iX3RpX3RmXzIpOiBTcGVjaWZ5IGFuIGlucHV0X29wZXJhbmQKCWFzIHRoZSBzb3VyY2Ugb2YgdGhlIHNldC4KCjIwMDctMDYtMjUgIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChEQVRBX1JFR05PX1AsIEFERFJFU1NfUkVHTk9fUCwgSU5UX1JFR05PX1AsCglGUF9SRUdOT19QKTogVXNlIElOX1JBTkdFLgoJKFJFR05PX09LX0ZPUl9EQVRBX1AsIFJFR05PX09LX0ZPUl9GUF9QKTogUmVtb3ZlLgoJKFJFR05PX09LX0ZPUl9JTkRFWF9OT05TVFJJQ1RfUCwgUkVHTk9fT0tfRk9SX0JBU0VfTk9OU1RSSUNUX1ApOiBOZXcuCgkoREFUQV9SRUdfUCk6IFVzZSBEQVRBX1JFR05PX1AuCgkoRlBfUkVHX1ApOiBVc2UgRlBfUkVHTk9fUC4KCShBRERSRVNTX1JFR19QKTogVXNlIEFERFJFU1NfUkVHTk9fUC4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2xlZ2l0aW1hdGVfYmFzZV9yZWdfcCk6IFVzZQoJUkVHTk9fT0tfRk9SX0lOREVYX05PTlNUUklDVF9QLCBSRUdOT19PS19GT1JfQkFTRV9OT05TVFJJQ1RfUC4KCjIwMDctMDYtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBtaWRkbGUtZW5kLzMwNTYzCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBGaXggb3JkZXJpbmcgcHJvYmxlbS4KCjIwMDctMDYtMjQgIFNlYmFzdGlhbiBQb3AgIDxzZWJwb3BAZ21haWwuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzI0NjEKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IFN0cmlwIG5vcHMgb2Ygb3BlcmFuZCAwCglvZiBCSVRfTk9UX0VYUFIgYmVmb3JlIGNhbGxpbmcgb3BlcmFuZF9lcXVhbF9wLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMzI0NjEtMS5jOiBOZXcuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIzMjQ2MS0yLmM6IE5ldy4KCjIwMDctMDYtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IHRoYXQgZGxsaW1wb3J0IGFuZCBkbGxleHBvcnQgaW1wbHkKCWRlZmF1bHQgdmlzaWJpbGl0eS4KCSogdHJlZS5jIChoYW5kbGVfZGxsX2F0dHJpYnV0ZSk6IFNldCBERUNMX1ZJU0lCSUxJVFkgb24gdGhlCglpbXBvcnRlZCBvciBleHBvcnRlZCBkZWNsYXJhdGlvbiwgaW5jbHVkaW5nIHR5cGUgZGVjbGFyYXRpb25zLgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmlzaWJpbGl0eV9hdHRyaWJ1dGUpOiBDaGVjayBmb3IgY29uZmxpY3RzCgl3aXRoIGRsbGltcG9ydC9kbGxleHBvcnQuCgkoY19kZXRlcm1pbmVfdmlzaWJpbGl0eSk6IEhhbmRsZSBkbGxpbXBvcnQvZGxsZXhwb3J0IGFzIGFuCglleHBsaWNpdCB2aXNpYmlsaXR5IGF0dHRyaWJ1dGUuCgoyMDA3LTA2LTIzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTY4NzYKCVBSIG1pZGRsZS1lbmQvMjk0NzgKCSogdHJlZS5oIChDQUxMX0NBTk5PVF9JTkxJTkVfUCk6IE5ldyBtYWNybyB0byBhY2Nlc3Mgc3RhdGljX2ZsYWcKCWZvciBDQUxMX0VYUFJzLgoJKiB0cmVlLWlubGluZS5jIChpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IERvIG5vdCBjYWxsCglsYW5nX2hvb2tzLnRyZWVfaW5saW5pbmcuY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZy4KCSogY2dyYXBoYnVpbGQuYyAoaW5pdGlhbGl6ZV9pbmxpbmVfZmFpbGVkKTogU2V0IGlubGluZSBmYWlsZWQKCXJlYXNvbiBmb3IgbWlzbWF0Y2hlZCB0eXBlcy4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfY2FsbF9leHByKTogVmVyaWZ5IHRoZSBjYWxsIGV4cHJlc3Npb24KCWFyZ3VtZW50cyBtYXRjaCB0aGUgY2FsbGVkIGZ1bmN0aW9uIHR5cGUgc2lnbmF0dXJlLiAgT3RoZXJ3aXNlCgltYXJrIHRoZSBjYWxsIGV4cHJlc3Npb24gdG8gYmUgbm90IGNvbnNpZGVyZWQgZm9yIGlubGluaW5nCgl1c2luZyBDQUxMX0NBTk5PVF9JTkxJTkVfUCBmbGFnLgoJKiBpcGEtaW5saW5lLmMgKGNncmFwaF9tYXJrX2lubGluZSk6IEhvbm9yIENBTExfQ0FOTk9UX0lOTElORV9QIG9uIHRoZQoJZWRnZXMgY2FsbCBleHByZXNzaW9uLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmdfb2Zfc21hbGxfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nKTogTGlrZXdpc2UuCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0NPTlZFUlRfUEFSTV9GT1JfSU5MSU5JTkcpOgoJUmVtb3ZlIGRlZmluZS4KCSogYy10cmVlLmggKGNfY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogYy10eXBlY2suYyAoY19jb252ZXJ0X3Bhcm1fZm9yX2lubGluaW5nKTogUmVtb3ZlLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF90cmVlX2lubGluaW5nX2NvbnZlcnRfcGFybV9mb3JfaW5saW5pbmcpOgoJUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19DT05WRVJUX1BBUk1fRk9SX0lOTElOSU5HKTogUmVtb3ZlIGRlZmluZS4KCSogbGFuZ2hvb2tzLmMgKGxoZF90cmVlX2lubGluaW5nX2NvbnZlcnRfcGFybV9mb3JfaW5saW5pbmcpOgoJUmVtb3ZlLgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3NfZm9yX3RyZWVfaW5saW5pbmcpOiBSZW1vdmUKCWNvbnZlcnRfcGFybV9mb3JfaW5saW5pbmcgbWVtYmVyLgoKMjAwNy0wNi0yMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgdGFyZ2V0LzMxMTUyCgkqIGFybS5tZCAobmVnc2NjKTogTWF0Y2ggdGhlIGNvcnJlY3Qgb3BlcmFuZCBmb3Igb3B0aW1pemVkIExUMCB0ZXN0LgoJUmVtb3ZlIG9wdGltaXphdGlvbiBmb3IgR1QuCgoyMDA3LTA2LTIzICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzI0MzcKCSogZGNlLmMgKGRlbGV0YWJsZV9pbnNuX3ApOiBBZGQgZXh0cmEgcGFyYW1ldGVyIGFuZCByZWN1cnNlIGlmIGluc24KCWlzIGEgUEFSQUxMRUwuCgkocHJlc2Nhbl9pbnNuc19mb3JfZGNlKTogQWRkIGV4dHJhIHBhcmFtZXRlci4KCQoyMDA3LTA2LTIzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgbWlkZGxlLWVuZC8zMTU0MQoJKiBnaW1wbGlmeS5jIChtYXJrX2FkZHJlc3NhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKGdpbXBsaWZ5X21vZGlmeV9leHByX3JocywgZ2ltcGxpZnlfYWRkcl9leHByLCBnaW1wbGlmeV9leHByKTogVXNlIGl0LgoKMjAwNy0wNi0yMiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyMzc0CgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBEbyBub3QgY2xvYmJlciBub24temVyb2VkIG1lbW9yeS4gCgoyMDA3LTA2LTIyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMjQxMwoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfcmVnaXN0ZXJfbW92ZV9jb3N0KTogUmlzZSB0aGUgY29zdCBvZgoJbW92ZXMgYmV0d2VlbiBNTVgvU1NFIHJlZ2lzdGVycyB0byBhdCBsZWFzdCA4IHVuaXRzIHRvIHByZXZlbnQKCUlDRSBjYXVzZWQgYnkgbm9uLXRpZWFibGUgU0kvSEkvUUltb2RlcyBpbiBTU0UgcmVnaXN0ZXJzLiAKCjIwMDctMDYtMjIgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBDb3JyZWN0IHg4Nl9zYWhmCglzZXR0aW5nIGNvbmRpdGlvbi4KCjIwMDctMDYtMjEgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJUFIgdGFyZ2V0LzMyNDA2CgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGRlZmluZV9jb25zdGFudHMpOiBSZW5hbWUgVU5TUEVDX0VIX1JFQ0VJVkVSCgl0byBVTlNQRUNfTk9OTE9DQUxfR09UT19SRUNFSVZFUiBnbG9iYWxseS4KCShleGNlcHRpb25fcmVjZWl2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiAuLi4gdGhpcy4KCjIwMDctMDYtMjIgIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogZGYtc2Nhbi5jIChkZl9yZWFkX21vZGlmeV9zdWJyZWdfcCk6IFVzZSBSRUdNT0RFX05BVFVSQUxfU0laRS4KCShkZl9kZWZfcmVjb3JkXzEpOiBTZXQgKERGX1JFRl9SRUFEX1dSSVRFIHwgREZfUkVGX1BBUlRJQUwpIGZvcgoJcGFydGlhbCByZWdpc3RlciBhY2Nlc3Nlcy4KCjIwMDctMDYtMjEgIEFkYW0gTmVtZXQgIDxhbmVtZXRAY2F2aXVtbmV0d29ya3MuY29tPgoKCSogZm9sZC1jb25zdC5jIChkZWJ1Z19mb2xkX2NoZWNrc3VtKTogTW92ZSBpdCB1bmRlcgoJRU5BQkxFX0ZPTERfQ0hFQ0tJTkcuCgoyMDA3LTA2LTIxICBTZWJhc3RpYW4gUG9wICA8c2VicG9wQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzIwNjIzCgkqIHRyZWUuaCAoZGVidWdfZm9sZF9jaGVja3N1bSk6IERlY2xhcmVkLgoJKiBmb2xkLWNvbnN0LmMgKGJ1aWxkX2ZvbGRfYWRkcl9leHByX3dpdGhfdHlwZV8xKTogTmV3LgoJKGJ1aWxkX2ZvbGRfYWRkcl9leHByX3dpdGhfdHlwZSwgYnVpbGRfZm9sZF9hZGRyX2V4cHIpOiBVc2UgCglidWlsZF9mb2xkX2FkZHJfZXhwcl93aXRoX3R5cGVfMS4KCShmb2xkX2FkZHJfZXhwciwgZGVidWdfZm9sZF9jaGVja3N1bSk6IE5ldy4KCShmb2xkX2NoZWNrc3VtX3RyZWUpOiBEb24ndCBmb2xkIFRSRUVfQ0hBSU4gb2YgYW4gU1NBX05BTUUuCgkoZm9sZF91bmFyeSwgZm9sZF9jb21wYXJpc29uLCBzcGxpdF9hZGRyZXNzX3RvX2NvcmVfYW5kX29mZnNldCk6CglVc2UgZm9sZF9hZGRyX2V4cHIuCgkKMjAwNy0wNi0yMSAgU2ViYXN0aWFuIFBvcCAgPHNlYnBvcEBnbWFpbC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTk1OTAKCSogdHJlZS12cnAuYyAoYWRqdXN0X3JhbmdlX3dpdGhfc2Nldik6IFNldCB0aGUgcmFuZ2Ugd2hlbiB0aGUgcmVzdWx0CglvZiBzY2V2IGlzIGEgY29uc3RhbnQuCgoyMDA3LTA2LTIxICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCSogZGYtcHJvYmxlbXMuYyAoZGZfbm90ZV9iYl9jb21wdXRlKTogTWFkZSBjb21wdXRhdGlvbiBvZiBsaXZlCglpbmZvIGNvbnNpc3RlbnQgd2l0aCBkZl9sci4KCjIwMDctMDYtMjEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjQ1MwoJKiB0cmVlLXZycC5jIChleHRyYWN0X3JhbmdlX2Zyb21fYXNzZXJ0KTogQnVpbGQgUE9JTlRFUl9QTFVTX0VYUFIKCWZvciBwb2ludGVyIGFudGktcmFuZ2UuCgoyMDA3LTA2LTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpOiBJbmNyZWFzZSBtYXhpbXVtCglza2lwIGZyb20gNyBieXRlIHRvIDEwIGJ5dGUgZm9yIFBlbnRpdW0gUHJvLCBDb3JlIDIgRHVvIGFuZAoJZGVmYXVsdCA2NGJpdC4KCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmggKEFTTV9PVVRQVVRfTUFYX1NLSVBfQUxJR04pOiBFbnN1cmUgOAoJYnl0ZSBhbGlnbm1lbnQgaWYgPiA4IGJ5dGUgYWxpZ25tZW50IGlzIHByZWZlcnJlZC4KCSogY29uZmlnL2kzODYveDg2LTY0LmggKEFTTV9PVVRQVVRfTUFYX1NLSVBfQUxJR04pOiBMaWtld2lzZS4KCjIwMDctMDYtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxODY2CgkqIHRyZWUtc3NhLWNvYWxlc2NlLmMgKGNyZWF0ZV9vdXRvZnNzYV92YXJfbWFwKTogRG8gbm90aGluZwoJaWYgQVNNX0VYUFIncyBpbnB1dCBpcyBub3QgYSBTU0FfTkFNRS4KCglQUiBtaWRkbGUtZW5kLzMyMzYyCgkqIG9tcC1sb3cuYyAobG9va3VwX2RlY2xfaW5fb3V0ZXJfY3R4KTogRG9uJ3QgSUNFIGlmIHQgaXMgTlVMTCwKCWJ1dCBkZWNsIGlzIGEgZ2xvYmFsIHZhciwgaW5zdGVhZCByZXR1cm4gZGVjbC4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfYWRqdXN0X29tcF9jbGF1c2VzXzEpOiBBZGQgc2hhcmVkIGNsYXVzZXMKCWV2ZW4gZm9yIGlzX2dsb2JhbF92YXIgZGVjbHMsIGlmIHRoZXkgYXJlIHByaXZhdGUgaW4gc29tZSBvdXRlcgoJY29udGV4dC4KCjIwMDctMDYtMjEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjQ1MQoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAodGhyZWFkX3NpbmdsZV9lZGdlKTogRml4dXAgZWRnZSBmbGFncy4KCjIwMDctMDYtMjEgIENocmlzdGlhbiBCcnVlbCAgPGNocmlzdGlhbi5icnVlbEBzdC5jb20+CgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmggKHNoX2xvYWRzX2JhbmtlZHJlZ19wKTogRGVjbGFyZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2xvYWRzX2JhbmtlZHJlZ19wKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfcmVncyk6IENoYW5nZWQgc2F2aW5nIG9yZGVyIG9yIGJhbmtlZCByZWdpc3RlcnMuCgkoc2hfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oIChCQU5LRURfUkVHSVNURVJfUCk6IE5ldyBtYWNyby4KCShGSVJTVF9CQU5LRURfUkVHKTogTGlrZXdpc2UuCgkoTEFTVF9CQU5LRURfUkVHKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5tZCAoYmFua2VkKSBOZXcgYXR0cmlidXRlLgoJKGluX2RlbGF5X3Nsb3QpOiBDaGVjayBiYW5rZWQgYXR0cmlidXRlLgoJCjIwMDctMDYtMjAgIFNlYmFzdGlhbiBQb3AgIDxzZWJwb3BAZ21haWwuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyMDc1CgkqIHRyZWUtZGF0YS1yZWYuYyAoc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyXzEsIAoJYW5hbHl6ZV9taXZfc3Vic2NyaXB0LCBhbmFseXplX292ZXJsYXBwaW5nX2l0ZXJhdGlvbnMsCglhZGRfZGlzdGFuY2VfZm9yX3plcm9fb3ZlcmxhcHMsIGJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3IsCglzdWJzY3JpcHRfZGVwZW5kZW5jZV90ZXN0ZXJfMSwgYW5hbHl6ZV9vdmVybGFwcGluZ19pdGVyYXRpb25zLAoJc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyLCBhY2Nlc3NfZnVuY3Rpb25zX2FyZV9hZmZpbmVfb3JfY29uc3RhbnRfcCwKCWNvbXB1dGVfYWZmaW5lX2RlcGVuZGVuY2UsIGNvbXB1dGVfYWxsX2RlcGVuZGVuY2VzKTogUGFzcyBsb29wX25lc3QgCgl0byBldm9sdXRpb25fZnVuY3Rpb25faXNfYWZmaW5lX211bHRpdmFyaWF0ZV9wLgoKMjAwNy0wNi0yMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRmLXNjYW4uYyAoZGZfZ2V0X2NhbGxfcmVmcyk6IEJlIHByZXBhcmVkIGZvciBNRU1zIGluc2lkZSBDTE9CQkVScy4KCjIwMDctMDYtMjAgIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCglQUiB0YXJnZXQvMzIzMzUKCSogY29uZmlnL20zMmMvbTMyYy5jIChtMzJjX2VtaXRfZXBpbG9ndWUpOiBVc2UgbmV3IEhJbW9kZSBlcGlsb2d1ZQoJZm9yIFRBUkdFVF9BMTYuCgkqIGNvbmZpZy9tMzJjL3Byb2xvZ3VlLm1kIChlcGlsb2d1ZV9leGl0ZF8xNik6IE5ldy4KCShlcGlsb2d1ZV9yZWl0XzE2KTogTmV3LgoJKGVwaWxvZ3VlX2V4aXRkKTogUmVuYW1lIHRvIGVwaWxvZ3VlX2V4aXRkXzI0LgoJKGVwaWxvZ3VlX3JlaXQpOiBSZW5hbWUgdG8gZXBpbG9ndWVfcmVpdF8yNC4KCjIwMDctMDYtMjAgIFNlb25nYmFlIFBhcmsgIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCSAgICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJKiBkYmdjbnQuZGVmIChnbG9iYWxfYWxsb2NfYXRfZnVuYywgZ2xvYmFsX2FsbG9jX2F0X3JlZyk6CglOZXcgY291bnRlcnMuCgkqIGhhaWZhLXNjaGVkLmMgKHF1ZXVlX3RvX3JlYWR5KTogRG9uJ3QgcmVxdWV1ZSBuZXh0IGluc24KCWlmIGRiZ19jbnQgKHNjaGVkX2luc24pIHJlYWNoZXMgdGhlIGxpbWl0LgoJKGNob29zZV9yZWFkeSk6IE5ldyBwYXJhbWV0ZXIgSU5TTl9QVFIgYW5kIG5ldyByZXR1cm4gdmFsdWUuCgkoc2NoZWR1bGVfYmxvY2spOiBIYW5kbGUgZGJnX2NudCAoc2NoZWRfaW5zbikuIEhhbmRsZQoJdGhlIG5ldyByZXR1cm4gdmFsdWUgZnJvbSBjaG9vc2VfcmVhZHkuCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxvYyk6IE5ldyBkYmdjbnQgZ2xvYmFsX2FsbG9jX2F0X3JlZy4KCShyZXN0X29mX2hhbmRsZV9nbG9iYWxfYWxsb2MpOiBOZXcgZ2xvYmFsX2FsbG9jX2F0X2Z1bmMuCgoyMDA3LTA2LTIwICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNTczNwoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX3N0cnVjdF9maWVsZF90YWcpOiBBZGQgbmV3IGZpZWxkIGFsaWFzX3NldC4KCShTRlRfTk9OQUREUkVTU0FCTEVfUCwgU0ZUX0FMSUFTX1NFVCk6IE5ldyBtYWNyb3MuCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgZmllbGRvZmYpOiBBZGQgbmV3IGZpZWxkIGFsaWFzX3NldC4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAocHVzaF9maWVsZHNfb250b19maWVsZHN0YWNrKTogQWRkIG5ldwoJYXJndW1lbnQgYWRkcmVzc2FibGVfdHlwZS4gIFNldCBhbGlhc19zZXQgb2YgZmllbGRvZmYuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNyZWF0ZV9zZnQpOiBBZGQgbmV3IGFyZ3VtZW50IGFsaWFzX3NldC4KCShjcmVhdGVfb3ZlcmxhcF92YXJpYWJsZXNfZm9yKTogUGFzcyBhbGlhc19zZXQgZnJvbSBmaWVsZG9mZiB0bwoJY3JlYXRlX3NmdC4KCSogYWxpYXMuYyAoZ2V0X2FsaWFzX3NldCk6IFVzZSBhbGlhc19zZXQgZnJvbSBTRlQgaWYgc2V0LgoKMjAwNy0wNi0yMCAgSHVpLU1heSBDaGFuZyAgPGhtLmNoYW5nQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChBU01fT1VUUFVUX0NPTU1PTik6IFByaW50IHRoZSBzaXplCglvZiBhIHZhcmlhYmxlIGFzIGFuIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgaW50ZWdlci4KCjIwMDctMDYtMjAgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMjQwNQoJKiBsb29wLWl2LmMgKGl2X2dldF9yZWFjaGluZ19kZWYpOiBGYWlsIGZvciBwYXJ0aWFsIGRlZnMuCgoyMDA3LTA2LTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChvbWVnYS5vKTogRGVwZW5kIG9uICQoRElBR05PU1RJQ19IKS4KCglQUiBtaWRkbGUtZW5kLzMxOTU5CgkqIGJ1aWx0aW5zLmM6IEluY2x1ZGUgZGlhZ25vc3RpYy5oLgoJKGV4cGFuZF9idWlsdGluX2V4cGVjdCk6IE1ha2UgZ2NjX2Fzc2VydCBtb3JlIHBlcm1pc3NpdmUuCgkqIE1ha2VmaWxlLmluIChidWlsdGlucy5vKTogRGVwZW5kIG9uICQoRElBR05PU1RJQ19IKS4KCglQUiBpbmxpbmUtYXNtLzMyMTA5CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2FzbV9leHByKTogSXNzdWUgZXJyb3IgaWYgdHlwZSBpcyBhZGRyZXNzYWJsZQoJYW5kICFhbGxvd3NfbWVtLgoKCVBSIG1pZGRsZS1lbmQvMzIyODUKCSogY2FsbHMuYyAocHJlY29tcHV0ZV9hcmd1bWVudHMpOiBBbHNvIHByZWNvbXB1dGUgQ0FMTF9FWFBSIGFyZ3VtZW50cwoJaWYgQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTLgoKMjAwNy0wNi0xOSAgUmFzayBJbmdlbWFubiBMYW1iZXJ0c2VuICA8cmFza0BzeWdlaHVzLmRrPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jOiBJbmNsdWRlIGRhdGFmbG93IGhlYWRlciBmaWxlLgoJKG02OGhjMTFfcmVvcmcpOiBQb3J0IHRvIGRhdGFmbG93LgoKMjAwNy0wNi0xOSAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIGRmLmggKERGX0ZJUlNUX09QVElPTkFMX1BST0JMRU0pOiBSZW1vdmVkLgoJKHN0cnVjdCBkZl9wcm9ibGVtLmZyZWVfYmxvY2tzX29uX3NldF9ibG9ja3MpOiBOZXcgZmllbGQuCgkoc3RydWN0IGRhdGFmbG93Lm9wdGlvbmFsX3ApOiBOZXcgZmllbGQuCgkoZGZfYmJfcmVnbm9fbGFzdF91c2VfZmluZCwgZGZfaW5zbl9yZWdub19kZWZfcCk6IFJlbW92ZWQuCgkoZGZfbGl2ZV9zZXRfYWxsX2RpcnR5KTogTmV3IGZ1bmN0aW9uLgoJKiBkZi1zY2FuLmMgKGRmX3NjYW5fYWxsb2MpOiBJbml0aWFsaXplIG9wdGlvbmFsX3AuCgkocHJvYmxlbV9TQ0FOKTogSW5pdGlhbGl6ZSBmcmVlX2Jsb2Nrc19vbl9zZXRfYmxvY2tzLgoJKiBkZi1jb3JlLmMgKGRmX3NldF9ibG9ja3MpOiBSZW1vdmVkIHVzZSBvZgoJREZfRklSU1RfT1BUSU9OQUxfUFJPQkxFTS4gIE5vdyB1c2VzCglkZl9wcm9ibGVtLmZyZWVfYmxvY2tzX29uX3NldF9ibG9ja3MgdG8gZGV0ZXJtaW5lIHdoaWNoIGJsb2NrcyBhcmUKCXJlY3ljbGVkLgoJKGRmX3JlbW92ZV9wcm9ibGVtKTogUmVtb3ZlZCB1c2Ugb2YgREZfRklSU1RfT1BUSU9OQUxfUFJPQkxFTS4KCShkZl9maW5pc2hfcGFzcyk6IFJlbW92ZWQgdXNlIG9mIERGX0ZJUlNUX09QVElPTkFMX1BST0JMRU0uICBOb3cKCXVzZXMgZGF0YWZsb3cub3B0aW9uYWxfcCB0byBkZXRlcm1pbmUgaWYgcHJvYmxlbSBzaG91bGQgYmUKCWRlbGV0ZWQuCgkocmVzdF9vZl9oYW5kbGVfZGZfaW5pdGlhbGl6ZSk6IE9ubHkgc3RhcnQgbGl2ZSBwcm9ibGVtIGlmIAoJLTAyIG9yIGFib3ZlLgoJKGRmX2JiX3JlZ25vX2xhc3RfdXNlX2ZpbmQsIGRmX2luc25fcmVnbm9fZGVmX3ApOiBSZW1vdmVkLgoJKiBkZi1wcm9ibGVtcy5jIChkZl9ydV9hbGxvYywgZGZfcmRfYWxsb2MsIGRmX2xyX2FsbG9jLAoJZGZfbGl2ZV9hbGxvYywgZGZfdXJlY19hbGxvYywgZGZfbm90ZV9hbGxvYyk6IHNldCBvcHRpb25hbF9wLgoJKHByb2JsZW1fUlUsIHByb2JsZW1fUkQsIHByb2JsZW1fTFIsIHByb2JsZW1fVVJFQywgcHJvYmxlbV9DSEFJTiwKCXByb2JsZW1fTk9URSk6IEluaXRpYWxpemUgZnJlZV9ibG9ja3Nfb25fc2V0X2Jsb2Nrcy4KCShkZl9scl9iYl9sb2NhbF9jb21wdXRlKTogUmVjb21wdXRlIGx1aWRzIGlmIGRmX2xpdmUgcHJvYmxlbSBpcwoJbm90IGFjdGl2ZS4KCShkZl9saXZlX3NldF9hbGxfZGlydHksIGRmX25vdGVfYWxsb2MpOiBOZXcgZnVuY3Rpb24uCgkqIHJlZ3JlbmFtZS5jIChtZXJnZV9vdmVybGFwcGluZ19yZWdzKTogQ2hhbmdlIERGX0xJVkVfKiB0bwoJZGZfZ2V0X2xpdmVfKi4KCSogc2NoZWRfZWJiLmMgKGNvbXB1dGVfanVtcF9yZWdfZGVwZW5kZW5jaWVzKTogRGl0dG8uCgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NvbWJpbmUpOiBEaXR0by4KCSogY3NlLmMgKGNzZV9leHRlbmRlZF9iYXNpY19ibG9jayk6IERpdHRvLgoJKiByZWdtb3ZlLmMgKG1hcmtfZmxhZ3NfbGlmZV96b25lcyk6IERpdHRvLgoJKiBydGxmYWN0b3JpbmcuYyAoc3BsaXRfYmxvY2tzX2FmdGVyX3NlcXMsIHNwbGl0X3BhdHRlcm5fc2VxLAoJZXJhc2VfbWF0Y2hpbmdfc2Vxcyk6IERpdHRvLgoJKiBidC1sb2FkLmMgKGNvbXB1dGVfZGVmc191c2VzX2FuZF9nZW4pOiBEaXR0by4KCSogaW50ZWdyYXRlIChhbGxvY2F0ZV9pbml0aWFsX3ZhbHVlcyk6IERpdHRvLgoJKiBjb21iaW5lLmMgKHJlZ19kZWFkX2F0X3ApOiBEaXR0by4KCSogcmVzb3VyY2UuYyAobWFya190YXJnZXRfbGl2ZV9yZWdzKTogRGl0dG8uCgkqIHNjaGVkLXJnbi5jIChjaGVja19saXZlXzEsIHVwZGF0ZV9saXZlXzEpOiBEaXR0by4KCSogY29uZmlnL3NoL3NoLmMgKGZpbmRfcjBfbGlmZV9yZWdpb25zKTogRGl0dG8uCgkqIGdsb2JhbC5jIChyZXN0X29mX2hhbmRsZV9nbG9iYWxfYWxsb2MpOiBPbmx5IGFkZCBiYWNrIGRmX2xpdmUKCWZvciAtTyA+IDEuCgkqIGxvY2FsLWFsbG9jLmMgKHJlc3Rfb2ZfaGFuZGxlX2xvY2FsX2FsbG9jKTogT25seSByZW1vdmUKCWRmX2xpdmUgZm9yIC1PID4gMS4KCSogaWZjdnQuYyAoZGVhZF9vcl9wcmVkaWNhYmxlKTogQ2hhbmdlIERGX0xJVkVfKiB0bwoJZGZfZ2V0X2xpdmVfKi4KCShpZl9jb252ZXJ0KTogTWFrZSBzdXJlIGRmX2xpdmUgaXMgdGhlcmUgYXQgLU8gPT0gMS4KCShwYXNzX2lmX2FmdGVyX2NvbWJpbmUpOiBDbGVhbnVwIGZsYWdzLgoJKiBpbml0LXJlZ3MuYyAoaW5pdGlhbGl6ZV91bmluaXRpYWxpemVkX3JlZ3MpOiBNYWtlIHN1cmUgZGZfbGl2ZQoJaXMgdGhlcmUgYXQgLU8gPT0gMS4KCQoyMDA3LTA2LTE5ICBTZW9uZ2JhZSBQYXJrICA8c2VvbmdiYWUucGFya0BnbWFpbC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZ2V0X2ZyYW1lX29mZnNldHMpOiBTZXQKCW9mZnNldHMtPmxvY2Fsc19iYXNlIHRvIGF2b2lkIG5lZ2F0aXZlIHN0YWNrIHNpemUuCgkodGh1bWIxX2V4cGFuZF9wcm9sb2d1ZSk6IEFzc2VydCBvbiBuZWdhdGl2ZSBzdGFjayBzaXplLgoKMjAwNy0wNi0xOSAgU2ViYXN0aWFuIFBvcCAgPHNlYnBvcEBnbWFpbC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzIzNjcKCSogdHJlZS1jaHJlYy5oIChidWlsZF9wb2x5bm9taWFsX2NocmVjKTogVmVyaWZ5IHRoYXQgdGhlIGxlZnQgaGFuZCBzaWRlIAoJb2YgdGhlIGNocmVjIGhhcyBubyBldm9sdXRpb24gaW4gdGhhdCBsb29wLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMzIzNjcuYzogTmV3LgoKMjAwNy0wNi0xOSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmM6IEluY2x1ZGUgImRmLmgiLgoJKHh0ZW5zYV9idWlsdGluX3NhdmVyZWdzKTogVXNlIGFkanVzdF9hZGRyZXNzIGluc3RlYWQgb2YKCWNoYW5nZV9hZGRyZXNzLgoJKHh0ZW5zYV92YV9zdGFydCk6IEludm9rZSBtYWtlX3RyZWUgd2l0aCBzaXpldHlwZSBmb3IKCWV4cGFuZF9idWlsdGluX3NhdmVyZWdzIGFuZCB0aGVuIGNvbnZlcnQgdGhlIHJlc3VsdCB0byBhIHBvaW50ZXIuCglVc2UgUE9JTlRFUl9QTFVTX0VYUFIuICBVc2Ugc2l6ZV9pbnQgaW5zdGVhZCBvZiBidWlsZF9pbnRfY3N0LgoJKHh0ZW5zYV9naW1wbGlmeV92YV9hcmdfZXhwcik6IFVzZSBzaXplX2ludCBpbnN0ZWFkIG9mIGJ1aWxkX2ludF9jc3QuCglTdWJ0cmFjdCBhcmd1bWVudCBzaXplIGZyb20gaW5kZXggdmFsdWUgYXMgaW50ZWdlcnMgYW5kIHRoZW4gdXNlCglQT0lOVEVSX1BMVVNfRVhQUiB0byBhZGQgdGhlIHJlc3VsdCB0byB0aGUgYXJyYXkgYWRkcmVzcy4KCQoyMDA3LTA2LTE5ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJUFIgdGFyZ2V0LzMyMzM1CgkqIGNvbmZpZy9tMzJjL20zMmMuYzogSW5jbHVkZSBkYXRhZmxvdyBoZWFkZXIgZmlsZS4KCShtMzJjX2VtaXRfcHJvbG9ndWUpOiBBZGp1c3QgZm9yIHByb2xvZ3VlIGluc24gY2hhbmdlLgoJKiBjb25maWcvbTMyYy9wcm9sb2d1ZS5tZCAocHJvbG9ndWVfZW50ZXJfMTYpOiBPbmx5IG1vZGlmeSBTUF9SRUdOTwoJb25jZSBpbnNpZGUgYSBQQVJBTExFTC4gQXNzdW1lIGZyYW1lIHNpemUgcGFzc2VkIGluIG9wZXJhbmQgMAoJaW5jbHVkZXMgc3BhY2UgdG8gc2F2ZSB0aGUgZmIgcmVnaXN0ZXIuCgkocHJvbG9ndWVfZW50ZXJfMjQpOiBMaWtld2lzZS4KCShlcGlsb2d1ZV9leGl0ZCk6IE9ubHkgbW9kaWZ5IFNQX1JFR05PIG9uY2UgaW5zaWRlIGEgUEFSQUxMRUwuCgoyMDA3LTA2LTE5ICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tCgoJUFIgdGFyZ2V0LzMyMzEzCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGNwcmVzdG9yZSk6IE1hcmsgJGdwIGFzIHVzZWQuCgoyMDA3LTA2LTE5ICBSYXNrIEluZ2VtYW5uIExhbWJlcnRzZW4gIDxyYXNrQHN5Z2VodXMuZGs+CgoJUFIgdGFyZ2V0LzMyMzY5CgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9pZmN2dF9tb2RpZnlfdGVzdHMpOiBEYXRhZmxvdyBtZXJnZSBmaXguCgkoZnJ2X2lmY3Z0X21vZGlmeV9pbnNuKTogTGlrZXdpc2UuCgoyMDA3LTA2LTE5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChoYW5kbGVfcHRyX2FyaXRoKTogTWFrZSBzdXJlIHRvCglvbmx5IGhhbmRsZSBwb3NpdGl2ZSBvZmZzZXRzIHRoYXQgZml0IGluIGEgSE9TVF9XSURFX0lOVC4KCjIwMDctMDYtMTkgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZW1pdF9zd3NxcnRzZik6IEZpbHRlciBvdXQgaW5maW5pdHkKCXJlc3VsdCBvZiByc3FydCBpbnNuIGZvciB6ZXJvIGlucHV0IGFyZ3VtZW50IHRvIGF2b2lkIE5hTi4KCjIwMDctMDYtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMxOTUwCgkqIHRyZWUtc3NhLWFsaWFzLXdhcm5pbmdzLmMgKGZmYW5fd2Fsa2VyKTogUHVudCBvbiBNVEFHcy4KCjIwMDctMDYtMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyMzUzCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHNldF91aWRzX2luX3B0c2V0KTogQWxzbyBoYW5kbGUgUkVTVUxUX0RFQ0wuCgoyMDA3LTA2LTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMnIvbGludXguaCAoTElCX1NQRUMpOiBBbHdheXMgaW1wbHkgLWxwdGhyZWFkIGZvciAtcHRocmVhZC4KCjIwMDctMDYtMTggIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzMyMzg5CgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoZW51bSBpeDg2X3N0YWNrX3Nsb3QpOiBBZGQgU0xPVF9WSVJUVUFMLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGFzc2lnbl8zODZfc3RhY2tfbG9jYWwpOiBBc3NlcnQgdGhhdAoJU0xPVF9WSVJUVUFMIGlzIHZhbGlkIG9ubHkgYmVmb3JlIHZpcnR1YWwgcmVncyBhcmUgaW5zdGFudGlhdGVkLgoJKGl4ODZfZXhwYW5kX2J1aWx0aW4pIFtJWDg2X0JVSUxUSU5fTERNWENTUiwgSVg4Nl9CVUlMVElOX1NUTVhDU1JdOgoJVXNlIFNMT1RfVklSVFVBTCBzdGFjayBzbG90IGluc3RlYWQgb2YgU0xPVF9URU1QLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0cnVuY2Rmc2YyLCB0cnVuY3hmPG1vZGU+Mik6IERpdHRvLgoKMjAwNy0wNi0xOCAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKExJQkdDQzJfVEZfQ0VYVCk6IE5ldy4KCjIwMDctMDYtMTggIFNlb25nYmFlIFBhcmsgIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyMzIxCgkqIGdjc2UuYyAocmVwbGFjZV9zdG9yZV9pbnNuKTogVXBkYXRlIHRoZSBub3RlIGJlZm9yZQoJY2FsbGluZyBlbWl0X2luc25fYWZ0ZXIuCgoyMDA3LTA2LTE4ICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzIzNTUKCSogZ2NzZSAocmVzdF9vZl9oYW5kbGVfZ2NzZSk6IEFkZCBjYWxsIHRvIGRmX2ZpbmlzaF9wYXNzIGFmdGVyCgljc2VfbWFpbi4KCSogZGYtcHJvYmxlbXMuYyAoZGZfbm90ZV9iYl9jb21wdXRlKTogRml4IGR1bXBpbmcgaW5mby4KCQoyMDA3LTA2LTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19leHBhbmRfZXBpbG9ndWUpOiBFbWl0IGEgcmV0dXJuCglpbnNuIHdpdGggZW1pdF9qdW1wX2luc24uCgoyMDA3LTA2LTE4ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyMzgzCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X2J1aWx0aW5fcmVjaXByb2NhbCk6IEFkZCBuZXcgYm9vbCBhcmd1bWVudC4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfYnVpbHRpbl9yZWNpcHJvY2FsKTogVXBkYXRlIHByb3RvdHlwZS4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogVXBkYXRlIGJ1aWx0aW5fcmVjaXByb2NhbC4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9CVUlMVElOX1JFQ0lQUk9DQUwpOiBVcGRhdGUgZGVzY3JpcHRpb24uCgkqIHRyZWUtc3NhLW1hdGgtb3B0cyAoZXhlY3V0ZV9jc2VfcmVjaXByb2NhbHMpOiBTa2lwIHN0YXRlbWVudHMKCXdoZXJlIGFyZzEgaXMgbm90IFNTQV9OQU1FLiAgUGFzcyB0cnVlIHRvIHRhcmdldG0uYnVpbHRpbl9yZWNpcHJvY2FsCgl3aGVuIGZuZGVjbCBpcyBpbiBCVUlMVF9JTl9NRCBjbGFzcy4KCShleGVjdXRlX2NvbnZlcnRfdG9fcnNxcnQpOiBEaXR0by4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9idWlsdGluX3JlY2lwcm9jYWwpOiBVcGRhdGUgZm9yIG5ldyBib29sCglhcmd1bWVudC4gIENvbnZlcnQgSVg4Nl9CVUlMVElOX1NRUlRQUyBjb2RlIG9ubHkgd2hlbiBtZF9mbiBpcyB0cnVlLgoJQ29udmVydCBCVUlMVF9JTl9TUVJURiBjb2RlIG9ubHkgIHdoZW4gbWRfZm4gaXMgZmFsc2UuCgoyMDA3LTA2LTE4ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGJ0LWxvYWQuYyAobW92ZV9idHJfZGVmKTogRml4IHRoZSBvcmRlciBvZiBhcmd1bWVudHMKCXRvIHZhbGlkYXRlX3JlcGxhY2VfcnR4LgoKMjAwNy0wNi0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGstZGV2aWNlcy5kZWY6IEFkZCA1NDQ1MC4uNTQ0NTUuCgoyMDA3LTA2LTE3ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzIzNjYKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbl8xKSBbRkxPQVRfVFJVTkNBVEUsCglGTE9BVF9FWFRFTkRdOiBQcmV2ZW50IG5vbi1zY2FsYXIgbW9kZXMgZnJvbSBlbnRlcmluZwoJc2lnbmlmaWNhbmRfc2l6ZS4KCjIwMDctMDYtMTcgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMjM0OQoJKiBtb2R1bG8tc2NoZWQgKGdlbmVyYXRlX3JlZ19tb3Zlcyk6IEFkZGVkIHJlc2NhbiBwYXJhbWV0ZXIgYW5kIGlmCgl0aGlzIGlzIHRydWUsIHJlc2NhbiBpbnNuIGJlaW5nIG1vZGlmaWVkLgoJKHNtc19zY2hlZHVsZSk6IEFkZGVkIHJlc2NhbiBwYXJhbWV0ZXIuCgkocmVzdF9vZl9oYW5kbGVfc21zKTogTW92ZWQgZnJlZWluZyBvZiBkb21pbmFuY2UgaW5mbyB0byBiZWZvcmUKCWdldHRpbmcgb3V0IG9mIGNmZ19sYXlvdXQuCgkKMjAwNy0wNi0xNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoSVNBX0hBU19GRjEsIElTQV9IQVNfTVZTX01WWik6IE5ldy4KCSogY29uZmlnL202OGsvbTY4ay5tZDogVXNlIElTQV9IQVNfRkYxIGFuZCBJU0FfSEFTX01WU19NVlogYXMKCWFwcHJvcHJpYXRlLgoKCSogY29uZmlnL202OGsvbTY4ay5jIChhbGxfaXNhcyk6IFJlbW92ZSBGTF9DRl9GUFUgYW5kCglGTF9DRl9FTUFDIGZyb20gdGhlIGVudHJ5IGZvciBpc2FjLgoKCSogY29uZmlnL202OGsvcHJlZGljYXRlcy5tZCAoY29uc3RfY2FsbF9vcGVyYW5kKTogQWRqdXN0IGNvbW1lbnQuCgkoY29uc3Rfc2liY2FsbF9vcGVyYW5kKTogTmV3LgoJKHNpYmNhbGxfb3BlcmFuZCk6IFVzZSBpdC4KCSogY29uZmlnL202OGsvbTY4ay5jIChGTF9GT1JfaXNhX2MpOiBOb3QgSVNBX0IgY29tcGF0aWJsZS4KCShtNjhrX2lzYXMpOiBJU0FDIGRvZXMgbm90IGltcGx5IEZQVSBvciBFTUFDLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBBZGQgSVNBX0MgbG9naWMgZm9yIHN5bWJvbGljIGp1bXAgJiBjYWxsLgoKMjAwNy0wNi0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY192aXNfaW5pdF9idWlsdGlucyk6IFJldHJpZXZlIHRoZQoJcmV0dXJuIG1vZGUgZnJvbSB0aGUgYnVpbHRpbiBpdHNlbGYuCgkoc3BhcmNfZm9sZF9idWlsdGluKTogRml4IGNhc3Qgb2YgemVybyBjb25zdGFudC4KCjIwMDctMDYtMTYgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9idWlsdGluX3JlY2lwcm9jYWwpOiBOZXcgZGVmYXVsdCB0YXJnZXQgaG9vay4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfYnVpbHRpbl9yZWNpcHJvY2FsKTogQWRkIHByb3RvdHlwZS4KCSogaG9va3MuYyAoaG9va190cmVlX3RyZWVfYm9vbF9udWxsKTogUmVtb3ZlIGhvb2suCgkqIGhvb2tzLmggKGhvb2tfdHJlZV90cmVlX2Jvb2xfbnVsbCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0JVSUxUSU5fUkVDSVBST0NBTCk6IERlZmluZSBhcwoJZGVmYXVsdF9idWlsdGluX3JlY2lwcm9jYWwuCgoyMDA3LTA2LTE2ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzE3MjMKCSogaG9va3MuYyAoaG9va190cmVlX3RyZWVfYm9vbF9udWxsKTogTmV3IGhvb2suCgkqIGhvb2tzLmggKGhvb2tfdHJlZV90cmVlX2Jvb2xfbnVsbCk6IEFkZCBwcm90b3R5cGUuCgkqIHRyZWUtcGFzcy5oIChwYXNzX2NvbnZlcnRfdG9fcnNxcnQpOiBEZWNsYXJlLgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkIHBhc3NfY29udmVydF90b19yc3FydC4KCSogdHJlZS1zc2EtbWF0aC1vcHRzLmMgKGV4ZWN1dGVfY3NlX3JlY2lwcm9jYWxzKTogU2NhbiBmb3IgYS9mdW5jKGIpCglhbmQgY29udmVydCBpdCB0byByZWNpcHJvY2FsIGEqcmZ1bmMoYikuCgkoZXhlY3V0ZV9jb252ZXJ0X3RvX3JzcXJ0KTogTmV3IGZ1bmN0aW9uLgoJKGdhdGVfY29udmVydF90b19yc3FydCk6IE5ldyBmdW5jdGlvbi4KCShwYXNzX2NvbnZlcnRfdG9fcnNxcnQpOiBOZXcgcGFzcyBkZWZpbml0aW9uLgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgYnVpbHRpbl9yZWNpcHJvY2FsLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9CVUlMVElOX1JFQ0lQUk9DQUwpOiBOZXcgZGVmaW5lLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEluaXRpYWxpemUgYnVpbHRpbl9yZWNpcHJvY2FsIHdpdGgKCVRBUkdFVF9CVUlMVElOX1JFQ0lQUk9DQUwuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfQlVJTFRJTl9SRUNJUFJPQ0FMKTogRG9jdW1lbnQuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9SRUNJUCk6IE5ldyBkZWZpbmUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGRpdnNmMyk6IEV4cGFuZCBieSBjYWxsaW5nIGl4ODZfZW1pdF9zd2RpdnNmCglmb3IgVEFSR0VUX1NTRV9NQVRIIGFuZCBUQVJHRVRfUkVDSVAgd2hlbiBmbGFnX2Zpbml0ZV9tYXRoX29ubHkgYW5kCglmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgYXJlIHNldCwgZmxhZ190cmFwcGluZ19tYXRoIGlzIHVuc2V0CglhbmQgbm90IG9wdGltaXppbmcgZm9yIHNpemUuCgkoKnJjcHNmMl9zc2UpOiBOZXcgaW5zbiBwYXR0ZXJuLgoJKCpyc3FydHNmMl9zc2UpOiBEaXR0by4KCShyc3FydHNmMik6IE5ldyBleHBhbmRlci4gIEV4cGFuZCBieSBjYWxsaW5nIGl4ODZfZW1pdF9zd3NxcnRzZgoJZm9yIFRBUkdFVF9TU0VfTUFUSCBhbmQgVEFSR0VUX1JFQ0lQIHdoZW4gZmxhZ19maW5pdGVfbWF0aF9vbmx5IGFuZAoJZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zIGFyZSBzZXQsIGZsYWdfdHJhcHBpbmdfbWF0aCBpcyB1bnNldAoJYW5kIG5vdCBvcHRpbWl6aW5nIGZvciBzaXplLgoJKHNxcnQ8bW9kZT4yKTogRXhwYW5kIFNGbW9kZSBvcGVyYW5kcyBieSBjYWxsaW5nIGl4ODZfZW1pdF9zd3NxcnRzZgoJZm9yIFRBUkdFVF9TU0VfTUFUSCBhbmQgVEFSR0VUX1JFQ0lQIHdoZW4gZmxhZ19maW5pdGVfbWF0aF9vbmx5IGFuZAoJZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zIGFyZSBzZXQsIGZsYWdfdHJhcHBpbmdfbWF0aCBpcyB1bnNldAoJYW5kIG5vdCBvcHRpbWl6aW5nIGZvciBzaXplLgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKGRpdnY0c2YpOiBFeHBhbmQgYnkgY2FsbGluZyBpeDg2X2VtaXRfc3dkaXZzZgoJZm9yIFRBUkdFVF9TU0VfTUFUSCBhbmQgVEFSR0VUX1JFQ0lQIHdoZW4gZmxhZ19maW5pdGVfbWF0aF9vbmx5IGFuZAoJZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zIGFyZSBzZXQsIGZsYWdfdHJhcHBpbmdfbWF0aCBpcyB1bnNldAoJYW5kIG5vdCBvcHRpbWl6aW5nIGZvciBzaXplLgoJKCpzc2VfcnNxcnR2NHNmMik6IERvIG5vdCBleHBvcnQuCgkoc3FydHY0c2YyKTogRGl0dG8uCgkoc3NlX3JzcXJ0djRzZjIpOiBOZXcgZXhwYW5kZXIuICBFeHBhbmQgYnkgY2FsbGluZyBpeDg2X2VtaXRfc3dzcXJ0c2YKCWZvciBUQVJHRVRfU1NFX01BVEggYW5kIFRBUkdFVF9SRUNJUCB3aGVuIGZsYWdfZmluaXRlX21hdGhfb25seSBhbmQKCWZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBhcmUgc2V0LCBmbGFnX3RyYXBwaW5nX21hdGggaXMgdW5zZXQKCWFuZCBub3Qgb3B0aW1pemluZyBmb3Igc2l6ZS4KCShzcXJ0djRzZjIpOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG1yZWNpcCk6IE5ldyBvcHRpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfZW1pdF9zd2RpdnNmKTogRGVjbGFyZS4KCShpeDg2X2VtaXRfc3dzcXJ0c2YpOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChJWDg2X0JVSUxUSU5fUlNRUlRGKTogTmV3IGNvbnN0YW50LgoJKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogX19idWlsdGluX2lhMzJfcnNxcnRmOiBOZXcKCWJ1aWx0aW4gZGVmaW5pdGlvbi4KCShpeDg2X2V4cGFuZF9idWlsdGluKTogRXhwYW5kIElYODZfQlVJTFRJTl9SU1FSVEYgdXNpbmcKCWl4ODZfZXhwYW5kX3Vub3AxX2J1aWx0aW4uCgkoaXg4Nl9lbWl0X3N3ZGl2c2YpOiBOZXcgZnVuY3Rpb24uCgkoaXg4Nl9lbWl0X3N3c3FydHNmKTogRGl0dG8uCgkoaXg4Nl9idWlsdGluX3JlY2lwcm9jYWwpOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX0JVSUxUSU5fUkVDSVBST0NBTCk6IFVzZSBpdC4KCShpeDg2X3ZlY3Rvcml6ZV9idWlsdGluX2NvbnZlcnNpb24pOiBSZW5hbWUgZnJvbQoJaXg4Nl9idWlsdGluX2NvbnZlcnNpb24uCgkoVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX0NPTlZFUlNJT04pOiBVc2UgcmVuYW1lZCBmdW5jdGlvbi4KCSogZG9jL2ludm9rZS50ZXhpIChNYWNoaW5lIERlcGVuZGVudCBPcHRpb25zKTogQWRkIC1tcmVjaXAgdG8KCSJpMzg2IGFuZCB4ODZfNjQgT3B0aW9ucyIgc2VjdGlvbi4KCShJbnRlbCAzODYgYW5kIEFNRCB4ODZfNjQgT3B0aW9ucyk6IERvY3VtZW50IC1tcmVjaXAuCgoyMDA3LTA2LTE1ICBBbmRyZXcgUGluc2tpIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoJICAgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCSAgICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgkgICAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiB0cmVlLXZycC5jIChjb21wYXJlX3ZhbHVlc193YXJudik6IENvbnZlcnQgdmFsMiB0bwoJdGhlIHR5cGUgb2YgdmFsMS4KCShleHRyYWN0X3JhbmdlX2Zyb21fYXNzZXJ0KTogQ3JlYXRlCglQT0lOVEVSX1BMVVNfRVhQUiBmb3IgcG9pbnRlciB0eXBlcy4KCShleHRyYWN0X3JhbmdlX2Zyb21fYmluYXJ5X2V4cHIpOiBIYW5kbGUKCW9ubHkgUE9JTlRFUl9QTFVTX0VYUFIsIE1JTl9FWFBSLCBhbmQgTUFYX0VYUFIKCWZvciBwb2ludGVyIHR5cGVzLgoJKiBkb2MvYy10cmVlLnRleGkgKFBPSU5URVJfUExVU19FWFBSKTogRG9jdW1lbnQuCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAoc3BsaXRfdG9fdmFyX2FuZF9vZmZzZXQpOiBIYW5kbGUKCVBPSU5URVJfUExVU19FWFBSIGFzIFBMVVNfRVhQUi4KCShudW1iZXJfb2ZfaXRlcmF0aW9uc19sdF90b19uZSk6CglGb3IgcG9pbnRlciB0eXBlcywgdXNlIHNpemV0eXBlIHdoZW4KCWNyZWF0aW5nIE1JTlVTX0VYUFIvUExVU19FWFBScy4KCShhc3NlcnRfbG9vcF9yb2xsc19sdCk6IEZvciBwb2ludGVyIHR5cGVzLCB1c2Ugc2l6ZXR5cGUgd2hlbgoJY3JlYXRpbmcgTUlOVVNfRVhQUi9QTFVTX0VYUFJzLgoJKG51bWJlcl9vZl9pdGVyYXRpb25zX2xlKTogTGlrZXdpc2UuCgkoZXhwYW5kX3NpbXBsZV9vcGVyYXRpb25zKTogUE9JTlRFUl9QTFVTX0VYUFIgYXJlIHNpbXBsZSBhbHNvLgoJKGRlcml2ZV9jb25zdGFudF91cHBlcl9ib3VuZCk6IEhhbmRsZSBQT0lOVEVSX1BMVVNfRVhQUiBqdXN0CglsaWtlIFBMVVNfRVhQUiBhbmQgTUlOVVNfRVhQUi4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBIYW5kbGUKCVBPSU5URVJfUExVU19FWFBSLgoJKG9wX3ByaW8pOiBMaWtld2lzZS4KCShvcF9zeW1ib2xfMSk6IExpa2V3aXNlLgoJKiBvcHRhYnMuYyAob3B0YWJfZm9yX3RyZWVfY29kZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKGNyZWF0ZV9pdik6IEhhbmRsZSBwb2ludGVyIGJhc2UKCXNwZWNpYWxseS4KCSogdHJlZS10YWlsY2FsbC5jIChwcm9jZXNzX2Fzc2lnbm1lbnQpOiBNZW50aW9uCglQT0lOVEVSX1BMVVNfRVhQUiBpbiBhIFRPRE8gY29tbWVudC4KCSogdHJlZS5jIChidWlsZDJfc3RhdCk6IEFzc2VydCB3aGVuIHRyeWluZyB0byB1c2UgUExVU19FWFBSIG9yIAoJTUlOVVNfRVhQUiB3aXRoIGEgcG9pbnRlci4gQWxzbyBhc3NlcnQgZm9yIFBPSU5URVJfUExVU19FWFBSCglub3QgdXNlZCB3aXRoIGEgcG9pbnRlciBhbmQgYW4gaW50ZWdlciB0eXBlLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoYWRkX3RvX2V2b2x1dGlvbl8xKTogQ29udmVydCB0aGUKCWluY3JlbWVudCB1c2luZyBjaHJlY19jb252ZXJ0X3JocyBpbnN0ZWFkIG9mIGNocmVjX2NvbnZlcnQuCgkoZm9sbG93X3NzYV9lZGdlX2luX3Jocyk6IEhhbmRsZSBQT0lOVEVSX1BMVVNfRVhQUiBsaWtlCglQTFVTX0VYUFIgZXhjZXB0IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlJ3MgdHlwZSB3aWxsIGJlCglzaXpldHlwZS4KCShpbnRlcnByZXRfcmhzX21vZGlmeV9zdG10KTogSGFuZGxlIFBPSU5URVJfUExVU19FWFBSLgoJKGZvbGRfdXNlZF9wb2ludGVyX2Nhc3QpOiBLaWxsLgoJKHBvaW50ZXJfb2Zmc2V0X3ApOiBLaWxsLgoJKGZvbGRfdXNlZF9wb2ludGVyKTogS2lsbC4KCShwb2ludGVyX3VzZWRfcCk6IEtpbGwuCgkoYW5hbHl6ZV9zY2FsYXJfZXZvbHV0aW9uXzEgPGNhc2UgR0lNUExFX01PRElGWV9TVE1UPik6IERvbid0CgljYWxsIGZvbGRfdXNlZF9wb2ludGVyLgoJKGluc3RhbnRpYXRlX3BhcmFtZXRlcnNfMSk6IENvbnZlcnQgdGhlIGluY3JlbWVudAoJdXNpbmcgY2hyZWNfY29udmVydF9yaHMgaW5zdGVhZCBvZiBjaHJlY19jb252ZXJ0LgoJSGFuZGxlIFBPSU5URVJfUExVU19FWFBSIGFzIFBMVVNfRVhQUi4KCSogYnVpbHRpbnMuYyAoZ2V0X3BvaW50ZXJfYWxpZ25tZW50KTogSGFuZGxlIFBPSU5URVJfUExVU19FWFBSCglpbnN0ZWFkIG9mIFBMVVNfRVhQUi4KCShleHBhbmRfYnVpbHRpbl9zdHJjYXQpOiBDcmVhdGUgYSBQT0lOVEVSX1BMVVNfRVhQUiBpbnN0ZWFkIG9mCglQTFVTX0VYUFIgZm9yIHBvaW50ZXJzLgoJKHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwcik6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9tZW1vcnlfb3ApOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc3Ryc3RyKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cmNocik6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zdHJyY2hyKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cnBicmspOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1vcnlfY2hrKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX21lbW9yeV9jaGspOiBMaWtld2lzZS4KCShzdGRfZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBVc2UKCXNpemV0eXBlIGZvciB0aGUgY2FsbCB0byBtYWtlX3RyZWUgYW5kIHRoZW4gY29udmVydAoJdG8gdGhlIHBvaW50ZXIgdHlwZS4KCShmb2xkX2J1aWx0aW5fbWVtY2hyKTogVXNlIFBPSU5URVJfUExVU19FWFBSCglpbnN0ZWFkIG9mIFBMVVNfRVhQUiBmb3IgYWRkaW5nIHRvIGEgcG9pbnRlci4KCShzdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBVc2UgZm9sZF9idWlsZDIgZm9yCgl0aGUgY3JlYXRpbmcgb2YgUE9JTlRFUl9QTFVTX0VYUFIuICBGb3IgdGhlIEJJVF9BTkRfRVhQUiwgY2FzdAoJdGhlIG9wZXJhbmRzIHRvIHNpemV0eXBlIGZpcnN0IGFuZCB0aGVuIGNhc3QgdGhlIEJJVF9BTkRfRVhQUgoJYmFjayB0byB0aGUgcG9pbnRlciB0eXBlLgoJKiBmb2xkLWNvbnN0LmMgKGJ1aWxkX3JhbmdlX2NoZWNrKTogSGFuZGxlIHBvaW50ZXIgdHlwZXMKCXNwZWNpYWxseS4KCShleHRyYWN0X2FycmF5X3JlZik6IExvb2sgZm9yIFBPSU5URVJfUExVU19FWFBSIGluc3RlYWQKCW9mIFBMVVNfRVhQUidzLiBNYWtlIHN1cmUgdGhlIG9mZnNldCBpcyBjb252ZXJ0ZWQgdG8KCXNpemV0eXBlLgoJKHRyeV9tb3ZlX211bHRfdG9faW5kZXgpOiBTdHJpcCB0aGUgTk9QcyBmcm9tIHRoZSBvZmZzZXQuCglSZW1vdmUgY29kZSBhcmd1bWVudCBhbmQgcmVwbGFjZSBhbGwgdXNlcyB3aXRoIFBMVVNfRVhQUi4KCShmb2xkX3RvX25vbnNoYXJwX2luZXFfdXNpbmdfYm91bmQpOiBIYW5kbGUgcG9pbnRlciB0eXBlcwoJc3BlY2lhbGx5LiBEb24ndCB1c2UgYSBwb2ludGVyIHR5cGUgZm9yIE1JTlVTX0VYUFIuCgkoZm9sZF91bmFyeSk6IEhhbmRsZSBmb3IgKFQxKShYIG9wIFkpLAoJb25seSBwKyBhcyB0aGF0IGlzIHRoZSBvbmx5IGFzIHRoYXQgY2FuIGJlIGhhbmRsZWQgZm9yCgliaW5hcnkgb3BlcmF0b3JzIG5vdy4KCShmb2xkX2JpbmFyeSA8Y2FzZSBQT0lOVEVSX1BMVVNfRVhQUj4pOiBBZGQgZm9sZGluZyBvZgoJUE9JTlRFUl9QTFVTX0VYUFIuCgk8Y2FzZSBQTFVTX0VYUFI+OiBBZGQgZm9sZGluZyBvZiBQVFIrSU5UIGludG8KCVBUUiBwKyBJTlQuCglEb24ndCBjYWxsIHRyeV9tb3ZlX211bHRfdG9faW5kZXguCgk8Y2FzZSBNSU5VU19FWFBSPjogRm9sZCAoUFRSMCBwKyBBKSAtIChQVFIxIHArIEIpCglpbnRvIChQVFIwIC0gUFRSMSkgKyAoQSAtIEIpLiBGb2xkIChQVFIwIHArIEEpIC0gUFRSMSBpbnRvCgkoUFRSMCAtIFBUUjEpICsgQSBpZmYgKFBUUjAgLSBQVFIxKSBzaW1wbGlmaWVzLgoJRG9uJ3QgY2FsbCB0cnlfbW92ZV9tdWx0X3RvX2luZGV4LgoJKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV93YXJudl9wKTogSGFuZGxlIFBPSU5URVJfUExVU19FWFBSLgoJKHRyZWVfZXhwcl9ub256ZXJvX3ApOiBMaWtld2lzZS4KCShmb2xkX2luZGlyZWN0X3JlZl8xKTogTG9vayBhdCBQT0lOVEVSX1BMVVNfRVhQUiBpbnN0ZWFkCglvZiBQTFVTX0VYUFIgZm9yIHRoZSBjb21wbGV4IGV4cHJlc3Npb24gZm9sZGluZy4KCSogdHJlZS1jaHJlYy5jIChjaHJlY19mb2xkX3BsdXNfcG9seV9wb2x5KTogSWYgdGhlCglmaXJzdCBjaHJlYyBpcyBhIHBvaW50ZXIgdHlwZSwgdGhlbiB0aGUgc2Vjb25kIHNob3VsZAoJYmUgc2l6ZXR5cGUgYW5kIG5vdCB0aGUgZmlyc3QncyB0eXBlLgoJRm9yIFBPSU5URVJfUExVU19FWFBSLCB1c2UgYSBkaWZmZXJlbnQgcmlnaHQgaGFuZCBzaWRlIHR5cGUuCglIYW5kbGUgUE9JTlRFUl9QTFVTX0VYUFIgbGlrZSBQTFVTX0VYUFIuCgkoY2hyZWNfZm9sZF9wbHVzXzEpOiBGb3IgUE9JTlRFUl9QTFVTX0VYUFIsIHVzZSBhCglkaWZmZXJlbnQgcmlnaHQgaGFuZCBzaWRlIHR5cGUuCglIYW5kbGUgUE9JTlRFUl9QTFVTX0VYUFIgbGlrZSBQTFVTX0VYUFIuCgkoY2hyZWNfZm9sZF9wbHVzKTogRm9yIHBvaW50ZXIgdHlwZXMsIHVzZSBQT0lOVEVSX1BMVVNfRVhQUgoJaW5zdGVhZCBvZiBQTFVTX0VYUFIuCglXaGVuIGVpdGhlciBvcGVyYW5kIGlzIHplcm8sIGNvbnZlcnQgdGhlIG90aGVyIG9wZXJhbmQuCgkoY2hyZWNfYXBwbHkpOiBVc2UgY2hyZWNfY29udmVydF9yaHMKCW9uIHRoZSBhcmd1bWVudCB4IGluc3RlYWQgb2YgY2hyZWNfY29udmVydC4KCShyZXNldF9ldm9sdXRpb25faW5fbG9vcCk6IEZvciBwb2ludGVyIHR5cGVzLCB0aGUgbmV3X2V2b2wKCXNob3VsZCBiZSBzaXpldHlwZS4KCShjb252ZXJ0X2FmZmluZV9zY2V2KTogRm9yIFBPSU5URVJfUExVU19FWFBSLCB1c2UgYQoJZGlmZmVyZW50IHJpZ2h0IGhhbmQgc2lkZSB0eXBlLgoJSGFuZGxlIFBPSU5URVJfUExVU19FWFBSIGxpa2UgUExVU19FWFBSLgoJKGNocmVjX2NvbnZlcnRfcmhzKTogTmV3IGZ1bmN0aW9uLgoJKGNocmVjX2NvbnZlcnRfYWdncmVzc2l2ZSk6IEZvciBQT0lOVEVSX1BMVVNfRVhQUiwgdXNlIGEKCWRpZmZlcmVudCByaWdodCBoYW5kIHNpZGUgdHlwZS4KCUhhbmRsZSBQT0lOVEVSX1BMVVNfRVhQUiBsaWtlIFBMVVNfRVhQUi4KCSogdHJlZS1jaHJlYy5oIChjaHJlY19jb252ZXJ0X3Jocyk6IE5ldyBwcm90b3R5cGUuCgkoYnVpbGRfcG9seW5vbWlhbF9jaHJlYyk6IEZvciBwb2ludGVyIHR5cGVzLCB0aGUgcmlnaHQgaGFuZAoJKiB0cmVlLXNzYS1jY3AuYyAobWF5YmVfZm9sZF9zdG10X2luZGlyZWN0KTogTG9vayBmb3IKCVBPSU5URVJfUExVU19FWFBSIGluc3RlYWQgb2YgUExVU19FWFBSJ3MuCglSZW1vdmUgc3VidHJhY3Rpb24gY2FzZSBhcyBpdCBpcyBhbHdheXMgYWRkaXRpb24gbm93LgoJTWFrZSBzdXJlIHRoZSBvZmZzZXQgaXMgY29udmVydGVkIHRvIHNpemV0eXBlLgoJKGZvbGRfc3RtdF9yKTogRG9uJ3QgaGFuZGxlIFBMVVNfRVhQUi9NSU5VU19FWFBSIHNwZWNpYWxseS4KCUhhbmRsZSBQT0lOVEVSX1BMVVNfRVhQUiBsaWtlIFBMVVNfRVhQUiB3YXMgaGFuZGxlZCBiZWZvcmUuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGRldGVybWluZV9iYXNlX29iamVjdCk6IEFib3J0IGZvciAKCVBMVVNfRVhQUiBpbiBwb2ludGVyIHR5cGUuCglIYW5kbGUgUE9JTlRFUl9QTFVTX0VYUFIuCgkodHJlZV90b19hZmZfY29tYmluYXRpb24pOiBMaWtld2lzZS4KCShmb3JjZV9leHByX3RvX3Zhcl9jb3N0KTogTGlrZXdpc2UuCgkoZm9yY2VfZXhwcl90b192YXJfY29zdCk6IExpa2V3aXNlLiBDcmVhdGUgYSBQT0lOVEVSX1BMVVNfRVhQUgoJaW5zdGVhZCBvZiBQTFVTX0VYUFIgZm9yIHBvaW50ZXJzLgoJKiBjLWZvcm1hdC5jIChjaGVja19mb3JtYXRfYXJnKTogSGFuZGxlIFBPSU5URVJfUExVU19FWFBSCglpbnN0ZWFkIG9mIFBMVVNfRVhQUiBvZiBwb2ludGVyIHR5cGVzLgoJKiB0cmVlLXN0ZGFyZy5jICh2YV9saXN0X2NvdW50ZXJfYnVtcCk6IEhhbmRsZSBQT0lOVEVSX1BMVVNfRVhQUgoJYXMgUExVU19FWFBSLgoJKGNoZWNrX3ZhX2xpc3RfZXNjYXBlcyk6IExpa2V3aXNlLgoJKGNoZWNrX2FsbF92YV9saXN0X2VzY2FwZXMpOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZV8xKToKCUhhbmRsZSBQT0lOVF9QTFVTX0VYUFIgYXMgYSBQTFVTX0VYUFIuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogSGFuZGxlIFBPSU5URVJfUExVU19FWFBSLgoJKHN0cmluZ19jb25zdGFudCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1hZGRyZXNzLmMgKHRyZWVfbWVtX3JlZl9hZGRyKTogV2hlbiBhZGRpbmcKCXRoZSBvZmZzZXQgdG8gdGhlIGJhc2UsIHVzZSBQT0lOVEVSX1BMVVNfRVhQUi4KCShhZGRfdG9fcGFydHMpOiBDb252ZXJ0IHRoZSBpbmRleCB0byBzaXpldHlwZS4KCShjcmVhdGVfbWVtX3JlZik6IENyZWF0ZSBBIFBPSU5URVJfUExVU19FWFBSIGZvciB0aGUgb25lIGNhc2UuCgkqIG1hdHJpeC1yZW9yZy5jIChjb2xsZWN0X2RhdGFfZm9yX21hbGxvY19jYWxsKTogU3RtdAoJd2lsbCBub3cgb25seSBiZSBlaXRoZXIgSU5ESVJFQ1RfUkVGIGFuZCBQT0lOVEVSX1BMVVNfRVhQUi4KCU9mZnNldCBvbmx5IGhvbGRzIHNvbWV0aGluZyBmb3IgUExVU19FWFBSLgoJKHNzYV9hY2Nlc3NlZF9pbl90cmVlKTogSGFuZGxlIFBPSU5URVJfUExVU19FWFBSIGp1c3QgYXMKCWEgUExVU19FWFBSLgoJKGFuYWx5emVfdHJhbnNwb3NlKTogUE9JTlRFUl9QTFVTX0VYUFIgd2lsbCBvbmx5IHNob3cgdXAgbm93CglhbmQgbm90IFBMVVNfRVhQUi4KCShhbmFseXplX2FjY2Vzc2VzX2Zvcl9tb2RpZnlfc3RtdCk6IExpa2V3aXNlLgoJUmVtb3ZlIGNvbW1lbnQgYWJvdXQgdGhlIHR5cGUgYmVpbmcgaW50ZWdyYWwgdHlwZSBhcyBpdCBpcwoJd3Jvbmcgbm93LgoJKGNhbl9jYWxjdWxhdGVfZXhwcl9iZWZvcmVfc3RtdCk6IEhhbmRsZSBQT0lOVEVSX1BMVVNfRVhQUiBhcwoJUExVU19FWFBSLgoJKHRyYW5zZm9ybV9hY2Nlc3Nfc2l0ZXMpOiBQT0lOVEVSX1BMVVNfRVhQUiB3aWxsIG9ubHkgc2hvdyB1cCBub3cKCWFuZCBub3QgUExVU19FWFBSLgoJQ29ycmVjdCB0aGUgdHlwZSB3aGljaCB0aGUgYXJ0aW1lbnRpYyBpcyBkb25lIGluIChpcyBub3cKCXNpemV0eXBlKS4KCVJlaW5kZW50IG9uZSBsb29wLgoJKiB0cmVlLWRhdGEtcmVmLmMgKHNwbGl0X2NvbnN0YW50X29mZnNldCk6IEhhbmRsZQoJUE9JTlRFUl9QTFVTX0VYUFIKCSogdHJlZS1hZmZpbmUuYyAodHJlZV90b19hZmZfY29tYmluYXRpb24pOiBMaWtld2lzZS4KCSogYy10eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBGb3IgcG9pbnRlcnMgY3JlYXRlIHRoZSBpbmNyZW1lbnQKCWFzIGEgc2l6ZXR5cGUuIENyZWF0ZSBhIFBPSU5URVJfUExVU19FWFBSIGluc3RlYWQgb2YgUExVU19FWFBSCglmb3IgcG9pbnRlcnMuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3NlbGZfbW9kX2V4cHIpOiBDcmVhdGUgYQoJUE9JTlRFUl9QTFVTX0VYUFIgaW5zdGVhZCBvZiBQTFVTX0VYUFIgZm9yIHBvaW50ZXJzLgoJKGdpbXBsaWZ5X29tcF9hdG9taWNfZmV0Y2hfb3ApOiBIYW5kbGUgUE9JTlRFUl9QTFVTX0VYUFIuCgkqIHRyZWUuZGVmIChQT0lOVEVSX1BMVVNfRVhQUik6IE5ldyB0cmVlIGNvZGUuCgkqIHRyZWUtcHJlZGNvbS5jIChyZWZfYXRfaXRlcmF0aW9uKTogSWYgd2UgaGF2ZSBhIHBvaW50ZXIKCXR5cGUgZG8gdGhlIG11bHRpcGxpY2F0aW9uIGluIHNpemV0eXBlLgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfeGZvcm1fZGVyZWZzXzEpOiBDcmVhdGUgYQoJUE9JTlRFUl9QTFVTX0VYUFIgaW5zdGVhZCBvZiBQTFVTX0VYUFIgZm9yIHBvaW50ZXJzLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIAoJKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfaW50b192YXJpYWJsZV9hcnJheV9pbmRleCk6CglEb24ndCBleHBlY3QgdGhlcmUgdG8gYmUgYSBjYXN0IGZvciB0aGUgaW5kZXggYXMgdGhhdAoJZG9lcyBub3QgZXhpc3QgYW55bW9yZS4KCShmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2V4cHJfMSk6IENoZWNrIGZvciBQT0lOVEVSX1BMVVNfRVhQUgoJaW5zdGVhZCBvZiBQTFVTX0VYUFIuCglEb24ndCBjaGVjayBmb3IgdGhlIGZpcnN0IG9wZXJhbmQgb2YgdGhlIFBPSU5URVJfUExVU19FWFBSCgl3YXMgdGhlIGluZGV4IGFzIGl0IGNhbm5vdCBiZS4KCUNhbGwgZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9pbnRvX3ZhcmlhYmxlX2FycmF5X2luZGV4IHdpdGgKCXRoZSBTU0FfTkFNRSBpbnN0ZWFkIG9mIHRoZSBzdGF0ZW1lbnQuCgkqIHZhcmFzbS5jIChjb25zdF9oYXNoXzEpOiBIYW5kbGUgUE9JTlRFUl9QTFVTX0VYUFIuCgkoY29tcGFyZV9jb25zdGFudCk6IExpa2V3aXNlLgoJKGNvcHlfY29uc3RhbnQpOiBMaWtld2lzZS4KCShjb21wdXRlX3JlbG9jX2Zvcl9jb25zdGFudCk6IExpa2V3aXNlLgoJKG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS5jICh0cmVlX3NzYV91c2VsZXNzX3R5cGVfY29udmVyc2lvbl8xKToKCUNvbnZlcnQgdGhlIE1JTi9NQVggb2YgdGhlIGlubmVyIHR5cGUgdG8gdGhlIG91dGVyCgl0eXBlIGJlZm9yZSBjb21wYXJpbmcgdGhlbS4KCSogdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jIChpZHhfYW5hbHl6ZV9yZWYpOiBIYW5kbGUKCVBPSU5URVJfUExVU19FWFBSIGluc3RlYWQgb2YgUExVU19FWFBSLgoJKGlzc3VlX3ByZWZldGNoX3JlZik6IENyZWF0ZSBhIFBPSU5URVJfUExVU19FWFBSIGluc3RlYWQKCW9mIFBMVVNfRVhQUiBmb3IgcG9pbnRlcnMuCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogSGFuZGxlCglQT0lOVEVSX1BMVVNfRVhQUi4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2NyZWF0ZV9hZGRyX2Jhc2VfZm9yX3ZlY3Rvcl9yZWYpOiAKCUNyZWF0ZSBhIFBPSU5URVJfUExVU19FWFBSIGluc3RlYWQgb2YgUExVU19FWFBSIGZvciBwb2ludGVycy4KCShidW1wX3ZlY3Rvcl9wdHIpOiBDcmVhdGUgYSBQT0lOVEVSX1BMVVNfRVhQUgoJaW5zdGVhZCBvZiBQTFVTX0VYUFIgZm9yIHRoZSBwb2ludGVyIGluY3JlbWVudCBzdGF0ZW1lbnQuCgkodmVjdF91cGRhdGVfaXZzX2FmdGVyX3ZlY3Rvcml6ZXIpOiBGb3IgcG9pbnRlciB0eXBlcywgY3JlYXRlCglQT0lOVEVSX1BMVVNfRVhQUiBpbnN0ZWFkIG9mIFBMVVNfRVhQUiBhbmQgYWxzbyBjcmVhdGUKCU1VTFRfRVhQUiBpbiBzaXpldHlwZS4KCSh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogQWRkIGEgY2FzdCB3aGVuIGNyZWF0aW5nCglieXRlX21pc2FsaWduLgoJKiB0cmVlLW9iamVjdC1zaXplLmMgKHBsdXNfZXhwcl9vYmplY3Rfc2l6ZSk6IEhhbmRsZQoJUE9JTlRFUl9QTFVTX0VYUFIgaW5zdGVhZCBvZiBQTFVTX0VYUFIuICBSZW1vdmluZyBhbGwgdGhlIGV4dHJhCgljb2RlIHdoaWNoIGlzIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIHNpZGUgaXMgYSBwb2ludGVyIGFuZCAKCWlzIHRoZSBpbmRleC4KCShjaGVja19mb3JfcGx1c19pbl9sb29wc18xKTogTGlrZXdpc2UuCgkoY2hlY2tfZm9yX3BsdXNfaW5fbG9vcHMpOiBMaWtld2lzZS4KCSogYy1jb21tb24uYyAocG9pbnRlcl9pbnRfc3VtKTogQ3JlYXRlIGEKCVBPSU5URVJfUExVU19FWFBSIGluc3RlYWQgb2YgUExVU19FWFBSIGZvciBwb2ludGVycy4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoaGFuZGxlX3B0cl9hcml0aCk6IEhhbmRsZQoJb25seSBQT0lOVEVSX1BMVVNfRVhQUi4gIFJlbW92aW5nIGFsbCB0aGUgZXh0cmEKCWNvZGUgd2hpY2ggaXMgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggc2lkZSBpcyBhIHBvaW50ZXIgYW5kIAoJaXMgdGhlIGluZGV4LgoJKiB0cmVlLWNmZy5jICh2ZXJpZnlfZXhwcik6IEFkZCBleHRyYSBjaGVja2luZyBmb3IgcG9pbnRlcnMgYW5kCglQTFVTX0VYUFIgYW5kIE1JTlVTX0VYUFIuCglBbHNvIGFkZCBjaGVja2luZyB0byBtYWtlIHN1cmUgdGhlIG9wZXJhbmRzIG9mIFBPSU5URVJfUExVU19FWFBSCglhcmUgY29ycmVjdC4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2V4cGFuZF9idWlsdGluX3ZhX3N0YXJ0KTogVXNlIHNpemV0eXBlCgl3aXRoIG1ha2VfdHJlZSwgaW5zdGVhZCBvZiBhIHBvaW50ZXIgdHlwZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3ZhX3N0YXJ0KTogVXNlIFBPSU5URVJfUExVU19FWFBSCglmb3IgcG9pbnRlcnMgaW5zdGVhZCBvZiBQTFVTX0VYUFIuCgkoczM5MF9naW1wbGlmeV92YV9hcmcpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwdS9zcHUuYyAoc3B1X3ZhX3N0YXJ0KTogQ3JlYXRlIFBPSU5URVJfUExVU19FWFBSCglpbnN0ZWFkIG9mIFBMVVNfRVhQUiB3aGVuIGRvaW5nIGFkZGl0aW9uIG9uIHBvaW50ZXIKCXR5cGVzLiAgVXNlIHNpemV0eXBlIGZvciB0aGUgc2Vjb25kIG9wZXJhbmQuCgkoc3B1X2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19naW1wbGlmeV92YV9hcmcpOiBVc2UgCglQT0lOVEVSX1BMVVNfRVhQUiBpbnN0ZWFkIG9mIFBMVVNfRVhQUiB3aGVuIHRoZSBvcGVyYW5kIHdhcwoJYSBwb2ludGVyLiAgRG9uJ3QgY3JlYXRlIGEgQklUX0FORF9FWFBSIGZvciBwb2ludGVyIHR5cGVzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdmFfc3RhcnQpOiBVc2UgUE9JTlRFUl9QTFVTX0VYUFIKCWZvciB0aGUgcG9pbnRlciBhZGRpdGlvbiBhbmQgYWxzbyB1c2Ugc2l6ZV9pbnQvc2l6ZXR5cGUKCWZvciB0aGUgb2Zmc2V0LgoJKGl4ODZfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCglQZXJmb3JtIEJJVF9BTkRfRVhQUiBvbiBzaXpldHlwZSBhcmd1bWVudHMuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF92YV9zdGFydCk6IENhbGwgbWFrZV90cmVlIHdpdGggc2l6ZXR5cGUKCWFuZCBjb252ZXJ0IGl0cyByZXN1bHQgdG8gYSBwb2ludGVyIHR5cGUuICBVc2UgUE9JTlRFUl9QTFVTX0VYUFIKCWZvciB0aGUgcG9pbnRlciBhZGRpdGlvbnMgYW5kIGFsc28gdXNlIHNpemVfaW50IGZvciB0aGUgb2Zmc2V0cy4KCShzaF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFVzZSBQT0lOVEVSX1BMVVNfRVhQUiBmb3IgdGhlIHBvaW50ZXIKCWFkZGl0aW9ucyBhbmQgYWxzbyB1c2Ugc2l6ZV9pbnQgZm9yIHRoZSBvZmZzZXRzLiAgUGVyZm9ybQoJQklUX0FORF9FWFBSIG9uIHNpemV0eXBlIGFyZ3VtZW50cy4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2dpbXBsaWZ5X3ZhX2FyZyk6IFVzZQoJUE9JTlRFUl9QTFVTX0VYUFIgZm9yIHBvaW50ZXJzIGFuZCBjcmVhdGUgdGhlCglCSVRfQU5EX0VYUFIgaW4gc2l6ZXR5cGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92YV9zdGFydCk6IFVzZSBQT0lOVEVSX1BMVVNfRVhQUgoJaW5zdGVhZCBvZiBQTFVTX0VYUFIgZm9yIHBvaW50ZXIgYWRkaXRpb24uCgkocnM2MDAwX3ZhX3N0YXJ0KTogTGlrZXdpc2UuCglBbHNvIHVzZSBzaXpldHlwZSBmb3IgdGhlIG9mZnNldC4KCSogY29uZmlnL3BhL3BhLmMgKHJlbG9jX25lZWRlZCk6IEhhbmRsZSBQT0lOVEVSX1BMVVNfRVhQUgoJYXMgUExVU19FWFBSL01JTlVTX0VYUFIuCgkoaHBwYV9naW1wbGlmeV92YV9hcmdfZXhwcik6IERvbid0IGNyZWF0ZSBNSU5VU19FWFBSIG9yCglQTFVTX0VYUFIgZm9yIHBvaW50ZXJzLCBpbnN0ZWFkIHVzZSBQT0lOVEVSX1BMVVNfRVhQUi4KCURvbid0IHVzZSBCSVRfQU5EX0VYUFIgb24gYSBwb2ludGVyIHR5cGUsIGNvbnZlcnQgdGhlCglleHByZXNzaW9uIHRvIHNpemV0eXBlIGZpcnN0LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfc3RhcnQpOiBVc2UgUE9JTlRFUl9QTFVTX0VYUFIKCWZvciBwb2ludGVycy4KCShtaXBzX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCglEb24ndCBjcmVhdGUgQklUX0FORF9FWFBSIGluIGEgcG9pbnRlciB0eXBlLgoKMjAwNy0wNi0xNSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGk/ODYtKi1kYXJ3aW4qKTogQWRkIHQtY3J0Zm0gYW5kIHQtY3J0cGMuCgkoeDg2XzY0LSotZGFyd2luKik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoQ1JURU5EX1NQRUMpOiBOZXcuIEFkZCBzdXBwb3J0Cglmb3IgYWJvdmUuCgoyMDA3LTA2LTE1ICBNYXR0aGV3IFdpbGNveCA8bWF0dGhld0B3aWwuY3g+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGJlaGF2aW9yIG9mIF9fYXR0cmlidXRlX18oKGFsaWduZWQpKQoJb24gdHlwZWRlZnMuCgoyMDA3LTA2LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcnRsYW5hbC5jIChub3RlX3N0b3Jlcyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCjIwMDctMDYtMTUgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9lbGYuaCAoQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMLAoJTE9DQUxfTEFCRUxfUFJFRklYKTogRGVsZXRlLgoJKiBjb25maWcvYmZpbi9iZmluLmMgKFRBUkdFVF9BU01fSU5URVJOQUxfTEFCRUwpOiBEZWxldGUuCgkoYmZpbl9pbnRlcm5hbF9sYWJlbCk6IERlbGV0ZS4KCjIwMDctMDYtMTUgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBsaWJnY2MyLmMgKENFWFQpOiBXaGVuIGNvbXBpbGluZyBMX211bHRjMyBhbmQgTF9kaXZ0YzMsCglkZWZpbmUgdG8gImwiIGlmIExJQkdDQ19MT05HX0RPVUJMRV9TSVpFID09IDEyOCwKCW90aGVyd2lzZSBkZWZpbmUgdG8gTElCR0NDMl9URl9DRVhULgoJKiBjb25maWcvaTM4Ni9saW51eDY0LmggKExJQkdDQzJfSEFTX1RGX01PREUpOiBOZXcgZGVmaW5lLgoJKExJQkdDQ19URl9DRVhUKTogRGl0dG8uCgkoVEZfU0laRSk6IERpdHRvLgoKMjAwNy0wNi0xNCAgU2VvbmdiYWUgUGFyayAgPHNlb25nYmFlLnBhcmtAZ21haWwuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzIzMzkKCSogZGYtc2Nhbi5jIChkZl91c2VzX3JlY29yZCk6IERvbid0IG1vZGlmeSBmbGFncyBidXQganVzdCBhZGQgdG8KCWl0IGZvciBkZl9yZWZfcmVjb3JkLgoKMjAwNy0wNi0xNCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJKiB0cmVlLW11ZGZsYXAuYzogRml4IHdoaXRlc3BhY2UgaXNzdWVzLgoKMjAwNy0wNi0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKEFTTV9ET1QsIEFTTV9ET1RXLCBBU01fRE9UTCk6IFJlbW92ZS4KCjIwMDctMDYtMTQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKG1vdmRpX3RvX3NzZSk6IFJld3JpdGUgYm9keS4KCShtb3Z2NHNmKTogVXNlIGdjY191bnJlYWNoYWJsZSBpbnN0ZWFkIG9mIGFib3J0LgoKMjAwNy0wNi0xNCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMzIyNjgKCSogY29uZmlnL2kzODYvc2ZwLW1hY2hpbmUuaCAoQ01QdHlwZSk6IE5ldyBkZWZpbmUuCgkobWFjaCBzdHVicyk6IFVzZSBDTVB0eXBlIGluc3RlYWQgb2YgaW50IGFzIGEgcmV0dXJuIHR5cGUuCgoyMDA3LTA2LTE0ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL3NvZnQtZnAvZXFkZjIuYywgY29uZmlnL3NvZnQtZnAvZXFzZjIuYywKCWNvbmZpZy9zb2Z0LWZwL2VxdGYyLmMsIGNvbmZpZy9zb2Z0LWZwL2dlZGYyLmMsCgljb25maWcvc29mdC1mcC9nZXNmMi5jLCBjb25maWcvc29mdC1mcC9nZXRmMi5jLAoJY29uZmlnL3NvZnQtZnAvbGVkZjIuYywgY29uZmlnL3NvZnQtZnAvbGVzZjIuYywKCWNvbmZpZy9zb2Z0LWZwL2xldGYyLmMsIGNvbmZpZy9zb2Z0LWZwL3Vub3JkZGYyLmMsCgljb25maWcvc29mdC1mcC91bm9yZHNmMi5jLCBjb25maWcvc29mdC1mcC91bm9yZHRmMi5jLAoJY29uZmlnL3NvZnQtZnAvc29mdC1mcC5oOiBVcGRhdGUgZnJvbSBnbGliYyBDVlMuCgoyMDA3LTA2LTE0ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vdWNsaW51eC5oIChNRldSQVBfU1BFQyk6IE5ldy4KCjIwMDctMDYtMTQgIFJhc2sgSW5nZW1hbm4gTGFtYmVydHNlbiAgPHJhc2tAc3lnZWh1cy5kaz4KCglQUiB0YXJnZXQvMzIzNDEKCSogY29uZmlnL3Y4NTAvdjg1MC5jOiBJbmNsdWRlIGRhdGFmbG93IGhlYWRlciBmaWxlLgoJKHN1YnN0aXR1dGVfZXBfcmVnaXN0ZXIpOiBGaXggdHlwby4KCjIwMDctMDYtMTQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEZpeCBlYXJsaWVyIGNoZWNraW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDA3LTA2LTE0ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogYWNpbmNsdWRlLm00IChnY2NfQUNfQ0hFQ0tfUFJPR19WRVIpOiBSZW1vdmUuCgkqIGFjbG9jYWwubTQ6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZS5hYzogVXNlIEFDWF9QUk9HX0NDX1dBUk5JTkdfT1BUUywKCUFDWF9QUk9HX0NDX1dBUk5JTkdTX0FSRV9FUlJPUlMsCglBQ1hfUFJPR19DQ19XQVJOSU5HX0FMTU9TVF9QRURBTlRJQywgQUNYX0NIRUNLX1BST0dfVkVSLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmluIChMT09TRV9XQVJOKTogU3Vic3QgbG9vc2Vfd2Fybi4KCgkqIE1ha2VmaWxlLmluIChxdWlja3N0cmFwKTogQnVpbGQgbGliZ2NjIHRvby4KCjIwMDctMDYtMTQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEFkZCAtLWVuYWJsZS1jaGVja2luZz1kZi4gIEV4cGxpY2l0bHkgbWVudGlvbiB0aGF0Cgl0aGUgdmFyaWFibGVzIGFyZSBpbml0aWFsaXplZCBhcyBmb3IgInJlbGVhc2UiLgoJKiBkZi1jb3JlLmM6IFVzZSBpdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDA3LTA2LTE0ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoeHRlbnNhX2V4cGFuZF9ub25sb2NhbF9nb3RvKTogVXNlCgl2YWxpZGF0ZV9yZXBsYWNlX3J0eCBpbnN0ZWFkIG9mIHJlcGxhY2VfcnR4LgoJKHh0ZW5zYV9leHBhbmRfcHJvbG9ndWUpOiBDYWxsIGRmX2luc25fcmVzY2FuIGFmdGVyIHJlcGxhY2VfcnR4LgoKMjAwNy0wNi0xNCAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCAoRFdBUkZfRlJBTUVfUkVHTlVNKTogRGVmaW5lLgoJKERXQVJGMl9VTldJTkRfSU5GTyk6IE92ZXJyaWRlIGRlZmF1bHQgaWYgY29uZmlndXJlZCB3aXRoCglTSkxKIEVIIGRpc2FibGVkLgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaCAoU1RBUlRGSUxFX1NQRUMpOiBBZGQgY3J0YmVnaW4uby4KCShFTkRGSUxFX1NQRUMpOiBBZGQgY3J0ZW5kLm8uCgkqIGNvbmZpZy9pMzg2L21pbmd3MzIuaCAoU1RBUlRGSUxFX1NFQyk6IEFkZCBjcnRiZWdpbi5vLgoJKEVOREZJTEVfU1BFQyk6IEFkZCBjcnRlbmQuby4KCShUQVJHRVRfVVNFX0pDUl9TRUNUSU9OKTogRGVmaW5lLgoJKE1EX1VOV0lORF9TVVBQT1JUKTogRGVmaW5lIGZvciAzMi1iaXQgdGFyZ2V0LgoKCSogY29uZmlnL2kzODYvY3lnbWluZy1jcnRiZWdpbi5jOiBOZXcgZmlsZS4KCSogY29uZmlnL2kzODYvY3lnbWluZy1jcnRlbmQuYzogTmV3IGZpbGUuCgoyMDA3LTA2LTE0ICBQYXNjYWwgT2JyeSBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBjb25maWcvaTM4Ni93MzItdW53aW5kLmg6IE5ldyBmaWxlLgoKMjAwNy0wNi0xMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChQUkVGRVJSRURfU1RBQ0tfQk9VTkRBUlkpOiBEb24ndCBsZXQKCXRoZSB1c2VyIHNldCBhIHZhbHVlIGJlbG93IFNUQUNLX0JPVU5EQVJZLgoKMjAwNy0wNi0xMyAgVGhpZW1vIFNldWZlciAgPHRoc0BuZXR3b3Jrbm8uZGU+CgoJKiBjb25maWcvbWlwcy9saW51eC5oLCBjb25maWcvbWlwcy9saW51eDY0LmggKExJQl9TUEVDKTogQWx3YXlzCglpbXBseSAtbHB0aHJlYWQgZm9yIC1wdGhyZWFkLgoKMjAwNy0wNi0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiYXNpYy1ibG9jay5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWZyZWVfYmFzaWNfYmxvY2tfdmFycy4KCSogY2ZnbGF5b3V0Lmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJaW5zbl9sb2NhdG9yc19pbml0aWFsaXplLgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBlbWl0X2xpbmVfbm90ZS4KCgkqIHRyZWUtc3NhLXByZS5jIChtZXJnZXBoaXRlbXApOiBSZW1vdmUuCgkoaW5pdF9wcmUpOiBEb24ndCB1c2UgbWVyZ2VwaGl0ZW1wLgoKMjAwNy0wNi0xMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IElmIHdlJ3ZlIHNwZWNpZmllZAoJYW4gYXJjaCB0aGVuIGRvbid0IHVzZSBUQVJHRVRfU1VCVEFSR0VUX0lTQV9ERUZBVUxUcy4KCjIwMDctMDYtMTMgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBkZi1zY2FuLmMgKGRmX2dldF9lbnRyeV9ibG9ja19kZWZfc2V0KTogQ2hlY2sgaWYgU1RBVElDX0NIQUlOX1JFR05VTQoJaXMgZGVmaW5lZC4KCjIwMDctMDYtMTMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmggKEVIX1JFVFVSTl9IQU5ETEVSX1JUWCk6IFVzZSBnZW5fZnJhbWVfbWVtLgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChVTlNQRUNfVk9MQVRJTEVfU1RPUkVfRUhfSEFORExFUik6IE5ldyBjb25zdGFudC4KCShlaF9zdG9yZV9oYW5kbGVyKTogTmV3IHBhdHRlcm4uCgkoZWhfcmV0dXJuKTogRW1pdCBpdCBpbnN0ZWFkIG9mIGEgcGxhaW4gbW92ZS4KCjIwMDctMDYtMTMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKQoJW19fYnVpbHRpbl9pbmZxLCBfX2J1aWx0aW5fZmFic3FdOiBEZWZpbmUgdXNpZ24gZGVmX2J1aWx0aW4uCglbX19idWlsdGluX2lhMzJfcnNxcnRwcywgX19idWlsdGluX2lhMzJfcnNxcnRzc106IERlZmluZSB1c2luZwoJZGVmX2J1aWx0aW5fY29uc3QuCgoyMDA3LTA2LTEzICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vYmZpbi5jIChnZW5fb25lX2J1bmRsZSk6IERlbGV0ZSB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLgoJKGZpbmRfbmV4dF9pbnNuX3N0YXJ0LCBmaW5kX2xvYWQpOiBOZXcgZnVuY3Rpb25zLgoJKGJmaW5fcmVvcmcpOiBVc2UgdGhlbSB0byBkZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBwYXJhbGxlbCBpbnNucyBhcmUKCW5vIGxvbmdlciByZXByZXNlbnRlZCBhcyBhIFNFUVVFTkNFLgoKMjAwNy0wNi0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdmVycmlkZV9vcHRpb25zKTogSW5pdGlhbGl6ZQoJZnB1IG1hc2sgY29ycmVjdGx5LgoKMjAwNy0wNi0xMyAgRGF2ZSBLb3JuICA8ZGF2ZS5rb3JuQGFydGltaS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZWF4X2xpdmVfYXRfc3RhcnRfcCk6IFVzZSBkZl9nZXRfbGl2ZV9vdXQuCgoyMDA3LTA2LTEzICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGF1dG8taW5jLWRlYy5jLCBjLWluY3BhdGguYywgY29uZmlnL2M0eC9saWJnY2MuUywKCWNvbmZpZy9zaC9kaXZjb3N0LWFuYWx5c2lzLCBkYmdjbnQuZGVmLCBkZi1jb3JlLmMsCglkZi1wcm9ibGVtcy5jLCBkZi1zY2FuLmMsIGRmLmgsIGRvbWluYW5jZS5jLCBkc2UuYywgcmVnc3RhdC5jLAoJdHJlZS1kYXRhLXJlZi5jLCB0cmVlLXNzYS1sb29wLWltLmMsIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYywKCXRyZWUtdmVjdC10cmFuc2Zvcm0uYzogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcKCWNvbnZlbnRpb25zLgoKMjAwNy0wNi0xMiAgU2VvbmdiYWUgUGFyayAgPHNlb25nYmFlLnBhcmtAZ21haWwuY29tPgoKCSogZGYtc2Nhbi5jIChkZl9nZXRfZXhpdC1ibG9ja191c2Vfc2V0KTogQWx3YXlzIGFkZCB0aGUgc3RhY2sgcG9pbnRlcgoJdG8gdGhlIGV4aXQgYmxvY2sgdXNlIHNldC4KCShkZl9pbnNuX2RlbGV0ZSwgZGZfaW5zbl9yZXNjYW4pOiBGaXhlZCBzcGVsbGluZyBvZiAiZGVmZXJyaW5nIi4gCgkqIGdjc2UuYyAoY3Byb19qdW1wKTogRG9uJ3QgZW1pdCBiYXJyaWVyIGluIGNmZ2xheW91dCBtb2RlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfY2hlY2tfNjQpOiBDaGVjayBkZiAhPSBOVUxMLgoKMjAwNy0wNi0xMiAgU2VvbmdiYWUgUGFyayAgPHNlb25nYmFlLnBhcmtAZ21haWwuY29tPgoKCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBuZXcgb3B0aW9uIC1mZGJnLWNudC1saXN0LgoJKiBkYmdjbnQuYyAoZGJnX2NudF9zZXRfbGltaXRfYnlfbmFtZSk6IFJldHVybiB2YWx1ZQoJdG8gaW5kaWNhdGUgYW4gZXJyb3IuCgkoZGJnX2NudF9wcm9jZXNzX3NpbmdsZV9wYWlyLCBkYmdfY250X2xpc3RfYWxsX2NvdW50ZXJzKToKCU5ldyBmdW5jdGlvbnMuCgkoZGJnX2NudF9wcm9jZXNzX29wdCk6IFByaW50IGFuIGVycm9yIG9uIGEgYmFkIGFyZ3VtZW50LgoJKiBkYmdjbnQuaCAoZGJnX2NudF9saXN0X2FsbF9jb3VudGVycyk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCSogY29tbW9uLm9wdCAoLWZkYmctY250LWxpc3QpOiBOZXcuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZkYmctY250LWxpc3QsLWZkYmctY250PSk6IE5ldy4KCjIwMDctMDYtMTIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChmaW5hbGl6ZV9yZWZfYWxsX3BvaW50ZXJzKTogQ2xlYXIgcHRfYW55dGhpbmcKCWZsYWcgb24gcmVmLWFsbCBwb2ludGVycy4KCjIwMDctMDYtMTIgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzE1NzkKCSogZXhwci5jIChleHBhbmRfZXhwcl9hZGRyX2V4cHJfMSk6IENhbGwgZXhwYW5kX2V4cHIKCWZvciB0aGUgb2Zmc2V0IHdpdGggdGhlIG1vZGlmaWVyIGFzIEVYUEFORF9JTklUSUFMSVpFUgoJaWYgdGhlIG1vZGlmaWVyIGlzIEVYUEFORF9JTklUSUFMSVpFUi4KCShleHBhbmRfZXhwcl9yZWFsXzEgPGNhc2UgSU5URUdFUl9DU1Q+KTogRG9uJ3QgZm9yY2UgdG8KCWEgcmVnaXN0ZXIgaWYgd2UgaGFkIGFuIG92ZXJmbG93LgoKMjAwNy0wNi0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmVhbC5jIChyZWFsX2lzZmluaXRlKTogTmV3LgoJKHJlYWxfc3FydCk6IFVzZSBpdC4KCSogcmVhbC5oIChyZWFsX2lzZmluaXRlKTogTmV3LgoJKiBidWlsdGlucy5jOiBVc2UgaXQuCgoyMDA3LTA2LTEyICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoJICAgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCVBSIGxpYnN0ZGMrKy8yOTI4NgoJKiB0cmVlLmRlZjogQWRkIENIQU5HRV9EWU5BTUlDX1RZUEVfRVhQUi4KCSogdHJlZS5oIChDSEFOR0VfRFlOQU1JQ19UWVBFX05FV19UWVBFKTogRGVmaW5lLgoJKENIQU5HRV9EWU5BTUlDX1RZUEVfTE9DQVRJT04pOiBEZWZpbmUuCgkoREVDTF9OT19UQkFBX1ApOiBEZWZpbmUuCgkoc3RydWN0IHRyZWVfZGVjbF9jb21tb24pOiBBZGQgbm9fdGJhYV9mbGFnIGZpZWxkLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChzdHJ1Y3QgdmFyaWFibGVfaW5mbyk6IEFkZAoJbm9fdGJhYV9wcnVuaW5nIGZpZWxkLgoJKG5ld192YXJfaW5mbyk6IEluaXRpYWxpemUgbm9fdGJhYV9wcnVuaW5nIGZpZWxkLgoJKHVuaWZ5X25vZGVzKTogQ29weSBub190YmFhX3BydW5pbmcgZmllbGQuCgkoZmluZF9mdW5jX2FsaWFzZXMpOiBIYW5kbGUgQ0hBTkdFX0RZTkFNSUNfVFlQRV9FWFBSLgoJKGR1bXBfc29sdXRpb25fZm9yX3Zhcik6IFByaW50IG5vX3RiYWFfcHJ1bmluZyBmbGFnLgoJKHNldF91aWRzX2luX3B0c2V0KTogQWRkIG5vX3RiYWFfcHJ1bmluZyBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsCgljYWxsZXJzLgoJKGNvbXB1dGVfdGJhYV9wcnVuaW5nKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjb21wdXRlX3BvaW50c190b19zZXRzKTogUmVtb3ZlIENIQU5HRV9EWU5BTUlDX1RZUEVfRVhQUiBub2Rlcy4KCUNhbGwgY29tcHV0ZV90YmFhX3BydW5pbmcuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKG1heV9hbGlhc19wKTogVGVzdCBub190YmFhX2ZsYWcgZm9yIHBvaW50ZXJzLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9leHByKTogSGFuZGxlIENIQU5HRV9EWU5BTUlDX1RZUEVfRVhQUi4KCSogZ2ltcGxlLWxvdy5jIChsb3dlcl9zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9leHByX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRjZS5jIChtYXJrX3N0bXRfaWZfb2J2aW91c2x5X25lY2Vzc2FyeSk6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChlc3RpbWF0ZV9udW1faW5zbnNfMSk6IExpa2V3aXNlLgoJKGNvcHlfcmVzdWx0X2RlY2xfdG9fdmFyKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfZGVjbF90b192YXIpOiBDb3B5IERFQ0xfTk9fVEJBQV9QIGZsYWcuCgkqIG9tcC1sb3cuYyAob21wX2NvcHlfZGVjbF8yKTogTGlrZXdpc2UuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IERFQ0xfTk9fVEJBQV9QIGZsYWcuCgkqIGRvYy9jLXRyZWUudGV4aSAoRXhwcmVzc2lvbiB0cmVlcyk6IERvY3VtZW50CglDSEFOR0VfRFlOQU1JQ19UWVBFX0VYUFIuCgoyMDA3LTA2LTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KTogR3VhcmQgKFgtWCkgLT4gMCB0cmFuc2Zvcm1hdGlvbgoJd2l0aCAhSE9OT1JfTkFOUyBhbmQgIUhPTk9SX0lORklOSVRJRVMuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpOiBMaWtld2lzZS4KCjIwMDctMDYtMTIgIFRyaXN0YW4gR2luZ29sZCAgPGdpbmdvbGRAYWRhY29yZS5jb20+CgoJKiBnY292LmM6IENvbW1lbnRzIHVwZGF0ZWQuCgkoc291cmNlX2luZm8pOiBBZGQgZmlsZV90aW1lIGZpZWxkLgoJKHNvdXJjZV9pbmRleCk6IE5ldyB2YXJpYWJsZS4KCShtdXRpcGxlX2ZpbGVzKTogTmV3IHZhcmlhYmxlLgoJKGdlbmVyYXRlX3Jlc3VsdHMpOiBOZXcgZnVuY3Rpb24gZXh0cmFjdGVkIGZyb20gcHJvY2Vzc19maWxlLgoJKHByb2Nlc3NfZmlsZSk6IFNhdmUgYW5kIHJlc3RvcmUgY2hhaW4gb2YgZnVuY3Rpb25zLCBnZW5lcmF0ZQoJcmVzdWx0cyBhbmQgZnJlZSBzdHJ1Y3R1cmVzIG9ubHkgaWYgbm90IG1lcmdpbmcgcmVzdWx0cy4KCShyZWxlYXNlX3N0cnVjdHVyZXMpOiBGaWxlIG5hbWVzIGFyZSBub3cgZnJlZWQgaW4gY3JlYXRlX2ZpbGVfbmFtZXMKCShjcmVhdGVfZmlsZV9uYW1lcyk6IEZyZWUgcHJldmlvdXMgZmlsZSBuYW1lcy4KCShmaW5kX3NvdXJjZSk6IEZpbGUgZGF0ZSBpcyBub3cgcmVhZCBoZXJlIGFuZCBtb2RpZmljYXRpb25zIGluCglzb3VyY2UgZmlsZXMgaXMgY2hlY2tlZCBoZXJlLgoJKHJlYWRfZ3JhcGhfZmlsZSk6IE9ubHkgcmV2ZXJzZSBvcmRlciBvZiBmdW5jdGlvbnMgZm9yIHRoZSBjdXJyZW50CglvYmplY3QgZmlsZS4KCShtYWtlX2djb3ZfZmlsZV9uYW1lKTogRG8gbm90IGdlbmVyYXRlIGxvbmcgbmFtZXMgaWYgaW5wdXRfbmFtZSBpcwoJTlVMTC4KCShvdXRwdXRfbGluZXMpOiBJZiBtZXJnaW5nIHJlc3VsdHMgZG8gbm90IGRpc3BsYXkgZ3JhcGgsIGRhdGEgYW5kCglydW5zIGluZm9ybWF0aW9ucy4KCUNoZWNraW5nIHNvdXJjZSBmaWxlIG1vZGlmaWNhdGlvbiBpcyBkb25lIGluIGZpbmRfc291cmNlLgoKCSogZG9jL2djb3YudGV4aTogQXBwZW5kIGFuIHMgdG8gc291cmNlZmlsZS4KCjIwMDctMDYtMTIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChVTlNQRUNfTk9QKTogTmV3IGNvbnN0YW50LgoJKGZvcmNlZF9ub3ApOiBOZXcgcGF0dGVybi4KCSogY29uZmlnL2JmaW4vYmZpbi5jOiBJbmNsdWRlICJkZi5oIi4KCShhZGRfdG9fcmVnKTogVXNlIGRmX3JlZ3NfZXZlcl9saXZlX3AgaW5zdGVhZCBvZiByZWdzX2V2ZXJfbGl2ZS4KCShiZmluX2Rpc2NvdmVyX2xvb3ApOiBVc2UgZGZfZ2V0X2xpdmVfaW4gaW5zdGVhZCBvZgoJZ2xvYmFsX2xpdmVfYXRfc3RhcnQuCgkoYmZpbl9yZW9yZGVyX2xvb3BzKTogUGFzcyAwIHRvIGNmZ19sYXlvdXRfaW5pdGlhbGl6ZS4gIENhbGwKCWRmX2FuYWx5emUgd2hlbiBkb25lLgoJKGdlbl9vbmVfYnVuZGxlKTogRG9uJ3QgZ2VuZXJhdGUgU0VRVUVOQ0UgaW5zbnMsIGp1c3QgcHV0IG1vZGVzIG9uCgl0aGUgaW5zbnMuICBVc2UgUUltb2RlIGZvciB0aGUgZmluYWwgaW5zbiBpbiBhIGJ1bmRsZS4gIENhbGwKCWRmX2luc25fcmVzY2FuIG9uIGdlbmVyYXRlZCBOT1BzOyB1c2UgZ2VuX2ZvcmNlZF9ub3AgaW5zdGVhZCBvZgoJZ2VuX25vcC4KCShyZW9yZGVyX3Zhcl90cmFja2luZ19ub3Rlcyk6IE5ldyBmdW5jdGlvbi4KCShiZmluX3Jlb3JnKTogUGFzcyBubyBhcmd1bWVudCB0byBzcGxpdF9hbGxfaW5zbnMuICBEb24ndCBjYWxsCgl1cGRhdGVfbGlmZV9pbmZvLiAgQ2FsbCBkZl9hbmFseXplIGFmdGVyIHNjaGVkdWxpbmcgYW5kIGJ1bmRsZQoJZ2VuZXJhdGlvbi4gIENhbGwgcmVvcmRlcl92YXJfdHJhY2tpbmdfbm90ZXMgaWYgZ2VuZXJhdGluZyB0aGVzZQoJbm90ZXMuICBDYWxsIGRmX2ZpbmlzaF9wYXNzIGF0IHRoZSBlbmQuCgoyMDA3LTA2LTEyICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCSogb3B0YWJzLmMgKGRlYnVnX29wdGFiX2xpYmZ1bmNzKTogZml4IGdjY19hc3NlcnQgdG8KCWEgY29tcGFyaXNvbiwgbm90IGFuIGFzc2lnbm1lbnQuCgoyMDA3LTA2LTEyICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdHJlZS1uZXN0ZWQuYyAoY29udmVydF9sb2NhbF9yZWZlcmVuY2UpOiBIYW5kbGUgVklFV19DT05WRVJUX0VYUFIuCglSZXF1ZXN0IHdhbGtpbmcgdGhlIHN1YnRyZWVzIG9ubHksIGxlYXZpbmcgdGhlIGN1cnJlbnQgaXNfbGhzL3ZhbF9vbmx5Cgl1bnRvdWNoZWQuCgkoY29udmVydF9ub25fbG9jYWxfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgoyMDA3LTA2LTEyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1kZXZpY2VzLmRlZiAoNTIyMjEsIDUyMjIzLCA1MjUzKTogTmV3LgoKMjAwNy0wNi0xMiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE1MzUzCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTY1NwoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkIHBhc3NfdHJlZV9pZmNvbWJpbmUuCgkqIHRpbWV2YXIuZGVmOiBBZGQgVFZfVFJFRV9JRkNPTUJJTkUuCgkqIHRyZWUtcGFzcy5oIChwYXNzX3RyZWVfaWZjb21iaW5lKTogRGVjbGFyZS4KCSogdHJlZS1zc2EtaWZjb21iaW5lLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1waGlvcHQuYyAoYmxvY2tzX2luX3BoaW9wdF9vcmRlcik6IEV4cG9ydC4KCSogdHJlZS1mbG93LmggKGJsb2Nrc19pbl9waGlvcHRfb3JkZXIpOiBEZWNsYXJlLgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1jb21tb24pOiBBZGQgdHJlZS1zc2EtaWZjb21iaW5lLm8uCgkodHJlZS1zc2EtaWZjb21iaW5lLm8pOiBOZXcgZGVwZW5kZW5jaWVzLgoKMjAwNy0wNi0xMiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyMjkzCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfaWZfdGhlbl9lbHNlKTogVHJ1bmNhdGUgcmV0dXJuIGZyb20KCW5vbnplcm9fYml0cygpIHRvIGNvcnJlY3QgbW9kZS4KCjIwMDctMDYtMTIgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBmb2xkLWNvbnN0IChmb2xkX2JpbmFyeSkgW1JESVZfRVhQUl06IEFsc28gb3B0aW1pemUgYS9jYnJ0KGIvYykKCWludG8gYSpjYnJ0KGMvYikgaWYgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zIGlzIHNldC4KCjIwMDctMDYtMTEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0Bnb29nbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJlbG9hZDEuby13YXJuKTogUmVtb3ZlLgoKMjAwNy0wNi0xMSAgU2VvbmdiYWUgUGFyayA8c2VvbmdiYWUucGFya0BnbWFpbC5jb20+CgoJKiBjb21iaW5lLmMgKHN1YnN0KTogVXNlIHJlZ19vdmVybGFwX21lbnRpb25lZF9wCglpbnN0ZWFkIG9mIGNvbXBhcmluZyByZWdpc3RlciBudW1iZXJzIGRpcmVjdGx5LgoKMjAwNy0wNi0xMSAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIHJlbG9hZDEuYyAobWFya19ob21lX2xpdmVfMSk6IFVzZSB0aGUgbW9kZSBwYXJhbWV0ZXIuCgoyMDA3LTA2LTExICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCSogZGYtc2Nhbi5jIChkZl9pbnNuX2RlbGV0ZSwgZGZfaW5zbl9yZXNjYW4sIGRmX2luc25fcmVzY2FuX2FsbCwKCWRmX3Byb2Nlc3NfZGVmZXJyZWRfcmVzY2FucywgZGZfbm90ZXNfcmVzY2FuKTogRml4ZWQgc3BlbGxpbmcgb2YKCXdvcmQgImRlZmVycmVkIi4KCSogZGYtY29yZS5jOiBEaXR0by4KCjIwMDctMDYtMTEgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogTWVyZ2UgZGF0YWZsb3ctYnJhbmNoIGludG8gbWFpbmxpbmUgKHNlZSBDaGFuZ2VMb2cuZGF0YWZsb3cpCgoyMDA3LTA2LTExICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoIiptb3Z0Zl9pbnRlcm5hbCk6IFBlbmFsaXplIG1vdmVzIHRvIGFuZAoJZnJvbSBpbnRlZ2VyIHJlZ2lzdGVycy4KCShGUCBtb2RlIHNwbGl0dGVycyk6IEhhbmRsZSBURm1vZGUuCgoyMDA3LTA2LTExICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZmluZF93aGF0X3BfcG9pbnRzX3RvKTogUmV0dXJuIGZhbHNlCglmb3IgcmVmLWFsbCBwb2ludGVycyB0aGF0IHBvaW50LXRvIGFueXRoaW5nLgoKMjAwNy0wNi0xMSAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3V0cHV0X2R3YXJmX2R0cHJlbCwKCVRBUkdFVF9BU01fT1VUUFVUX0RXQVJGX0RUUFJFTCk6IE5ldy4KCjIwMDctMDYtMTEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChtb3ZkaV9pbnNuLCBtb3ZzaV9pbnNuLCBtb3Z2MmhpX2luc24sCgltb3ZoaV9pbnNuLCBtb3ZxaV9pbnNuLCBtb3ZzZl9pbnNuLCBtb3ZkZl9pbnNuKTogRG9uJ3QgYWxsb3cgY29uc3RhbnQKCXRvIG1lbW9yeSBtb3Zlcy4KCjIwMDctMDYtMTEgIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxlc3BpbmRvbGFAZ29vZ2xlLmNvbT4KCgkqIHRyZWUuYyAoc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGVfZm9yKTogTmV3LgoJKHVuc2lnbmVkX3R5cGVfZm9yKTogVXNlIHNpZ25lZF9vcl91bnNpZ25lZF90eXBlX2Zvci4KCShzaWduZWRfdHlwZV9mb3IpOiBVc2Ugc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGVfZm9yLgoJKiB0cmVlLmggKHNpZ25lZF9vcl91bnNpZ25lZF90eXBlX2Zvcik6IE5ldy4KCShnZXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBSZW1vdmUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9uZWdhdGVfZXhwcik6IFVzZSBzaWduZWRfdHlwZV9mb3IgaW5zdGVhZCBvZgoJbGFuZ19ob29rcy50eXBlcy5zaWduZWRfdHlwZQoJKHNpemVfZGlmZm9wKTogTGlrZXdpc2UuCgkoYWxsX29uZXNfbWFza19wKTogTGlrZXdpc2UuCgkoYnVpbGRfcmFuZ2VfY2hlY2spOiBMaWtld2lzZS4KCShmb2xkX2NvbmRfZXhwcl93aXRoX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCShmb2xkX2NvbmRfZXhwcl93aXRoX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCSh1bmV4dGVuZCk6IExpa2V3aXNlLgoJKGV4dHJhY3RfbXVsZGl2XzEpOiBMaWtld2lzZS4KCShmb2xkX3NpbmdsZV9iaXRfdGVzdF9pbnRvX3NpZ25fdGVzdCk6IExpa2V3aXNlLgoJKGZvbGRfYmluYXJ5KTogTGlrZXdpc2UuCgkoZm9sZF90ZXJuYXJ5KTogTGlrZXdpc2UuCgkob3BlcmFuZF9lcXVhbF9mb3JfY29tcGFyaXNvbl9wKTogVXNlIHNpZ25lZF9vcl91bnNpZ25lZF90eXBlX2ZvcgoJaW5zdGVhZCBvZiBnZXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUuCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19TSUdORURfVFlQRSk6IFJlbW92ZS4KCShMQU5HX0hPT0tTX1NJR05FRF9PUl9VTlNJR05FRF9UWVBFKTogUmVtb3ZlLgoJKiBleHByLmMgKHNpZ25lZF9vcl91bnNpZ25lZF90eXBlX2Zvcik6IFVzZQoJc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGVfZm9yIGluc3RlYWQgb2YgZ2V0X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlLgoJKiBsYW5naG9va3MuYyAoZ2V0X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogUmVtb3ZlLgoJKGxoZF9zaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6IFJlbW92ZS4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX3R5cGVzKTogUmVtb3ZlIHNpZ25lZF90eXBlIGFuZAoJc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUuCgkobGhkX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogUmVtb3ZlLgoJKiBleHBtZWQuYyAobWFrZV90cmVlKTogVXNlIHNpZ25lZF90eXBlX2ZvciBpbnN0ZWFkIG9mCglsYW5nX2hvb2tzLnR5cGVzLnNpZ25lZF90eXBlLgoJKiBjLWNvbW1vbi5jIChzYW1lX3NjYWxhcl90eXBlX2lnbm9yaW5nX3NpZ25lZG5lc3MpOiBVc2UKCWNfY29tbW9uX3NpZ25lZF90eXBlIGluc3RlYWQgb2YgbGFuZ19ob29rcy50eXBlcy5zaWduZWRfdHlwZS4KCShjX2NvbW1vbl91bnNpZ25lZF90eXBlKTogTmV3LgoJKGNfY29tbW9uX3NpZ25lZF90eXBlKTogSnVzdCBjYWxsIGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlLgoJKHNob3J0ZW5fY29tcGFyZSk6IFVzZSBjX2NvbW1vbl91bnNpZ25lZF90eXBlIGluc3RlYWQgb2YKCWNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFVzZSBjX2NvbW1vbl91bnNpZ25lZF90eXBlIGluc3RlYWQgb2YKCXVuc2lnbmVkX3R5cGVfZm9yLgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9faW50ZWdlcik6IFVzZSBzaWduZWRfdHlwZV9mb3IgaW5zdGVhZCBvZgoJbGFuZ19ob29rcy50eXBlcy5zaWduZWRfdHlwZS4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1NJR05FRF9PUl9VTlNJR05FRF9UWVBFKTogUmVtb3ZlLgoJKExBTkdfSE9PS19GT1JfVFlQRVNfSU5JVElBTElaRVIpOiBSZW1vdmUgTEFOR19IT09LU19TSUdORURfVFlQRSBhbmQKCUxBTkdfSE9PS1NfU0lHTkVEX09SX1VOU0lHTkVEX1RZUEUuCgkqIGMtZm9ybWF0LmMgKGNoZWNrX2Zvcm1hdF90eXBlcyk6IFVzZSBjX2NvbW1vbl91bnNpZ25lZF90eXBlCglpbnN0ZWFkIG9mIHVuc2lnbmVkX3R5cGVfZm9yLgoJKiBjLWRlY2wuYyAoZ3JvYWtkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCSogYy1jb21tb24uaCAoY19jb21tb25fdW5zaWduZWRfdHlwZSk6IE5ldy4KCjIwMDctMDYtMTEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzMyMjgwCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoInNzZTJfYXNobHRpIiwgInNzZTJfbHNocnRpMyIpOiBNb3ZlIC4uLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgic3NlMl9hc2hsdGkiLCAic3NlMl9sc2hydGkzIik6IC4uLiB0byBoZXJlLgoKMjAwNy0wNi0xMSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMyMjc5CgkqIGZvbGQtY29uc3QgKGZvbGRfYmluYXJ5KSBbUkRJVl9FWFBSXTogT3B0aW1pemUgYS9zcXJ0KGIvYykKCWludG8gYSpzcXJ0KGMvYikgaWYgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zIGlzIHNldC4KCjIwMDctMDYtMTAgIEphbiBTam9kaW4gIDxqYW4uc2pvZGluQGFtZC5jb20+CgkgICAgU2ViYXN0aWFuIFBvcCAgPHNlYnBvcEBnbWFpbC5jb20+CgoJKiBsYW1iZGEtY29kZS5jIChyZW1vdmVfaXYpOiBOZXcuCgkobGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCk6IFVzZSByZW1vdmVfaXYuCgoyMDA3LTA2LTEwICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1kYXRhLXJlZi5jIChkcl9hbmFseXplX2FsaWFzKTogSGFuZGxlIGNhc2Ugc210IGlzIE5VTEwuCgkqIHRyZWUtcHJlZGNvbS5jIChtYXJrX3ZpcnR1YWxfb3BzX2Zvcl9yZW5hbWluZyk6IEV4cG9ydGVkLgoJKiB0cmVlLXNzYS1sb29wLXByZWZldGNoLmM6IEluY2x1ZGUgb3B0YWJzLmguCgkoRkVOQ0VfRk9MTE9XSU5HX01PVk5UKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBtZW1fcmVmKTogQWRkIGluZGVwZW5kZW50X3AgYW5kIHN0b3JlbnRfcCBmaWVsZHMuCgkocmVjb3JkX3JlZik6IEluaXRhbGl6ZSB0aGUgbmV3IGZpZWxkcy4KCShnYXRoZXJfbWVtb3J5X3JlZmVyZW5jZXNfcmVmKTogUmV0dXJuIHRydWUgaWYgdGhlIHJlZmVyZW5jZQoJY291bGQgYmUgYW5hbHlzZWQuCgkoZ2F0aGVyX21lbW9yeV9yZWZlcmVuY2VzKTogQ2hlY2sgd2hldGhlciBhbGwgbWVtb3J5IGFjY2Vzc2VzCglpbiBsb29wIHdlcmUgcmVjb3JkZWQuCgkoc2hvdWxkX2lzc3VlX3ByZWZldGNoX3ApOiBSZXR1cm4gZmFsc2UgZm9yIG5vbnRlbXBvcmFsIHN0b3Jlcy4KCShub250ZW1wb3JhbF9zdG9yZV9wLCBtYXJrX25vbnRlbXBvcmFsX3N0b3JlLCBlbWl0X21mZW5jZV9hZnRlcl9sb29wLAoJbWF5X3VzZV9zdG9yZW50X2luX2xvb3BfcCwgbWFya19ub250ZW1wb3JhbF9zdG9yZXMpOiBOZXcgZnVuY3Rpb25zLgoJKGRldGVybWluZV9sb29wX25lc3RfcmV1c2UpOiBEZXRlY3QgaW5kZXBlbmRlbnQgbWVtb3J5IHJlZmVyZW5jZXMuCgkobG9vcF9wcmVmZXRjaF9hcnJheXMpOiBDYWxsIG1hcmtfbm9udGVtcG9yYWxfc3RvcmVzLgoJKiB0cmVlLWZsb3cuaCAobWFya192aXJ0dWFsX29wc19mb3JfcmVuYW1pbmcpOiBEZWNsYXJlLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5vKTogQWRkIE9QVEFCU19IIGRlcGVuZGVuY3kuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoeDg2X21mZW5jZSk6IERlY2xhcmUuCgkoRkVOQ0VfRk9MTE9XSU5HX01PVk5UKTogUmV0dXJuIHg4Nl9tZmVuY2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoeDg2X21mZW5jZSk6IE5ldyB2YXJpYWJsZS4KCShpeDg2X2luaXRfbW14X3NzZV9idWlsdGlucyk6IEluaXRpYWxpemUgeDg2X21mZW5jZS4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogTWFyayBub250ZW1wb3JhbCBzdG9yZXMuCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgc3RvcmVudF9vcHRhYi4KCSogb3B0YWJzLmggKGVudW0gb3B0YWJfaW5kZXgpOiBBZGQgT1RJX3N0b3JlbnQuCgkoc3RvcmVudF9vcHRhYik6IERlY2xhcmUuCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBBZGQgaW5pdGlhbGl6YXRpb24gZm9yIHN0b3JlbnRfb3B0YWIuCgkqIHRyZWUuaCAoTU9WRV9OT05URU1QT1JBTCk6IE5ldyBtYWNyby4KCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCwgc3RvcmVfZXhwciwgc3RvcmVfY29uc3RydWN0b3JfZmllbGQsCglzdG9yZV9jb25zdHJ1Y3Rvciwgc3RvcmVfZmllbGQsIGV4cGFuZF9leHByX3JlYWxfMSk6IFByb3BhZ2F0ZQoJbm9udGVtcG9yYWxpdHkgb2YgdGhlIGV4cGFuZGVkIHN0b3JlLgoJKGVtaXRfc3RvcmVudF9pbnNuKTogTmV3IGZ1bmN0aW9uLgoJKiBleHByLmggKGV4cGFuZF9hc3NpZ25tZW50LCBzdG9yZV9leHByKTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1fc2V0dXBfcmVnKTogUGFzcyBmYWxzZSBhcyBub250ZW1wb3JhbGl0eQoJdG8gZXhwYW5kX2Fzc2lnbm1lbnQuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9leHByKTogRGl0dG8uCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBQYXNzIGZhbHNlIGFzCglub250ZW1wb3JhbGl0eSB0byBzdG9yZV9leHByLgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHN0b3JlbnR2NHNmLCBzdG9yZW50djJkZiwgc3RvcmVudHYyZGksCglzdG9yZW50c2kpOiBOZXcuCgoyMDA3LTA2LTA5ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHNldF91aWRzX2luX3B0c2V0KTogQWRkIGlzX2RlcmVmJ2QKCXBhcmFtZXRlciwgdXNlIGl0LgoJKGZpbmRfd2hhdF9wX3BvaW50c190byk6IFBhc3MgbmV3IHBhcmFtZXRlciB0byBzZXRfdWlkc19pbl9wdHNldC4KCjIwMDctMDYtMDkgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1kYXRhLXJlZi5jIChkcl9tYXlfYWxpYXNfcCk6IENoZWNrIHRoYXQgZGVjbF9hICE9IGRlY2xfYiwKCWFuZCBhbGxvdyBERUNMX1AgaGVyZS4KCjIwMDctMDYtMDkgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoZm9sbG93X3NzYV9lZGdlX2luX3JocywKCWZvbGxvd19zc2FfZWRnZV9pbl9jb25kaXRpb25fcGhpLCBmb2xsb3dfc3NhX2VkZ2UpOiBLZWVwIG1vcmUgcHJlY2lzZQoJdHJhY2sgb2YgdGhlIHNpemUgb2YgdGhlIGV4cHJlc3Npb24uCgkqIGNmZ2hvb2tzLmMgKG1lcmdlX2Jsb2Nrcyk6IFJlbW92ZSBibG9jayBmcm9tIGxvb3BzIHN0cnVjdHVyZSBvbmx5CglhZnRlciBjYWxsIG9mIHRoZSBtZXJnZV9ibG9ja3MgaG9vay4KCjIwMDctMDYtMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFkZGVkICdkZXByZWNhdGVkX3N0YXRlJyBhcmd1bWVudC4KCShkZXByZWNhdGVkX3N0YXRlKTogUmVtb3ZlZC4KCShzdGFydF9kZWNsKTogVXBkYXRlLgoJKGVudW0gZGVwcmVjYXRlZF9zdGF0ZXMpOiBNb3ZlZCBlYXJsaWVyLgoJKGdyb2t0eXBlbmFtZSk6IFVwZGF0ZS4KCShwdXNoX3Bhcm1fZGVjbCk6IExpa2V3aXNlLgoJKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoyMDA3LTA2LTA5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyMTY5CgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV91bmFyeV9leHByKTogRm9yIE5PUF9FWFBSIGFuZAoJQ09OVkVSVF9FWFBSLCBjaGVjayB3aGV0aGVyIG1pbiBhbmQgbWF4IGJvdGggY29udmVydGVkIHRvIGFuCglvdmVyZmxvdyBpbmZpbml0eSByZXByZXNlbnRhdGlvbi4KCjIwMDctMDYtMDggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiByZWxvYWQxLmMgKGZpeHVwX2Fibm9ybWFsX2VkZ2VzKTogQ2xlYXIgYmIgZmllbGQgZm9yIGluc25zCglub3QgaW5zZXJ0ZWQgb24gdGhlIGVkZ2UuCgoyMDA3LTA2LTA4ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS9saWIxZnVuY3MuYXNtIChfX3VkaXZzaTMpOiBVc2UgaGFyZHdhcmUgZGl2aWRlCglpbnN0cnVjdGlvbnMgaWYgdGhleSBhcmUgc3VwcG9ydGVkLgoJKF9fZGl2c2kzLCBfX3Vtb2RzaTMsIF9fbW9kc2kzKTogTGlrZXdpc2UuCgkoX19hc2hsZGkzLCBfX2FzaHJkaTMsIF9fbHNocmRpMyk6IE5ldy4KCSogY29uZmlnL3h0ZW5zYS90LXh0ZW5zYSAoTElCMUFTTUZVTkNTKTogQWRkIERJbW9kZSBzaGlmdCBmdW5jdGlvbnMuCgoyMDA3LTA2LTA4ICBIYXJzaGEgSmFnYXNpYSA8aGFyc2hhLmphZ2FzaWFAYW1kLmNvbT4KCSAgICBUb255IExpbnRoaWN1bSA8dG9ueS5saW50aGljdW1AYW1kLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogQWRkIGZ2ZWN0LWNvc3QtbW9kZWwgZmxhZy4KCSogY29tbW9uLm9wdCAoZnZlY3QtY29zdC1tb2RlbCk6IE5ldyBmbGFnLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAobmV3X3N0bXRfdmVjX2luZm8pOiBJbml0aWFsaXplIGluc2lkZSBhbmQgb3V0c2lkZQoJY29zdCBmaWVsZHMgaW4gc3RtdF92ZWNfaW5mbyBzdHJ1Y3QgZm9yIFNUTVQuCgkqIHRyZWUtdmVjdG9yaXplci5oIChzdG10X3ZlY19pbmZvKTogRGVmaW5lIGluc2lkZSBhbmQgb3V0c2lkZSBjb3N0CglmaWVsZHMgaW4gc3RtdF92ZWNfaW5mbyBzdHJ1Y3QgYW5kIGFjY2VzcyBmdW5jdGlvbnMgZm9yIHRoZSBzYW1lLgoJKFRBUkdfQ09ORF9CUkFOQ0hfQ09TVCk6IERlZmluZSBjb3N0IG9mIGNvbmRpdGlvbmFsIGJyYW5jaC4KCShUQVJHX1ZFQ19TVE1UX0NPU1QpOiBEZWZpbmUgY29zdCBvZiBhbnkgdmVjdG9yIG9wZXJhdGlvbiwgZXhjbHVkaW5nCglsb2FkLCBzdG9yZSBhbmQgdmVjdG9yIHRvIHNjYWxhciBvcGVyYXRpb24uCgkoVEFSR19WRUNfVE9fU0NBTEFSX0NPU1QpOiBEZWZpbmUgY29zdCBvZiB2ZWN0b3IgdG8gc2NhbGFyIG9wZXJhdGlvbi4KCShUQVJHX1ZFQ19MT0FEX0NPU1QpOiBEZWZpbmUgY29zdCBvZiBhbGlnbmVkIHZlY3RvciBsb2FkLgoJKFRBUkdfVkVDX1VOQUxJR05FRF9MT0FEX0NPU1QpOiBEZWZpbmUgY29zdCBvZiBtaXNhc2xpZ25lZCB2ZWN0b3IgbG9hZC4KCShUQVJHX1ZFQ19TVE9SRV9DT1NUKTogRGVmaW5lIGNvc3Qgb2YgdmVjdG9yIHN0b3JlLgoJKHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMpOiBEZWZpbmUgbmV3IGZ1bmN0aW9uLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyk6IEFkZCBhIGNvbXBpbGUtdGltZQoJY2hlY2sgdG8gZXZhbHVhdGUgaWYgbG9vcCBpdGVyYXRpb25zIGFyZSBsZXNzIHRoYW4gbWluaW11bSBwcm9maXRhYmxlCglpdGVyYXRpb25zIGRldGVybWluZWQgYnkgY29zdCBtb2RlbCBvciBtaW5pbXVtIHZlY3QgbG9vcCBib3VuZCBkZWZpbmVkCglieSB1c2VyLCB3aGljaGV2ZXIgaXMgbW9yZSBjb25zZXJ2YXRpdmUuCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9kb19wZWVsaW5nX2Zvcl9sb29wX2JvdW5kKTogQWRkIGEKCXJ1bi10aW1lIGNoZWNrIHRvIGV2YWx1YXRlIGlmIGxvb3AgaXRlcmF0aW9ucyBhcmUgbGVzcyB0aGFuIG1pbmltdW0KCXByb2ZpdGFibGUgaXRlcmF0aW9ucyBkZXRlcm1pbmVkIGJ5IGNvc3QgbW9kZWwgb3IgbWluaW11bSB2ZWN0IGxvb3AKCWJvdW5kIGRlZmluZWQgYnkgdXNlciwgd2hpY2hldmVyIGlzIG1vcmUgY29uc2VydmF0aXZlLgoJKHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcmF0aW9ucyk6IE5ldyBmdW5jdGlvbiB0byBlc3RpbWF0ZQoJbWltaW1pbXVtIGl0ZXJhcnRpb25zIHJlcXVpcmVkIGZvciB2ZWN0b3IgdmVyc2lvbiBvZiBsb29wIHRvIGJlCglwcm9maXRhYmxlIG92ZXIgc2NhbGFyIHZlcnNpb24uCgkodmVjdF9tb2RlbF9yZWR1Y3Rpb25fY29zdCk6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X21vZGVsX2luZHVjdGlvbl9jb3N0KTogTmV3IGZ1bmN0aW9uLgoJKHZlY3RfbW9kZWxfc2ltcGxlX2Nvc3QpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9jb3N0X3N0cmlkZWRfZ3JvdXBfc2l6ZSk6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X21vZGVsX3N0b3JlX2Nvc3QpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9tb2RlbF9sb2FkX2Nvc3QpOiBOZXcgZnVuY3Rpb24uCgkodmVjdG9yaXphYmxlX3JlZHVjdGlvbik6IENhbGwgdmVjdF9tb2RlbF9yZWR1Y3Rpb25fY29zdCBkdXJpbmcKCWFuYWx5c2lzIHBoYXNlLgoJKHZlY3Rvcml6YWJsZV9pbmR1Y3Rpb24pOiBDYWxsIHZlY3RfbW9kZWxfaW5kdWN0aW9uX2Nvc3QgZHVyaW5nCglhbmFseXNpcyBwaGFzZS4KCSh2ZWN0b3JpemFibGVfbG9hZCk6IENhbGwgdmVjdF9tb2RlbF9sb2FkX2Nvc3QgZHVyaW5nIGFuYWx5c2lzIHBoYXNlLgoJKHZlY3Rvcml6YWJsZV9zdG9yZSk6IENhbGwgdmVjdF9tb2RlbF9zdG9yZV9jb3N0IGR1cmluZyBhbmFseXNpcyBwaGFzZS4KCSh2ZWN0b3JpemFibGVfY2FsbCwgdmVjdG9yaXphYmxlX2Fzc2lnbm1lbnQsIHZlY3Rvcml6YWJsZV9vcGVyYXRpb24sCgl2ZWN0b3JpemFibGVfcHJvbW90aW9uLCB2ZWN0b3JpemFibGVfZGVtb3Rpb24pOiBDYWxsCgl2ZWN0X21vZGVsX3NpbXBsZV9jb3N0IGR1cmluZyBhbmFseXNpcyBwaGFzZS4KCjIwMDctMDYtMDggIFNpbW9uIEJhbGR3aW4gIDxzaW1vbmJAZ29vZ2xlLmNvbT4KCgkqIHJlZy1zdGFjay5jIChnZXRfdHJ1ZV9yZWcpOiBSZWFkYWJpbGl0eSBjaGFuZ2UuICBNb3ZlZCBkZWZhdWx0IGNhc2UKCWxhYmVsIGludG8gZGlyZWN0IHN3aXRjaCBzdGF0ZW1lbnQgc2NvcGUuCgoyMDA3LTA2LTA4ICBTaW1vbiBCYWxkd2luICA8c2ltb25iQGdvb2dsZS5jb20+CgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKHZhcl9hbm4pOiBSZXBsYWNlZCBlcnJvbmVvdXMgJz0nIGFzc2lnbm1lbnQKCWluIGdjY19hc3NlcnQoKSB3aXRoICc9PScgY29tcGFyaXNvbi4KCjIwMDctMDYtMDggIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBNZXJnZSBUQVJHRVRfU1NFNF8yIGFuZAoJVEFSR0VUX0FCTSBoYW5kbGluZyBvZiB4ODZfcG9wY250IHZhcmlhYmxlLgoKMjAwNy0wNi0wOCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoWDg2IEJ1aWx0LWluIEZ1bmN0aW9ucyk6IERvY3VtZW50IF9fYnVpbHRpbl9mYWJzcSwKCV9fYnVpbHRpbl9jb3B5c2lnbnEgYW5kIF9fYnVpbHRpbl9pbmZxIGJ1aWx0LWluIGZ1bmN0aW9ucy4KCjIwMDctMDYtMDggIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKFg4NiBCdWlsdC1pbiBGdW5jdGlvbnMpOiBBZGQgbWlzc2luZyBgQGl0ZW0ncyBpbgoJU1NFNC4yIHNlY3Rpb24uICBDb3JyZWN0IGJ1aWx0LWluIGZ1bmN0aW9uIG5hbWVzIGluIFNTRTRBIHNlY3Rpb24uCgoyMDA3LTA2LTA4ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMyMjQzCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdG9yaXphYmxlX3R5cGVfcHJvbW90aW9uKTogTW92ZSBjaGVjawoJZm9yIG5jb3BpZXMgYWZ0ZXIgcmF0aW8gY2hlY2sgYmV0d2VlbiBudW5pdHNfb3V0IGFuZCBudW5pdHNfaW4uCgkodmVjdG9yaXphYmxlX3R5cGVfZGVtb3Rpb24pOiBSZW1vdmUgc2luZ2xlLXVzZSB2YXJpYWJsZSAic2NhbGFyX3R5cGUiLgoKMjAwNy0wNi0wOCAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjIyNAoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2RldGVybWluZV92ZWN0b3JpemF0aW9uX2ZhY3Rvcik6IEZhaWwKCXZlY3Rvcml6YXRpb24gdXBvbiBhIG5vbiBHSU1QTEVfTU9ESUZZX1NUTVQuCgoyMDA3LTA2LTA4ICBDaHJpc3RpYW4gQnJ1ZWwgIDxjaHJpc3RpYW4uYnJ1ZWxAc3QuY29tPgoKCVBSIHRhcmdldC8yOTk1MwoJKiBjb25maWcvc2gvc2gubWQgKGRvbG9vcF9lbmQpOiBOZXcgcGF0dGVybiBhbmQgc3BsaXR0ZXIuCgkqIGxvb3AtaXYuYyAoc2ltcGxlX3Joc19wKTogQ2hlY2sgZm9yIGhhcmR3YXJlIHJlZ2lzdGVycy4KCjIwMDctMDYtMDggIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgbWlkZGxlLWVuZC8zMjIwOQoJKiBkb21pbmFuY2UuYyAoZGVidWdfZG9taW5hbmNlX3RyZWUsIGRlYnVnX2RvbWluYW5jZV90cmVlXzEpOiBOZXcKCWZ1bmN0aW9ucy4KCSh2ZXJpZnlfZG9taW5hdG9ycyk6IERvIG5vdCBjaGFuZ2UgZG9taW5hbmNlIHRyZWUuCgoyMDA3LTA2LTA4ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9jb25zdHJhaW50cy5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9zaC9zaC5jOiBJbmNsdWRlIHRtLWNvbnN0cnMuaC4KCShyZWdfY2xhc3NfZnJvbV9sZXR0ZXIpOiBSZW1vdmUuCgkocHJlcGFyZV9jYnJhbmNoX29wZXJhbmRzKTogVXNlIHNhdGlzZmllc19jb25zdHJhaW50XyoKCWZ1bmN0aW9uIGluc3RlYWQgb2YgbWFjcm8uCgkoYW5kY29zdHMsIGJyb2tlbl9tb3ZlLCBzaF9zZWNvbmRhcnlfcmVsb2FkKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9wcmVkaWNhdGVzLm1kICh0cmFwcGluZ190YXJnZXRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGFuZF9vcGVyYW5kLCBhcml0aF9vcGVyYW5kLCBhcml0aF9yZWdfb3JfMF9vcGVyYW5kLAoJY21wX29wZXJhbmQsIGxvZ2ljYWxfb3BlcmFuZCwgdGFyZ2V0X29wZXJhbmQsCgl1YV9hZGRyZXNzX29wZXJhbmQsIHVhX29mZnNldCwgeG9yX29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kOiBJbmNsdWRlIGNvbnN0cmFpbnRzLm1kLgoJKCptb3ZzaWNjX3RfZmFsc2UpOiBVc2Ugc2F0aXNmaWVzX2NvbnN0cmFpbnRfKiBmdW5jdGlvbgoJaW5zdGVhZCBvZiBtYWNyby4KCSgqbW92c2ljY190X3RydWUsIGFzaGxzaTNfc3RkLCBhc2hsaGkzX2ssIGxzaHJzaTNfbSwKCWxzaHJzaTNfaywgbW92c2lfY29uc3RfMTZiaXQrMiwgKm1vdmhpX21lZGlhKzEsCgltb3ZkaV9jb25zdF8xNmJpdCsxLCBiZXEsIGJuZSwgKnB0Yik6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guaCAocmVnX2NsYXNzX2Zyb21fbGV0dGVyKTogUmVtb3ZlIHByb3RvdHlwZS4KCShPVkVSUklERV9PUFRJT05TKTogRG9uJ3QgbW9kaWZ5IHJlZ19jbGFzc19mcm9tX2xldHRlci4KCShSRUdfQ0xBU1NfRlJPTV9DT05TVFJBSU5UKTogUmVtb3ZlLgoJKENPTlNUUkFJTlRfTEVOLCBDT05TVF9PS19GT1JfSTIwLCBDT05TVF9PS19GT1JfSSwKCUNPTlNUX09LX0ZPUl9KLCBDT05TVF9PS19GT1JfSzE2LCBDT05TVF9PS19GT1JfSywKCUNPTlNUX09LX0ZPUl9QMjcsIENPTlNUX09LX0ZPUl9QLCBDT05TVF9PS19GT1JfTSwKCUNPTlNUX09LX0ZPUl9OLCBDT05TVF9PS19GT1JfQ09OU1RSQUlOVF9QLAoJQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCk6IExpa2V3aXNlLgoJKFNFQ09OREFSWV9JTk9VVF9SRUxPQURfQ0xBU1MpOiBVc2Ugc2F0aXNmaWVzX2NvbnN0cmFpbnRfKgoJZnVuY3Rpb24gaW5zdGVhZCBvZiBtYWNyby4KCShTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTKTogTGlrZXdpc2UuCgkoRVhUUkFfQ09OU1RSQUlOVF9RLCBFWFRSQV9DT05TVFJBSU5UX0EsCglFWFRSQV9DT05TVFJBSU5UX0JzYywgRVhUUkFfQ09OU1RSQUlOVF9CLAoJRVhUUkFfQ09OU1RSQUlOVF9Dc3MsIEVYVFJBX0NPTlNUUkFJTlRfQ3N1KTogUmVtb3ZlLgoJKElTX1BDX1JFTEFUSVZFX0xPQURfQUREUl9QKTogTmV3IG1hY3JvLgoJKElTX0xJVEVSQUxfT1JfU1lNQk9MSUNfUzE2X1ApOiBMaWtld2lzZS4KCShJU19MSVRFUkFMX09SX1NZTUJPTElDX1UxNl9QKTogTGlrZXdpc2UuCgkoSVNfTk9OX0VYUExJQ0lUX0NPTlNUQU5UX1ApOiBMaWtld2lzZS4KCShFWFRSQV9DT05TVFJBSU5UX0NzeSwgRVhUUkFfQ09OU1RSQUlOVF9aLCBFWFRSQV9DT05TVFJBSU5UX1csCglFWFRSQV9DT05TVFJBSU5UX0NwZywgRVhUUkFfQ09OU1RSQUlOVF9DLAoJRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQsIEVYVFJBX0NPTlNUUkFJTlRfU3IwLAoJRVhUUkFfQ09OU1RSQUlOVF9TdWEsIEVYVFJBX0NPTlNUUkFJTlRfUywKCUVYVFJBX0NPTlNUUkFJTlRfU1RSKTogTGlrZXdpc2UuCgkoR09fSUZfTEVHSVRJTUFURV9JTkRFWCk6IEZpeCBpbmRlbnRhdGlvbi4KCjIwMDctMDYtMDcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2kzODYvZGFyd2luLmggKFNUQUNLX0JPVU5EQVJZKTogRGVmaW5lLgoKMjAwNy0wNi0wNyAgU2ltb24gTWFydGluICA8c2ltYXJ0aW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8zMDc1OQoJKiBjLWNvbW1vbi5oIChmbGFnX2NwcDB4KTogUmVwbGFjZWQgYnkuLi4KCShjeHhfZGlhbGVjdCk6IC4uLiB0aGlzIG5ldyB2YXJpYWJsZSBzcGVjaWZ5aW5nIHRoZSBDKysgZGlhbGVjdCB0aGF0CglpcyB1c2VkLgoJKiBjLWNvbW1vbi5jIChmbGFnX2NwcDB4KTogUmVtb3ZlZC4KCShjeHhfZGlhbGVjdCk6IERlZmluZWQuCgkqIGMtY3BwYnVpbHRpbi5jIChjX2NwcF9idWlsdGlucyk6IGZsYWdfY3BwMHggcmV3cml0dGVuIGluIHRlcm1zIG9mCgljeHhfZGlhbGVjdC4KCSogYy1vcHRzLmMgKGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyk6IExpa2V3aXNlLgoJKHNldF9zdGRfY3h4OTgpOiBTZXQgY3h4X2RpYWxlY3QgdG8gY3h4OTguCgkoc2V0X3N0ZF9jeHgweCk6IFNldCBjeHhfZGlhbGVjdCB0byBjeHgweC4KCjIwMDctMDYtMDcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoJICAgIEh1aS1NYXkgQ2hhbmcgPGhtLmNoYW5nQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoRGFyd2luIE9wdGlvbnMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IKCS1tbWFjb3N4LXZlcnNpb24tbWluLgoJKiBjb25maWcuZ2NjICgqLSotZGFyd2luKik6IFNldCBleHRyYV9nY2Nfb2Jqcy4KCSogY29uZmlnL2Rhcndpbi1kcml2ZXIuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoR0NDX0RSSVZFUl9IT1NUX0lOSVRJQUxJWkFUSU9OKTogTmV3LgoJKiBjb25maWcvdC1kYXJ3aW4gKGRhcndpbi1kcml2ZXIubyk6IE5ldyBydWxlLgoKCSogY29uZmlnL2Rhcndpbi1jLmMgKHZlcnNpb25fYXNfbWFjcm8pOiBJZ25vcmUgbG93IGRpZ2l0LgoKMjAwNy0wNi0wNyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHN0YW5kYXJkIHNzZSBjb25zdGFudCBzcGxpdHRlcik6IEhhbmRsZSBURm1vZGUuCgkobmVndGYyLCBhYnN0ZjIsICphYnNuZWd0ZjJfc3NlKTogTmV3IGluc24gcGF0dGVybnMuCgkoQ1NHTk1PREUpOiBOZXcgbW9kZSBtYWNyby4KCShDU0dOVk1PREUpOiBOZXcgbW9kZSBhdHRyaWJ1dGUuCgkoY29weXNpZ248bW9kZT4zKTogUmVuYW1lIGZyb20gY29weXNpbmdzZjMgYW5kIGNvcHlzaWduZGYzLiAgTWFjcm9pemUKCWV4cGFuZGVyIHVzaW5nIENTR05NT0RFIG1vZGUgbWFjcm8uICBIYW5kbGUgVEZtb2RlLgoJKGNvcHlzaWduPG1vZGU+M19jb25zdCk6IFJlbmFtZSBmcm9tIGNvcHlzaWduc2YzX2NvbnN0IGFuZAoJY29weXNpZ25kZjNfY29uc3QuICBNYWNyb2l6ZSBwYXR0ZXJuIHVzaW5nIENTR05NT0RFIG1vZGUgbWFjcm8uCglIYW5kbGUgVEZtb2RlLgoJKGNvcHlzaWduPG1vZGU+M192YXIpOiBSZW5hbWUgZnJvbSBjb3B5c2lnbnNmM192YXIgYW5kCgljb3B5c2lnbmRmM192YXIuICBNYWNyb2l6ZSBwYXR0ZXJuIHVzaW5nIENTR05NT0RFIG1vZGUgbWFjcm8uCglIYW5kbGUgVEZtb2RlLgoJKGNvcHlzaWduPG1vZGU+M192YXIgc3BsaXR0ZXIpOiBNYWNyb2l6ZSBwYXR0ZXJuIHVzaW5nIENTR05NT0RFCgltb2RlIG1hY3JvLiAgSGFuZGxlIFRGbW9kZS4KCSogY29uZmlnL2kzODYvc3NlLm1kIChhbmR0ZjMsICphbmR0ZjMsICpuYW5kdGYzKTogTmV3IGluc24gcGF0dGVybnMuCgkoaW9ydGYzLCAqaW9ydGYzKTogRGl0dG8uCgkoeG9ydGYzLCAqeG9ydGYzKTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9idWlsZF9zaWduYml0X21hc2spOiBDcmVhdGUgc2NhbGFyCglURm1vZGUgYW5kIFRJbW9kZSBtYXNrcy4KCShpeDg2X2V4cGFuZF9jb3B5c2lnbik6IEV4cGFuZCBURm1vZGUgY29weXNpZ24gaW5zbi4KCShJWDg2X0JVSUxUSU5fSU5GUSk6IE5ldy4KCShJWDg2X0JVSUxUSU5fRkFCU1EpOiBEaXR0by4KCShJWDg2X0JVSUxUSU5fQ09QWVNJR05RKTogRGl0dG8uCgkoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpIFtfX2J1aWx0aW5faW5mcV06IE5ldyBidWlsdGluIGRlZmluaXRpb24uCglbX19idWlsdGluX2ZhYnNxXTogRGl0dG8uCglbX19idWlsdGluX2NvcHlzaWducV06IERpdHRvLgoJKGl4ODZfZXhwYW5kX2J1aWx0aW4pIFtJWDg2X0JVSUxUSU5fSU5GUV06IEV4cGFuZCBidWlsdGluLgoJW0lYODZfQlVJTFRJTl9GQUJTUV06IEV4cGFuZCBidWlsdGluIHVzaW5nIGl4ODZfZXhwYW5kX3Vub3BfYnVpbHRpbigpLgoJW0lYODZfQlVJTFRJTl9DT1BZU0lHTlFdOiBFeHBhbmQgYnVpbHRpbiB1c2luZwoJaXg4Nl9leHBhbmRfYmlub3BfYnVpbHRpbigpLgoKMjAwNy0wNi0wNyAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvbGliMWZ1bmNzLmFzbTogQ2xlYW4gdXAgd2hpdGVzcGFjZS4KCjIwMDctMDYtMDcgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIHRhcmdldC8zMTg1MAoJKiBydGwuaCAocHVzaF90b19zZXF1ZW5jZTIpOiBOZXcuCgkqIGVtaXQtcnRsLmMgKHB1c2hfdG9fc2VxdWVuY2UyKTogTmV3LgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybV9kYXRhX2FsbCk6IEFkZCBuZXcgZmllbGRzLgoJKGFzc2lnbl9wYXJtX3NldHVwX2Jsb2NrKTogQ2FsbCBwdXNoX3RvX3NlcXVlbmNlMiBpbnN0ZWFkIG9mCglwdXNoX3RvX3NlcXVlbmNlLgoJKGFzc2lnbl9wYXJtX3NldHVwX3JlZyk6IERpdHRvLgoJKGFzc2lnbl9wYXJtX3NldHVwX3N0YWNrKTogRGl0dG8uCgkoYXNzaWduX3Bhcm1zX3Vuc3BsaXRfY29tcGxleCk6IERpdHRvLgoJKGFzc2lnbl9wYXJtcyk6IENoYW5nZSBmaWVsZCBuYW1lLgoKMjAwNy0wNi0wNyAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjIyMAoJKiB0cmVlLXByZWRjb20uYyAoZWxpbWluYXRlX3RlbXBfY29waWVzKTogSGFuZGxlIHRoZSBjYXNlIHRoYXQgbG9vcAoJcGhpIG5vZGUgaXMgcmVhY2hlZCBiZWZvcmUgZGVmaW5pbmcgc3RhdGVtZW50LgoKMjAwNy0wNi0wNiAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgdHJlZS1vcHQvMzIyMzEKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0b3JpemFibGVfY2FsbCk6IENhbGwgdXBkYXRlX3N0bXQKCWFmdGVyIGNoYW5naW5nIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgdGhlIGFzc2lnbm1lbnQuCgoyMDA3LTA2LTA2ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCSogY29uZmlnLmdjYyAoaT84Ni0qLWRhcndpbiopOiBSZW1vdmUgYXJjaCBwYXJhbWV0ZXIuCgkoeDg2XzY0LSotZGFyd2luKik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoVEFSR0VUX1NVQlRBUkdFVDMyX0lTQV9ERUZBVUxUKTogRGVmaW5lLgoJKFRBUkdFVF9TVUJUQVJHRVQ2NF9JU0FfREVGQVVMVCk6IERpdHRvLgoKMjAwNy0wNi0wNiAgVGhvbWFzIE5ldW1hbm4gIDx0bmV1bWFubkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiB0cmVlLXNzYS1hbGlhcy13YXJuaW5ncy5jIChtYXliZV9hZGRfbWF0Y2gpOiBDYXN0IGFjY29yZGluZyB0byB0aGUKCWNvZGluZyBjb252ZW50aW9ucy4KCShhZGRfa2V5KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLmMgKGluaXRfdHJlZV9zc2EpOiBVc2UgdHlwZSBzYWZlIG1lbW9yeSBtYWNyb3MuCgkqIHRyZWUtc3NhLWNjcC5jIChjY3BfZm9sZF9idWlsdGluKTogQXZvaWQgdXNpbmcgQysrIGtleXdvcmRzIGFzCgl2YXJpYWJsZSBuYW1lcy4KCSogdHJlZS1zc2EtY29hbGVzY2UuYyAoZmluZF9jb2FsZXNjZV9wYWlyKTogVXNlIHR5cGUgc2FmZSBtZW1vcnkKCW1hY3Jvcy4KCShhZGRfY29zdF9vbmVfY29hbGVzY2UpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY29weS5jIChtZXJnZV9hbGlhc19pbmZvKTogQXZvaWQgdXNpbmcgQysrIGtleXdvcmRzIGFzCgl2YXJpYWJsZSBuYW1lcy4gUmVuYW1lIG9yaWcgdG8gb3JpZ19uYW1lIGZvciBjb25zaXN0ZW5jeS4KCSogdHJlZS1zc2EtZG9tLmMgKGRvbV90aHJlYWRfYWNyb3NzX2VkZ2UpOiBDYXN0IGFjY29yZGluZyB0byB0aGUKCWNvZGluZyBjb252ZW50aW9ucy4KCShjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzKTogQXZvaWQgdXNpbmcgQysrIGtleXdvcmRzIGFzIHZhcmlhYmxlCgluYW1lcy4KCShyZWNvcmRfZXF1aXZhbGVuY2VzX2Zyb21fc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kc2UuYyAoZHNlX2luaXRpYWxpemVfYmxvY2tfbG9jYWxfZGF0YSk6IENhc3QgYWNjb3JkaW5nIHRvCgl0aGUgY29kaW5nIGNvbnZlbnRpb25zLgoJKG1lbW9yeV9zc2FfbmFtZV9zYW1lKTogTGlrZXdpc2UuCgkoZHNlX29wdGltaXplX3N0bXQpOiBMaWtld2lzZS4KCShkc2VfcmVjb3JkX3BoaXMpOiBMaWtld2lzZS4KCShkc2VfZmluYWxpemVfYmxvY2spOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChvdXRlcm1vc3RfaW52YXJpYW50X2xvb3BfZXhwcik6IEF2b2lkIHVzaW5nIEMrKwoJa2V5d29yZHMgYXMgdmFyaWFibGUgbmFtZXMuCgkobWF5X21vdmVfdGlsbCk6IENhc3QgYWNjb3JkaW5nIHRvIHRoZSBjb2RpbmcgY29udmVudGlvbnMuCgkoZm9yY2VfbW92ZV90aWxsX2V4cHIpOiBBdm9pZCB1c2luZyBDKysga2V5d29yZHMgYXMgdmFyaWFibGUgbmFtZXMuCgkoZm9yY2VfbW92ZV90aWxsKTogQ2FzdCBhY2NvcmRpbmcgdG8gdGhlIGNvZGluZyBjb252ZW50aW9ucy4KCShtZW1yZWZfaGFzaCk6IExpa2V3aXNlLgoJKG1lbXJlZl9lcSk6IExpa2V3aXNlLgoJKGdhdGhlcl9tZW1fcmVmc19zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGNvbnRhaW5zX2Fibm9ybWFsX3NzYV9uYW1lX3ApOiBBdm9pZAoJdXNpbmcgQysrIGtleXdvcmRzIGFzIHZhcmlhYmxlIG5hbWVzLgoJKGlkeF9maW5kX3N0ZXApOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIGNvbnZlbnRpb25zLgoJKGlkeF9yZWNvcmRfdXNlKTogTGlrZXdpc2UuCgkoZmluZF9kZXBlbmRzKTogTGlrZXdpc2UuCgkocHJlcGFyZV9kZWNsX3J0bCk6IExpa2V3aXNlLgoJKG1iY19lbnRyeV9oYXNoKTogTGlrZXdpc2UuCgkobWJjX2VudHJ5X2VxKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAoU1dBUCk6IFVzZSB0aGUgY29ycmVjdCB0aGUgdHlwZSBmb3IgdG1wLgoJKHNpbXBsaWZ5X3JlcGxhY2VfdHJlZSk6IEF2b2lkIHVzaW5nIEMrKyBrZXl3b3JkcyBhcyB2YXJpYWJsZSBuYW1lcy4KCShpZHhfaW5mZXJfbG9vcF9ib3VuZHMpOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIGNvbnZlbnRpb25zLgoJKiB0cmVlLXNzYS1sb29wLXByZWZldGNoLmMgKGlkeF9hbmFseXplX3JlZik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1tYXRoLW9wdHMuYyAob2NjX25ldyApOiBMaWt3aXNlLgoJKiB0cmVlLXNzYW5hbWVzLmMgKGR1cGxpY2F0ZV9zc2FfbmFtZV9wdHJfaW5mbyk6IFVzZSB0eXBlIHNhZmUgbWVtb3J5CgltYWNyb3MuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF9kZWZfb3ApOiBBdm9pZCB1c2luZyBDKysga2V5d29yZHMgYXMKCXZhcmlhYmxlIG5hbWVzLgoJKGFkZF91c2Vfb3ApOiBMaWtld2lzZS4KCShhZGRfdm9wKTogTGlrZXdpc2UuCgkoYWRkX3Z1c2Vfb3ApOiBMaWtld2lzZS4KCShhZGRfdmRlZl9vcCk6IExpa2V3aXNlLgoJKGdldF9leHByX29wZXJhbmRzKTogTGlrZXdpc2UuCgkocHVzaF9zdG10X2NoYW5nZXMpOiBVc2UgdHlwZSBzYWZlIG1lbW9yeSBtYWNyb3MuCgkqIHRyZWUtc3NhLXBoaW9wdC5jIChyZXBsYWNlX3BoaV9lZGdlX3dpdGhfdmFyaWFibGUpOiBBdm9pZCB1c2luZyBDKysKCWtleXdvcmRzIGFzIHZhcmlhYmxlIG5hbWVzLgoJKGNvbmRpdGlvbmFsX3JlcGxhY2VtZW50KTogTGlrZXdpc2UuCgkobWlubWF4X3JlcGxhY2VtZW50KTogTGlrZXdpc2UuCgkoYWJzX3JlcGxhY2VtZW50KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXByZS5jIChjcmVhdGVfZXhwcmVzc2lvbl9ieV9waWVjZXMpOiBDYXN0IGFjY29yZGluZyB0byB0aGUKCWNvZGluZyBjb252ZW50aW9ucy4KCShpbnNlcnRfZmFrZV9zdG9yZXMpOiBBdm9pZCB1c2luZyBDKysga2V5d29yZHMgYXMgdmFyaWFibGUgbmFtZXMuCgkqIHRyZWUtc3NhLXJlYXNzb2MuYyAoYWRkX3RvX29wc192ZWMpOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nCgljb252ZW50aW9ucy4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoaGVhcHZhcl9sb29rdXApOiBMaWtld2lzZS4KCShoZWFwdmFyX2luc2VydCk6IFVzZSB0eXBlIHNhZmUgbWVtb3J5IG1hY3Jvcy4KCShuZXdfdmFyX2luZm8pOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIGNvbnZlbnRpb25zLgoJKG5ld19jb25zdHJhaW50KTogTGlrZXdpc2UuCgkocmVtb3ZlX3ByZWRzX2FuZF9mYWtlX3N1Y2NzKTogVXNlIHR5cGUgc2FmZSBtZW1vcnkgbWFjcm9zLgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAodGhyZWFkX2Jsb2NrKTogQ2FzdCBhY2NvcmRpbmcgdG8gdGhlIGNvZGluZwoJY29udmVudGlvbnMuCgkodGhyZWFkX3NpbmdsZV9lZGdlKTogTGlrZXdpc2UuCgkodGhyZWFkX3Rocm91Z2hfbG9vcF9oZWFkZXIpOiBMaWtld2lzZS4KCjIwMDctMDYtMDYgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBNb3ZlIGhhbmRsaW5nCglvZiBUQVJHRVRfU1VCVEFSR0VUKiBlYXJsaWVyLgoKMjAwNy0wNi0wNiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGdlbm1vZGVzLmMgKHRhZ2dlZF9wcmludGYsIGVtaXRfaW5zbl9tb2Rlc19oKTogRG9uJ3QKCXVzZSAlbiBvbiBwcmludGYuCgoyMDA3LTA2LTA2ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogaGFpZmEtc2NoZWQuYyAocmVzdG9yZV9iYl9ub3Rlcyk6IENsZWFyIGJiIGZpZWxkIG9mIHRoZSBub3RlcwoJZW1pdGVkIG91dHNpZGUgb2YgYmFzaWMgYmxvY2suCgkqIGNmZ2J1aWxkLmMgKGZpbmRfYmJfYm91bmRhcmllcyk6IENsZWFyIGJiIGZpZWxkIGZvciBpbnNucyBiZXR3ZWVuCgl0aGUgY3JlYXRlZCBibG9ja3MuCgkqIHJ0bC5oIChkZWxldGVfaW5zbl9jaGFpbik6IERlY2xhcmF0aW9uIGNoYW5nZWQuCgkqIGNmZ3J0bC5jIChkZWxldGVfaW5zbl9jaGFpbik6IEFkZCBvcHRpb24gdG8gY2xlYXIgYmIgZmllbGQgZm9yCglub24tcmVtb3ZlZCBpbnNucy4KCShydGxfZGVsZXRlX2Jsb2NrLCBydGxfbWVyZ2VfYmxvY2tzKTogUGFzcyB0cnVlIHRvIGRlbGV0ZV9pbnNuX2NoYWluLgoJKGRlbGV0ZV9pbnNuX2NoYWluX2FuZF9lZGdlcywgdHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wLAoJcnRsX3RpZHlfZmFsbHRocnVfZWRnZSwgY2ZnX2xheW91dF9tZXJnZV9ibG9ja3MpOiBQYXNzIGZhbHNlCgl0byBkZWxldGVfaW5zbl9jaGFpbi4KCShydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogVmVyaWZ5IHRoYXQgdGhlIGluc25zIGluIGhlYWRlciBhbmQgZm9vdGVyCglkbyBub3QgaGF2ZSBiYiBmaWVsZCBzZXQuCgkocnRsX3ZlcmlmeV9mbG93X2luZm8pOiBWZXJpZnkgdGhhdCBpbnNucyBiZXR3ZWVuIGJhc2ljIGJsb2NrcyBkbyBub3QKCWhhdmUgYmIgZmllbGQgc2V0LgoJKiByZWNvZy5jIChwZWVwaG9sZTJfb3B0aW1pemUpOiBBZGQgYXJndW1lbnQgdG8gZGVsZXRlX2luc25fY2hhaW4gY2FsbC4KCSogY2ZnY2xlYW51cC5jICh0cnlfb3B0aW1pemVfY2ZnKTogRGl0dG8uCgoyMDA3LTA2LTA2ICBUaG9tYXMgTmV1bWFubiAgPHRuZXVtYW5uQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGxhbWJkYS1jb2RlLmMgKHN0cnVjdCBsYW1iZGFfbGF0dGljZV9zKTogQWRkIGEgbmFtZSB0byB0aGUgc3RydWN0LgoJKGxhbWJkYV9ib2R5X3ZlY3Rvcl9uZXcpOiBVc2UgdHlwZSBzYWZlIG1lbW9yeSBtYWNyb3MuCgkobGFtYmRhX2xpbmVhcl9leHByZXNzaW9uX25ldyk6IExpa2V3aXNlLgoJKGxhbWJkYV9sb29wbmVzdF9uZXcpOiBMaWtld2lzZS4KCShsYW1iZGFfbGF0dGljZV9uZXcpOiBMaWtld2lzZS4KCShyZXBsYWNlX3VzZXNfZXF1aXZfdG9feF93aXRoX3kpOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nCgljb252ZW50aW9ucy4gVXNlIHR5cGUgc2FmZSBtZW1vcnkgbWFjcm9zLgoJKiBsYW1iZGEuaCAoc3RydWN0IGxhbWJkYV90cmFuc19tYXRyaXhfcyk6IEFkZCBhIG5hbWUgdG8gdGhlIHN0cnVjdC4KCShsYW1iZGFfYm9keV92ZWN0b3Jfcyk6IExpa2V3aXNlLgoJKiBsYW1iZGEtbWF0LmMgKGxhbWJkYV9tYXRyaXhfbmV3KTogVXNlIHR5cGUgc2FmZSBtZW1vcnkgbWFjcm9zLgoJKiBsYW1iZGEtdHJhbnMuYyAobGFtYmRhX3RyYW5zX21hdHJpeF9uZXcpOiBMaWtld2lzZS4KCjIwMDctMDYtMDYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2ludG9fY29uZCk6IFJldHVybiAyCglpZiB3ZSBuZWVkIHRvIHNjaGVkdWxlIGNmZ19jbGVhbnVwLgoJKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IERvIHNvLgoKMjAwNy0wNi0wNiAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobWVyZ2VfcmFuZ2VzKTogSWYgcmFuZ2Vfc3VjY2Vzc29yIG9yCglyYW5nZV9wcmVkZWNlc3NvciBmYWlsLCBqdXN0IHJldHVybiAwLgoKMjAwNy0wNi0wNiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjIxNgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0aW9uKTogRGV0ZXJtaW5lCglzaWduZWRuZXNzIG9mIEZJWF9UUlVOQ19FWFBSIGZyb20gb3V0cHV0IG9wZXJhbmQuCgkoc3VwcG9ydGFibGVfbmFycm93aW5nX29wZXJhdGlvbik6IERpdHRvLgoJKiB0cmVlLXZlY3QtZ2VuZXJpYy5jIChleHBhbmRfdmVjdG9yX29wZXJhdGlvbnNfMSk6IERldGVybWluZQoJc2lnbmVkbmVzcyBvZiBWRUNfVU5QQUNLX0ZMT0FUX0hJX0VYUFIgYW5kIFZFQ19VTlBBQ0tfRkxPQVRfTE9fRVhQUgoJZnJvbSBpbnB1dCBvcGVyYW5kLgoKMjAwNy0wNi0wNiAgVGhvbWFzIE5ldW1hbm4gIDx0bmV1bWFubkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGVudW0gcHRhX2ZsYWdzKTogTW92ZSBvdXQgb2Ygc3RydWN0IHNjb3BlLi4uCgkoc3RydWN0IHB0YSk6IC4uLmZyb20gaGVyZS4gQ2hhbmdlIGZsYWdzIHRvIHVuc2lnbmVkIHRvIGF2b2lkCglleGNlc3NpdmUgY2FzdGluZyAoYXMgaXQgaXMgdXNlZCBhcyBhIGJpdCBtYXNrKS4KCShvdmVycmlkZV9vcHRpb25zKTogQWRkIGNhc3RzIGFjY29yZGluZyB0byB0aGUgY29kaW5nIGNvbnZlbnZlbnRpb25zLgoJKHg4Nl82NF9lbGZfdW5pcXVlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShleGFtaW5lX2FyZ3VtZW50KTogQXZvaWQgdXNpbmcgQysrIGtleXdvcmRzIGFzIHZhcmlhYmxlIG5hbWVzLgoJKGNvbnN0cnVjdF9jb250YWluZXIpOiBMaWtld2lzZS4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkoZ2V0X2RsbGltcG9ydF9kZWNsKTogQ2FzdCBhY2NvcmRpbmcgdG8gdGhlIGNvZGluZyBjb252ZW50aW9ucy4gVXNlCgl0eXBlIHNhZmUgbWVtb3J5IG1hY3Jvcy4KCShsZWdpdGltaXplX2FkZHJlc3MpOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIGNvbnZlbnRpb25zLgoJKGVtaXRfaTM4N19jd19pbml0aWFsaXphdGlvbik6IENvcnJlY3RlZCB0aGUgdHlwZSBvZiBzbG90IHRvIGVudW0KCWl4ODZfc3RhY2tfc2xvdC4KCShpeDg2X2luaXRfbWFjaGluZV9zdGF0dXMpOiBVc2UgdHlwZSBzYWZlIG1lbW9yeSBtYWNyb3MuCgkoYmRlc2NfcGNtcGVzdHIpOiBVc2UgVU5LTk9XTiBpbnN0ZWFkIG9mIGludGVnZXIgMC4KCShiZGVzY19wY21waXN0cik6IExpa2V3aXNlLgoJKGJkZXNjX2NyYzMyKTogTGlrZXdpc2UuCgkoYmRlc2Nfc3NlXzNhcmcpOiBMaWtld2lzZS4KCShiZGVzY18yYXJnKTogTGlrZXdpc2UuCgkoYmRlc2NfMWFyZyk6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX3NzZV9wY21wZXN0cik6IENhc3QgYWNjb3JkaW5nIHRvIHRoZSBjb2RpbmcgY29udmVudGlvbnMuCgkoaXg4Nl9leHBhbmRfc3NlX3BjbXBpc3RyKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfdmVjX3NldF9idWlsdGluKTogVXNlIEVYUEFORF9OT1JNQUwgaW5zdGVhZCBvZiBpbnRlZ2VyIDAuCgkoaXg4Nl9idWlsdGluX3ZlY3Rvcml6ZWRfZnVuY3Rpb24pOiBDaGFuZ2UgdGhlIHR5cGUgb2YgZm4gdG8gdW5zaWduZWQKCWludCB0byBtYXRjaCB0aGUgbGFuZ2hvb2sgZGVmaW5pdGlvbi4KCShpeDg2X2J1aWx0aW5fY29udmVyc2lvbik6IENoYW5nZSB0aGUgdHlwZSBvZiBjb2RlIHRvIHVuc2lnbmVkIGluaXQgdG8KCW1hdGNoIHRoZSBsYW5naG9vayBkZWZpbml0aW9uLgoJKGl4ODZfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyk6IEF2b2lkIHVzaW5nIEMrKyBrZXl3b3JkcyBhcyB2YXJpYWJsZQoJbmFtZXMuCgkoaXg4Nl9wcmVmZXJyZWRfb3V0cHV0X3JlbG9hZF9jbGFzcyk6IExpa2V3aXNlLgoJKGl4ODZfY2Fubm90X2NoYW5nZV9tb2RlX2NsYXNzKTogTGlrZXdpc2UuCgkoaXg4Nl9tZW1vcnlfbW92ZV9jb3N0KTogTGlrZXdpc2UuCgkoaXg4Nl9ydHhfY29zdHMpOiBDYXN0IHRoZSBvdXRlcl9jb2RlIHBhcmFtZXRlciB0byBlbnVtIHJ0eF9jb2RlIHRvCglhdm9pZCBleGNlc3NpdmUgY2FzdGluZyBsYXRlciBvbi4KCSh4ODZfb3V0cHV0X21pX3RodW5rKTogQXZvaWQgdXNpbmcgQysrIGtleXdvcmRzIGFzIHZhcmlhYmxlIG5hbWVzLgoKMjAwNy0wNi0wNiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoc3NlNF8yX3BjbXBlc3RyX2Njb25seSk6IFByZWZlciBwY21wZXN0cm0KCWFzIGZsYWdzIHNldHRpbmcgaW5zbi4KCShzc2U0XzJfcGNtcGlzdHJfY2Nvbmx5KTogUHJlZmVyIHBjbXBpc3RybSBhcyBmbGFncyBzZXR0aW5nIGluc24uCgoyMDA3LTA2LTA2ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoVU5TUEVDX1JPVU5EUCwgVU5TUEVDX1JPVU5EUyk6IFJlbW92ZS4KCShVTlNQRUNfUk9VTkQpOiBOZXcuCgkoInNzZTRfMV9yb3VuZDxtb2RlPjIiKTogTmV3IGluc24gcGF0dGVybi4KCSgicmludDxtb2RlPjIiKTogRXhwYW5kIHVzaW5nICJzc2U0XzFfcm91bmQ8bW9kZT4yIiBwYXR0ZXJuIGZvcgoJU1NFNC4xIHRhcmdldHMuCgkoImZsb29yPG1vZGU+MiIpOiBSZW5hbWUgZnJvbSBmbG9vcmRmMiBhbmQgZmxvb3JzZjIuICBNYWNyb2l6ZQoJZXhwYW5kZXIgdXNpbmcgU1NFTU9ERUYgbW9kZSBtYWNyby4gIEV4cGFuZCB1c2luZwoJInNzZTRfMV9yb3VuZDxtb2RlPjIiIHBhdHRlcm4gZm9yIFNTRTQuMSB0YXJnZXRzLgoJKCJjZWlsPG1vZGU+MiIpOiBSZW5hbWUgZnJvbSBjZWlsZGYyIGFuZCBjZWlsc2YyLiAgTWFjcm9pemUKCWV4cGFuZGVyIHVzaW5nIFNTRU1PREVGIG1vZGUgbWFjcm8uICBFeHBhbmQgdXNpbmcKCSJzc2U0XzFfcm91bmQ8bW9kZT4yIiBwYXR0ZXJuIGZvciBTU0U0LjEgdGFyZ2V0cy4KCSgiYnRydW5jPG1vZGU+MiIpOiBSZW5hbWUgZnJvbSBidHJ1bmNkZjIgYW5kIGJ0cnVuY3NmMi4gIE1hY3JvaXplCglleHBhbmRlciB1c2luZyBTU0VNT0RFRiBtb2RlIG1hY3JvLiAgRXhwYW5kIHVzaW5nCgkic3NlNF8xX3JvdW5kPG1vZGU+MiIgcGF0dGVybiBmb3IgU1NFNC4xIHRhcmdldHMuCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoInNzZTRfMV9yb3VuZHBkIiwgInNzZTRfMV9yb3VuZHBzIik6IFVzZQoJVU5TUEVDX1JPVU5EIGluc3RlYWQgb2YgVU5TUEVDX1JPVU5EUC4KCSgic3NlNF8xX3JvdW5kc2QiLCAic3NlNF8xX3JvdW5kc3MiKTogVXNlIFVOU1BFQ19ST1VORCBpbnN0ZWFkIG9mCglVTlNQRUNfUk9VTkRTLgoKMjAwNy0wNi0wNiAgSmFuIFNqb2RpbiAgPGphbi5zam9kaW5AYW1kLmNvbT4KCSAgICBTZWJhc3RpYW4gUG9wICA8c2VicG9wQGdtYWlsLmNvbT4KCgkqIGxhbWJkYS5oIChidWlsZF9saW5lYXJfZXhwcik6IE5ldy4KCSogbGFtYmRhLWNvZGUuYyAobGJ2X3RvX2djY19leHByZXNzaW9uLCBsbGVfdG9fZ2NjX2V4cHJlc3Npb24pOgoJVXNlIGJ1aWxkX2xpbmVhcl9leHByLCBjYWxsIGZvbGQgYW5kIGZvcmNlX2dpbXBsZV9vcGVyYW5kLgoJKGxhbWJkYV9sb29wbmVzdF90b19nY2NfbG9vcG5lc3QpOiBDaGVjayB0aGF0IHRoZXJlIGlzCglzb21ldGhpbmcgdG8gaW5zZXJ0LgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL2x0cmFucy02LmM6IE5ldy4KCjIwMDctMDYtMDUgIEpvZXJnIFd1bnNjaCAgPGouZ251QHVyaWFoLmhlZXAuc2F4LmRlPgoKCVBSIHByZXByb2Nlc3Nvci8yMzQ3OQoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IHRoZSAwYi1wcmVmaXhlZCBiaW5hcnkgaW50ZWdlcgoJY29uc3RhbnQgZXh0ZW5zaW9uLgoKMjAwNy0wNi0wNSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjIxNQoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0aW9uKTogUmV0dXJuIGZhbHNlCglmb3IgdW5zdXBwb3J0ZWQgRklYX1RSVU5DX0VYUFIgdHJlZSBjb2RlLgoJKHN1cHBvcnRhYmxlX25hcnJvd2luZ19vcGVyYXRpb24pOiBEaXR0byBmb3IgRkxPQVRfRVhQUiB0cmVlIGNvZGUuCgoyMDA3LTA2LTA2ICBOYXRoYW4gRnJveWQgIDxmcm95ZG5qQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChGSVhFRF9TQ1JBVENIKTogVXNlIHIwIGFzIGEgc2NyYXRjaAoJcmVnaXN0ZXIgb24gU1BFIHRhcmdldHMuICBDaGFuZ2UgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0CglyZWFsaXR5LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UpOgoJQ2hhbmdlIEZJWEVEX1NDUkFUQ0ggdG8gMTQgYW5kIGRvY3VtZW50IHdoeSB3ZSdyZSBrZWVwaW5nIHIxNAoJb3V0IG9mIHRoZSByZWdpc3RlciBhbGxvY2F0aW9uIHBvb2wuCgkocnM2MDAwX3JlZ19saXZlX29yX3BpY19vZmZzZXRfcCk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IE1vdmUgdGhlIGFjdHVhbCBzYXZpbmcgb2YgTFIgdXAgdG8gZnJlZQoJcjAgZm9yIGhvbGRpbmcgcjExLiAgU3BsaXQgc2F2aW5nIG9mIFNQRSA2NC1iaXQgcmVnaXN0ZXJzIGludG8KCWl0cyBvd24gY2FzZS4gIEVuc3VyZSB0aGF0IG9mZnNldHMgd2lsbCBhbHdheXMgYmUgaW4tcmFuZ2UgZm9yCgknZXZzdGRkJyBieSB1c2luZyByMTEgYXMgYSBzY3JhdGNoIHJlZ2lzdGVyIHRvIHBvaW50IGF0IHRoZSBzdGFydAoJb2YgdGhlIFNQRSBzYXZlIGFyZWEuICBTYXZlIHIxMSBpZiBuZWNlc3NhcnksIGFzIGl0IGlzIHRoZSBzdGF0aWMKCWNoYWluIHJlZ2lzdGVyLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogU3BsaXQgcmVzdG9yaW5nIG9mIFNQRSA2NC1iaXQgcmVnaXN0ZXJzCglpbnRvIGl0cyBvd24gY2FzZS4gIEVuc3VyZSB0aGF0IG9mZnNldHMgd2lsbCBhbHdheXMgYmUgaW4tcmFuZ2UKCWZvciAnZXZsZGQnIGJ5IHVzaW5nIHIxMSBhcyBhIHNjcmF0Y2ggcmVnaXN0ZXIgdG8gcG9pbnQgYXQgdGhlCglzdGFydCBvZiB0aGUgU1BFIHNhdmUgYXJlYS4gIEFsc28gYWRqdXN0IHIxMSB3aGVuIHJlc3RvcmluZwoJdGhlIHN0YWNrIHBvaW50ZXIgdG8gY29tcGVuc2F0ZSBmb3IgcHJlLWxvYWRpbmcgcjExLgoKMjAwNy0wNi0wNSAgVGhvbWFzIE5ldW1hbm4gIDx0bmV1bWFubkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjZmcuYyAoaW5pdF9mbG93KTogVXNlIHR5cGUgc2FmZSBtZW1vcnkgbWFjcm9zLgoJKGFsbG9jX2Jsb2NrKTogTGlrZXdpc2UuCgkodW5jaGVja2VkX21ha2VfZWRnZSk6IExpa2V3aXNlLgoJKGR1bXBfZmxvd19pbmZvKTogQXZvaWQgdXNpbmcgQysrIGtleXdvcmRzIGFzIHZhcmlhYmxlIG5hbWVzLgoJKGNvcHlfb3JpZ2luYWxfdGFibGVfY2xlYXIpOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIGNvbnZlbnRpb25zLgoJKGNvcHlfb3JpZ2luYWxfdGFibGVfc2V0KTogTGlrZXdpc2UuCgkqIGNmZ2V4cGFuZCAobGFiZWxfcnR4X2Zvcl9iYik6IExpa2V3aXNlLgoJKGV4cGFuZF9naW1wbGVfYmFzaWNfYmxvY2spOiBMaWtld2lzZS4KCSogY2ZnaG9va3MuYyAoZHVtcF9iYik6IExpa2V3aXNlLgoJKGx2X2FkanVzdF9sb29wX2hlYWRlcl9waGkpOiBBdm9pZCB1c2luZyBDKysga2V5d29yZHMgYXMKCXZhcmlhYmxlIG5hbWVzLgoJKGx2X2FkZF9jb25kaXRpb25fdG9fYmIpOiBMaWtld2lzZS4KCSogY2ZnbGF5b3V0IChyZWxpbmtfYmxvY2tfY2hhaW4pOiBDYXN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nCgljb252ZW50aW9ucy4KCShmaXh1cF9yZW9yZGVyX2NoYWluKTogTGlrZXdpc2UuCgkoZml4dXBfZmFsbHRocnVfZXhpdF9wcmVkZWNlc3Nvcik6IExpa2V3aXNlLgoJKiBjZmdsb29wLmMgKGdsYl9lbnVtX3ApOiBMaWtld2lzZS4KCShnZXRfZXhpdF9kZXNjcmlwdGlvbik6IExpa2V3aXNlLgoJKGR1bXBfcmVjb3JkZWRfZXhpdCk6IExpa2V3aXNlLgoJKiBjZmdsb29wLmggKGVudW0gbG9vcF9lc3RpbWF0aW9uKTogTW92ZSBvdXQgb2Ygc3RydWN0IHNjb3BlLi4uCgkoc3RydWN0IGxvb3ApOiAuLi4gZnJvbSBoZXJlLgoJKiBjZmdsb29wbWFuaXAuYyAocnBlX2VudW1fcCk6IENhc3QgYWNjb3JkaW5nIHRvIHRoZSBjb2RpbmcKCWNvbnZlbnRpb25zLgoJKiBjZmdydGwuYyAocnRsX2NyZWF0ZV9iYXNpY19ibG9jayk6IExpa2V3aXNlLgoJKHJ0bF9zcGxpdF9ibG9jayk6IExpa2V3aXNlLgoJKHJ0bF9kdW1wX2JiKTogTGlrZXdpc2UuCgkoY2ZnX2xheW91dF9zcGxpdF9ibG9jayk6IExpa2V3aXNlLgoJKGluaXRfcnRsX2JiX2luZm8pOiBVc2UgdHlwZXNhZmUgbWVtb3J5IG1hY3Jvcy4KCgkqIGdyYXBoZHMuaCAoc3RydWN0IGdyYXBoX2VkZ2UpOiBSZW5hbWVkIGVkZ2UgdG8gZ3JhcGhfZWRnZS4KCSogZ3JhcGhkcy5oOiBVcGRhdGVkIGFsbCB1c2FnZXMgb2YgZWRnZSB0byBncmFwaF9lZGdlLgoJKiBncmFwaGRzLmM6IExpa2V3aXNlLgoJKiBjZmdsb29wYW5hbC5jOiBMaWtld2lzZS4KCjIwMDctMDYtMDUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiB0cmVlLXZycC5jIChjb21wYXJlX3ZhbHVlc193YXJudik6IENoZWNrIFRSRUVfTk9fV0FSTklORyBvbiBhCglQTFVTX0VYUFIgb3IgTUlOVVNfRVhQUiBub2RlIGJlZm9yZSBzZXR0aW5nICpzdHJpY3Rfb3ZlcmZsb3dfcC4KCShleHRyYWN0X3JhbmdlX2Zyb21fYXNzZXJ0KTogU2V0IFRSRUVfTk9fV0FSTklORyB3aGVuIGNyZWF0aW5nIGFuCglleHByZXNzaW9uLgoJKHRlc3RfZm9yX3Npbmd1bGFyaXR5KTogTGlrZXdpc2UuCgoyMDA3LTA2LTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCAoIlkyIik6IFJlcGxhY2VkIGJ5IC4uLgoJKCJZdCIpOiBUaGlzLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvbW14Lm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvc3NlLm1kOiBMaWtld2lzZS4KCjIwMDctMDYtMDUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kICgieiIpOiBSZXBsYWNlZCBieSAuLi4KCSgiWTAiKTogVGhpcy4KCSogY29uZmlnL2kzODYvc3NlLm1kIChzc2U0XzFfYmxlbmR2cGQpOiBMaWtld2lzZS4KCShzc2U0XzFfYmxlbmR2cHMpOiBMaWtld2lzZS4KCShzc2U0XzFfcGJsZW5kdmIpOiBMaWtld2lzZS4KCShzc2U0XzJfcGNtcGVzdHIpOiBMaWtld2lzZS4KCShzc2U0XzJfcGNtcGVzdHJtKTogTGlrZXdpc2UuCgkoc3NlNF8yX3BjbXBlc3RyX2Njb25seSk6IExpa2V3aXNlLgoJKHNzZTRfMl9wY21waXN0cik6IExpa2V3aXNlLgoJKHNzZTRfMl9wY21waXN0cm0pOiBMaWtld2lzZS4KCShzc2U0XzJfcGNtcGlzdHJfY2Nvbmx5KTogTGlrZXdpc2UuCgoyMDA3LTA2LTA1ICBSYXp5YSBMYWRlbHNreSAgPHJhenlhQGlsLmlibS5jb20+CgoJKiBtYXRyaXgtcmVvcmcuYyAodHJhbnNmb3JtX2FjY2Vzc19zaXRlcyk6IEZpeCBjb21wdXRhdGlvbi4KCSh0cmFuc2Zvcm1fYWxsb2NhdGlvbl9zaXRlcyk6IFNhbWUuCgoyMDA3LTA2LTA1ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogVXNlCglUQVJHRVRfU1VCVEFSR0VUMzJfSVNBX0RFRkFVTFQgdG8gc2VsZWN0IGRlZmF1bHQgaXg4Nl9pc2FfZmxhZ3MuCgoyMDA3LTA2LTA1ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAocmVnX25vdF94bW0wX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKG5vbmltbV9ub3RfeG1tMF9vcGVyYW5kKTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoInNzZTRfMV9ibGVuZHZwZCIpOiBVc2UgInJlZ19ub3RfeG1tMF9vcGVyYW5kIgoJYXMgb3BlcmFuZFswXSBhbmQgb3BlcmFuZFsxXSBwcmVkaWNhdGUuICBVc2UgIm5vbmltbV9ub3RfeG1tMF9vcGVyYW5kIgoJYXMgb3BlcmFuZFsyXSBwcmVkaWNhdGUuICBSZXF1aXJlICJ6IiBjbGFzcyBYTU0gcmVnaXN0ZXIgZm9yCglvcGVyYW5kWzNdLiAgQWRqdXN0IGFzbSB0ZW1wbGF0ZS4KCSgic3NlNF8xX2JsZW5kdnBkIik6IERpdHRvLgoJKCJzc2U0XzFfcGJsZW5kdmIiKTogRGl0dG8uCiAJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3NzZV80X29wZXJhbmRzX2J1aWx0aW4pOiBEbyBub3QKCWZvcmNlIG9wMiBpbnRvIHhtbTAgcmVnaXN0ZXIgZm9yIHZhcmlhYmxlIGJsZW5kIGluc3RydWN0aW9ucy4KCjIwMDctMDYtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGMtdHJlZS5oIChzdGFydF9lbnVtKTogVXBkYXRlLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGVudW1fbmV4dF92YWx1ZSk6IFJlbW92ZWQuCgkoZW51bV9vdmVyZmxvdyk6IExpa2V3aXNlLgoJKHN0YXJ0X2VudW0pOiBBZGQgY19lbnVtX2NvbnRlbnRzIGFyZ3VtZW50LiAgRG9uJ3QgdXNlIGdsb2JhbHMuCgkoYnVpbGRfZW51bWVyYXRvcik6IExpa2V3aXNlLgoJKiBjLXRyZWUuaCAoc3RydWN0IGNfZW51bV9jb250ZW50cyk6IE5ldyBzdHJ1Y3QuCgoyMDA3LTA2LTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9nZXRfYWxpYXNfc2V0KTogRml4IGluZGVudGF0aW9uLgoKMjAwNy0wNi0wNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIHRyZWUtdnJwLmMgKGFkanVzdF9yYW5nZV93aXRoX3NjZXYpOiBXaGVuIGxvb3AgaXMgbm90IGV4cGVjdGVkCgl0byBvdmVyZmxvdywgcmVkdWNlIG92ZXJmbG93IGluZmluaXR5IHRvIHJlZ3VsYXIgaW5maW5pdHkuCgkodnJwX3Zhcl9tYXlfb3ZlcmZsb3cpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHZycF92aXNpdF9waGlfbm9kZSk6IENoZWNrIHZycF92YXJfbWF5X292ZXJmbG93LgoKMjAwNy0wNi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IFJlbW92ZSBkdXBsaWNhdGUgY29kZS4KCjIwMDctMDYtMDQgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgYy8zMjE5MQoJKiBjLWNvbW1vbi5jIChjX2RlZmluZV9idWlsdGlucyk6IENhbGwgdGFyZ2V0bS5pbml0X2J1aWx0aW5zICgpCgliZWZvcmUgYnVpbGRfY29tbW9uX2J1aWx0aW5fbm9kZXMgKCkuCgoyMDA3LTA2LTA0ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiB0YXJnZXQvMzE3MzMKCSogY2ZncnRsLmMgKHJ0bF92ZXJpZnlfZmxvd19pbmZvKTogU2tpcCBub3RlcyB3aGVuIGxvb2tpbmcgZm9yIGJhcnJpZXIuCgoyMDA3LTA2LTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXByZWRjb20uYyAocmVwbGFjZV9yZWZfd2l0aCwgaW5pdGlhbGl6ZV9yb290X3ZhcnNfbG0sCglyZWFzc29jaWF0ZV90b190aGVfc2FtZV9zdG10KTogQ2FsbCBidWlsZF9naW1wbGVfbW9kaWZ5X3N0bXQKCWluc3RlYWQgb2YgX3N0YXQgdmVyc2lvbi4KCjIwMDctMDYtMDMgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzIxOTQKCSogdHJlZS1wcmVkY29tLmMgKGRldGVybWluZV9vZmZzZXQpOiBDaGVjayB0aGF0IGJvdGggcmVmZXJlbmNlcyBoYXZlCgl0aGUgc2FtZSB0eXBlLgoKMjAwNy0wNi0wMyAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGNmZ2xvb3BtYW5pcC5jIChyZW1vdmVfcGF0aCwgbG9vcGlmeSwgZHVwbGljYXRlX2xvb3BfdG9faGVhZGVyX2VkZ2UpOgoJQ2hhbmdlIGRvbV9iYnMgdG8gdmVjdG9yLiAgQWRkIGFyZ3VtZW50IHRvIGl0ZXJhdGVfZml4X2RvbWluYXRvcnMgY2FsbC4KCSogbG9vcC11bnJvbGwuYyAodW5yb2xsX2xvb3BfcnVudGltZV9pdGVyYXRpb25zKTogRGl0dG8uCgkqIHRyZWUtY2ZnLmMgKHRyZWVfZHVwbGljYXRlX3Nlc2VfcmVnaW9uKTogQ2hhbmdlIGRvbXMgdG8gdmVjdG9yLgoJQWRkIGFyZ3VtZW50IHRvIGl0ZXJhdGVfZml4X2RvbWluYXRvcnMgY2FsbC4KCShyZW1vdmVfZWRnZV9hbmRfZG9taW5hdGVkX2Jsb2Nrcyk6IFBhc3MgdmVjdG9yIHRvIGJic190b19maXhfZG9tLgoJKiBnY3NlLmMgKGhvaXN0X2NvZGUpOiBDaGFuZ2UgZG9tYnkgdG8gdmVjdG9yLgoJKiBjZmdob29rcy5jIChtYWtlX2ZvcndhcmRlcl9ibG9jayk6IENoYW5nZSBkb21zX3RvX2ZpeCB0byB2ZWN0b3IuCglBZGQgYXJndW1lbnQgdG8gaXRlcmF0ZV9maXhfZG9taW5hdG9ycyBjYWxsLgoJKiBsb29wLWRvbG9vcC5jIChkb2xvb3BfbW9kaWZ5KTogQ2hhbmdlZCByZWNvdW50X2RvbWluYXRvciB0bwoJcmVjb21wdXRlX2RvbWluYXRvci4KCSogbGFtYmRhLWNvZGUuYyAocGVyZmVjdF9uZXN0aWZ5KTogRGl0dG8uCgkqIGNmZ2xvb3BhbmFsLmM6IEluY2x1ZGUgZ3JhcGhkcy5oLgoJKHN0cnVjdCBlZGdlLCBzdHJ1Y3QgdmVydGV4LCBzdHJ1Y3QgZ3JhcGgsIGR1bXBfZ3JhcGgsIG5ld19ncmFwaCwKCWFkZF9lZGdlLCBkZnMsIGZvcl9lYWNoX2VkZ2UsIGZyZWVfZ3JhcGgpOiBNb3ZlZCB0byBncmFwaGRzLmMuCgkobWFya19pcnJlZHVjaWJsZV9sb29wcyk6IFVzZSBncmFwaGRzX3NjYy4gIFJlbW92ZSBhcmd1bWVudCBmcm9tCglhZGRfZWRnZSBjYWxsLgoJKiBncmFwaGRzLmM6IE5ldyBmaWxlLgoJKiBncmFwaGRzLmg6IE5ldyBmaWxlLgoJKiBkb21pbmFuY2UuYzogSW5jbHVkZSB2ZWNwcmltLmgsIHBvaW50ZXItc2V0LmggYW5kIGdyYXBoZHMuaC4KCShnZXRfZG9taW5hdGVkX2J5LCBnZXRfZG9taW5hdGVkX2J5X3JlZ2lvbik6IENoYW5nZSByZXR1cm4gdHlwZSB0bwoJdmVjdG9yLgoJKHZlcmlmeV9kb21pbmF0b3JzKTogUmVjb21wdXRlIGFsbCBkb21pbmF0b3JzIGFuZCBjb21wYXJlIHRoZSByZXN1bHRzLgoJKHJlY291bnRfZG9taW5hdG9yKTogUmVuYW1lZCB0byAuLi4KCShyZWNvbXB1dGVfZG9taW5hdG9yKTogLi4uIHRoaXMuICBEbyBub3QgY2hlY2sgdGhhdCB0aGUgYmxvY2sgaXMKCWRvbWluYXRlZCBieSBlbnRyeS4KCShpdGVyYXRlX2ZpeF9kb21pbmF0b3JzKTogUmVpbXBsZW1lbnRlZC4KCShwcnVuZV9iYnNfdG9fdXBkYXRlX2RvbWluYXRvcnMsIHJvb3Rfb2ZfZG9tX3RyZWUsCglkZXRlcm1pbmVfZG9taW5hdG9yc19mb3Jfc29ucyk6IE5ldyBmdW5jdGlvbnMuCgkqIGV0LWZvcmVzdC5jIChldF9yb290KTogTmV3IGZ1bmN0aW9uLgoJKiBldC1mb3Jlc3QuaCAoZXRfcm9vdCk6IERlY2xhcmUuCgkqIE1ha2VmaWxlLmluIChncmFwaGRzLm8pOiBBZGQuCgkoY2ZnbG9vcGFuYWwubyk6IEFkZCBncmFwaGRzLmggZGVwZW5kZW5jeS4KCShkb21pbmFuY2Uubyk6IEFkZCBncmFwaGRzLmgsIHZlY3ByaW0uaCBhbmQgcG9pbnRlci1zZXQuaCBkZXBlbmRlbmN5LgoJKiBiYXNpYy1ibG9jay5oIChnZXRfZG9taW5hdGVkX2J5LCBnZXRfZG9taW5hdGVkX2J5X3JlZ2lvbiwKCWl0ZXJhdGVfZml4X2RvbWluYXRvcnMpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKHJlY291bnRfZG9taW5hdG9yKTogUmVuYW1lZCB0byAuLi4KCShyZWNvbXB1dGVfZG9taW5hdG9yKTogLi4uIHRoaXMuCgkqIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jICh0aHJlYWRfYmxvY2spOiBGcmVlIGRvbWluYW5jZSBpbmZvLgoJKHRocmVhZF90aHJvdWdoX2FsbF9ibG9ja3MpOiBEbyBub3QgZnJlZSBkb21pbmFuY2UgaW5mby4KCjIwMDctMDYtMDMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBEb24ndCBvdmVycmlkZQoJUkVBTF9NT0RFX0ZPUk1BVC4KCSogY29uZmlnL202OGsvbTY4ay1tb2Rlcy5kZWYgKFNGLCBERik6IERlZmluZSB0byB1c2UKCW1vdG9yb2xhX3NpbmdsZV9mb3JtYXQgYW5kIG1vdG9yb2xhX2RvdWJsZV9mb3JtYXQsIHJlc3AuCgkqIHJlYWwuYyAobW90b3JvbGFfc2luZ2xlX2Zvcm1hdCk6IFJlbmFtZWQgZnJvbQoJY29sZGZpcmVfc2luZ2xlX2Zvcm1hdC4KCShtb3Rvcm9sYV9kb3VibGVfZm9ybWF0KTogUmVuYW1lZCBmcm9tIGNvbGRmaXJlX2RvdWJsZV9mb3JtYXQuCgkoZW5jb2RlX2llZWVfZXh0ZW5kZWQpOiBHZW5lcmF0ZSBhIHByb3BlciBjYW5vbmljYWwgTmFOIGltYWdlCglyZXNwZWN0aW5nIGNhbm9uaWNhbF9uYW5fbHNic19zZXQuCgkoaWVlZV9leHRlbmRlZF9tb3Rvcm9sYV9mb3JtYXQpOiBTZXQgY2Fub25pY2FsX25hbl9sc2JzX3NldCB0bwoJdHJ1ZS4KCSogcmVhbC5oOiBBZGp1c3QgZGVjbGFyYXRpb25zLgoKMjAwNy0wNi0wMyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgdGFyZ2V0LzMyMTYzCgkqIGNvbmZpZy9zaC9zaC5tZCAoc3ltR09UX2xvYWQpOiBEb24ndCBzY2hlZHVsZSBpbnNucyB3aGVuCgl0aGUgc3ltYm9sIGlzIGdlbmVyYXRlZCB3aXRoIHRoZSBzdGFjayBwcm90ZWN0b3IuCgoyMDA3LTA2LTAzICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19hdHRyaWJ1dGVfdGFibGUpOiBBZGQgImludGVycnVwdCIuCgkobTY4a19nZXRfZnVuY3Rpb25fa2luZCk6IFJldHVybiBtNjhrX2ZrX2ludGVycnVwdF9oYW5kbGVyIG9uCgkiaW50ZXJydXB0Ii4KCSogZG9jL2V4dGVuZC50ZXhpIChpbnRlcnJ1cHQpOiBNZW50aW9uIG02OGsuCgoyMDA3LTA2LTAyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9zc2VfNF9vcGVyYW5kc19idWlsdGluKTogQ2FsbAoJc2FmZV92ZWN0b3Jfb3BlcmFuZCgpIGlmIGlucHV0IG9wZXJhbmQgaXMgVkVDVE9SX01PREVfUCBvcGVyYW5kLgoJKGl4ODZfZXhwYW5kX3NzZV9wY21wZXN0cik6IERvIG5vdCBjaGVjayBvcGVyYW5kcyBmb3IKCSJyZWdpc3Rlcl9vcGVyYW5kIiwgd2hlbiBpbnNuIG9wZXJhbmQgcHJlZGljYXRlIGlzICJyZWdpc3Rlcl9vcGVyYW5kIi4KCShpeDg2X2V4cGFuZF9zc2VfcGNtcGlzdHIpOiBEaXR0by4KCjIwMDctMDYtMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCSAgICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChlbnVtIHJlZ19jbGFzcykgW1NTRV9GSVJTVF9SRUddOiBOZXcuCgkoU1NFX0NMQVNTX1ApOiBVc2UgcmVnX2NsYXNzX3N1YnNldF9wIGJldHdlZW4gU1NFX1JFR1MuCgkoUkVHX0NMQVNTX05BTUVTKTogQWRkICJGSVJTVF9TU0VfUkVHIiBzdHJpbmcuCgkoUkVHX0NMQVNTX0NPTlRFTlRTKTogQWRkIG1lbWJlcnMgb2YgRklSU1RfU1NFX1JFRyBjbGFzcy4KCSogY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgKCJ6Iik6IE5ldyByZWdpc3RlciBjb25zdHJhaW50Cglmb3IgbWVtYmVycyBvZiBTU0VfRklSU1RfUkVHIGNsYXNzLgoJKiBjb25maWcvaTM4Ni9pMzg2LW1vZGVzLmRlZiAoQ0NBLCBDQ0MsIENDTywgQ0NTKTogTmV3IGNvbXBhcmUgbW9kZXMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAocmVnY2xhc3NfbWFwKTogQ2hhbmdlIGNsYXNzIG9mICV4bW0wIHRvCglTU0VfRklSU1RfUkVHIGNsYXNzLgoJKHB1dF9jb25kaXRpb25fY29kZSkgW0VRLCBORV06IE91dHB1dCBzdWZmaXhlcyBmb3IgbmV3IGNvbXBhcmUgbW9kZXMuCgkoaXg4Nl9jY19tb2Rlc19jb21wYXRpYmxlKTogSGFuZGxlIENDQSwgQ0NDLCBDQ08gYW5kIENDUyBtb2Rlcy4KCShJWDg2X0JVSUxUSU5fUENNUEVTVFJJMTI4KTogTmV3IGZvciBTU0U0LjIuCgkoSVg4Nl9CVUlMVElOX1BDTVBFU1RSTTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QQ01QRVNUUkExMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUENNUEVTVFJDMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BDTVBFU1RSTzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QQ01QRVNUUlMxMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUENNUEVTVFJaMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BDTVBJU1RSSTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QQ01QSVNUUk0xMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUENNUElTVFJBMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BDTVBJU1RSQzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QQ01QSVNUUk8xMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUENNUElTVFJTMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BDTVBJU1RSWjEyOCk6IExpa2V3aXNlLgoJKHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uKTogQ2hhbmdlICJmbGFnIiBmaWVsZCB0byB1bnNpZ25lZC4KCShiZGVzY19wY21wZXN0cik6IE5ldyBidWlsdGluIGRlc2NyaXB0aW9uIHRhYmxlLgoJKGJkZXNjX3BjbXBpc3RyKTogTGlrZXdpc2UuCgkoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBEZWZpbmUgaW50X2Z0eXBlX3YxNnFpX2ludF92MTZxaV9pbnRfaW50LAoJdjE2cWlfZnR5cGVfdjE2cWlfaW50X3YxNnFpX2ludF9pbnQgYW5kIGludF9mdHlwZV92MTZxaV92MTZxaV9pbnQuCglJbml0aWFsaXplIHBjbXBbZWldc3RyW2ltXSBpbnNucyBmb3IgU1NFNC4yLgoJKGl4ODZfZXhwYW5kX3NzZV9wY21wZXN0cik6IE5ldyBzdWJyb3V0aW5lIG9mIGl4ODZfZXhwYW5kX2J1aWx0aW4uCgkoaXg4Nl9leHBhbmRfc3NlX3BjbXBpc3RyKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfYnVpbHRpbik6IEV4cGFuZCBwY21wW2VpXXN0cltpbV0gYnVpbHRpbnMgZm9yIFNTRTQuMi4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoVU5TUEVDX1BDTVBFU1RSKTogTmV3IGZvciBTU0U0LjIuCgkoVU5TUEVDX1BDTVBJU1RSKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoc3NlNF8yX3BjbXBlc3RyKTogTmV3IGluc24gcGF0ZXJuIGFuZCBzcGxpdHRlci4KCShzc2U0XzJfcGNtcGVzdHJpKTpOZXcgaXNucyBwYXR0ZXJuLgoJKHNzZTRfMl9wY21wZXN0cm0pOiBMaWtld2lzZS4KCShzc2U0XzJfcGNtcGVzdHJfY2Nvbmx5KTogTGlrZXdpc2UuCgkoc3NlNF8yX3BjbXBpc3RyKTogTmV3IGluc24gcGF0ZXJuIGFuZCBzcGxpdHRlci4KCShzc2U0XzJfcGNtcGlzdHJpKTpOZXcgaXNucyBwYXR0ZXJuLgoJKHNzZTRfMl9wY21waXN0cm0pOiBMaWtld2lzZS4KCShzc2U0XzJfcGNtcGlzdHJfY2Nvbmx5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3NtbWludHJpbi5oOiBFbmFibGUgcGNtcFtlaV1zdHJbaW1dIGludHJpbnNpY3MKCWluIFNTRTQuMi4KCjIwMDctMDYtMDEgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X21pX3RodW5rKTogT25seSBsb2FkIGdwIGlmIG5vdAoJTE9BREdQX0FCU09MVVRFIGFuZCBub3QgYmluZHNfbG9jYWxfcC4KCjIwMDctMDYtMDEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX1NQRUMpOiBQYXNzIC1mcGllIHRocm91Z2ggdG8gdGhlIGxpbmtlci4KCjIwMDctMDYtMDEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiB0cmVlLXZycC5jIChjb21wYXJlX25hbWVfd2l0aF92YWx1ZSk6IEFsd2F5cyBzZXQKCXVzZWRfc3RyaWN0X292ZXJmbG93IGlmIHdlIGdldCBhIHJlc3VsdCBmcm9tIHRoZSB2YXJpYWJsZSBpdHNlbGYuCgoyMDA3LTA2LTAxICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzE0NTUKCSogbG93ZXItc3VicmVnLmMgKGZpbmRfZGVjb21wb3NhYmxlX3N1YnJlZ3MpOiBEb24ndCBkZWNvbXBvc2UKCXN1YnJlZ3Mgd2hpY2ggaGF2ZSBhIGNhc3QgYmV0d2VlbiBtb2RlcyB3aGljaCBhcmUgbm90IHRpZWFibGUuCgoyMDA3LTA2LTAxICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogZXhwci5jIChmb3JjZV9vcGVyYW5kKSBbRElWLCBNT0QsIFVESVYsIFVNT0QsIEFTSElGVFJUXTogUmVtb3ZlCglicmVha3MgYWZ0ZXIgcmV0dXJuIHN0YXRlbWVudHMuCgoyMDA3LTA2LTAxICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5jIChmcHNjcl9zZXRfZnJvbV9tZW0pOiBDYWxsIGdldF9mcmVlX3JlZwoJb25seSBhZnRlciBub19uZXdfcHNldWRvcy4KCjIwMDctMDUtMzEgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBleHByLmMgKGNvbnZlcnRfbW92ZSk6IEFzc2VydCB0aGF0IHdlIGRvbid0IGhhdmUgYSBCTEttb2RlCglvcGVyYW5kLgoJKHN0b3JlX2V4cHIpOiBIYW5kbGUgQkxLbW9kZSBtb3ZlcyBieSBjYWxsaW5nIGVtaXRfYmxvY2tfbW92ZS4KCjIwMDctMDUtMzEgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogYy10eXBlY2suYyAoYnVpbGRfaW5kaXJlY3RfcmVmKTogSW5jbHVkZSB0eXBlIGluIGVycm9yIG1lc3NhZ2UuCgkoYnVpbGRfYmluYXJ5X29wKTogUGFzcyB0eXBlcyB0byBiaW5hcnlfb3BfZXJyb3IuCgkqIGMtY29tbW9uLmMgKGJpbmFyeV9vcF9lcnJvcik6IFRha2UgdHdvIHR5cGUgYXJndW1lbnRzLCBwcmludCBvdXQKCXR5cGVzIHdpdGggZXJyb3IuCgkqIGMtY29tbW9uLmggKGJpbmFyeV9vcF9lcnJvcik6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDA3LTA1LTMxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IENvcnJlY3QgY29tZW50cyBvbiAtbW5vLXNzZTQuCgoyMDA3LTA1LTMxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotKik6IEFkZCBubW1pbnRyaW4uaCB0byBleHRyYV9oZWFkZXJzLgoJKHg4Nl82NC0qLSopOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChPUFRJT05fTUFTS19JU0FfTU1YX1VOU0VUKTogTmV3LgoJKE9QVElPTl9NQVNLX0lTQV8zRE5PV19VTlNFVCk6IExpa2V3aXNlLgoJKE9QVElPTl9NQVNLX0lTQV9TU0VfVU5TRVQpOiBMaWtld2lzZS4KCShPUFRJT05fTUFTS19JU0FfU1NFMl9VTlNFVCk6IExpa2V3aXNlLgoJKE9QVElPTl9NQVNLX0lTQV9TU0UzX1VOU0VUKTogTGlrZXdpc2UuCgkoT1BUSU9OX01BU0tfSVNBX1NTU0UzX1VOU0VUKTogTGlrZXdpc2UuCgkoT1BUSU9OX01BU0tfSVNBX1NTRTRfMV9VTlNFVCk6IExpa2V3aXNlLgoJKE9QVElPTl9NQVNLX0lTQV9TU0U0XzJfVU5TRVQpOiBMaWtld2lzZS4KCShPUFRJT05fTUFTS19JU0FfU1NFNCk6IExpa2V3aXNlLgoJKE9QVElPTl9NQVNLX0lTQV9TU0U0X1VOU0VUKTogTGlrZXdpc2UuCgkoT1BUSU9OX01BU0tfSVNBX1NTRTRBX1VOU0VUKTogTGlrZXdpc2UuCgkoaXg4Nl9oYW5kbGVfb3B0aW9uKTogVXNlIE9QVElPTl9NQVNLX0lTQV8qX1VOU0VULiAgSGFuZGxlIFNTRTQuMi4KCShvdmVycmlkZV9vcHRpb25zKTogU3VwcG9ydCBTU0U0LjIuCgkoaXg4Nl9idWlsZF9jb25zdF92ZWN0b3IpOiBTdXBwb3J0IFNJbW9kZSBhbmQgREltb2RlLgoJKGl4ODZfYnVpbGRfc2lnbmJpdF9tYXNrKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfaW50X3Zjb25kKTogU3VwcG9ydCBWMkRJbW9kZS4KCShJWDg2X0JVSUxUSU5fQ1JDMzJRSSk6IE5ldyBmb3IgU1NFNC4yLgoJKElYODZfQlVJTFRJTl9DUkMzMkhJKTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX0NSQzMyU0kpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fQ1JDMzJESSk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QQ01QR1RRKTogTGlrZXdpc2UuCgkoYmRlc2NfY3JjMzIpOiBMaWtld2lzZS4KCShiZGVzY19zc2VfM2FyZyk6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX2NyYzMyKTogTGlrZXdpc2UuCgkoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBTdXBwb3J0IFNTRTQuMi4KCShpeDg2X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUKCV9fU1NFNF8yX18gZm9yIC1tc3NlNC4yLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChVTlNQRUNfQ1JDMzIpOiBOZXcgZm9yIFNTRTQuMi4KCShDUkMzMk1PREUpOiBMaWtld2lzZS4KCShjcmMzMm1vZGVzdWZmaXgpOiBMaWtld2lzZS4KCShjcmMzMm1vZGVjb25zdHJhaW50KTogTGlrZXdpc2UuCgkoc3NlNF8yX2NyYzMyPG1vZGU+KTogTGlrZXdpc2UuCgkoc3NlNF8yX2NyYzMyZGkpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG1zc2U0LjIpOiBOZXcgZm9yIFNTRTQuMi4KCShtc3NlNCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9ubW1pbnRyaW4uaDogTmV3LiBUaGUgZHVtbXkgU1NFNC4yIGludHJpbnNpYyBoZWFkZXIgZmlsZS4KCSogY29uZmlnL2kzODYvc21taW50cmluLmg6IEFkZCBTU0U0LjIgaW50cmluc2ljcy4KCSogY29uZmlnL2kzODYvc3NlLm1kIChzc2U0XzJfZ3R2MmRpMyk6IE5ldyBwYXR0ZXJuIGZvciBTU0U0LjIuCgkodmNvbmQ8bW9kZT4pOiBVc2UgU1NFTU9ERUkgaW5zdGVhZCBvZiBTU0VNT0RFMTI0LgoJKHZjb25kdTxtb2RlPik6IExpa2V3aXNlLgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IFNTRTQuMiBidWlsdC1pbiBmdW5jdGlvbnMuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1zc2U0LjIvLW1zc2U0LgoKMjAwNy0wNS0zMSAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMjE2MAoJKiB0cmVlLXByZWRjb20uYyAocHJlZGNvbV90bXBfdmFyKTogTmV3IGZ1bmN0aW9uLiAgTWFyayBjcmVhdGVkCgl2YXJpYWJsZSBhcyBnaW1wbGUgcmVnLgoJKGluaXRpYWxpemVfcm9vdF92YXJzLCBpbml0aWFsaXplX3Jvb3RfdmFyc19sbSk6IFVzZSBwcmVkY29tX3RtcF92YXIuCgoyMDA3LTA1LTMxICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjYy5jIChtYWluKTogRG9uJ3QgY29uc2lkZXIgbGlua2VyIG9wdGlvbnMgd2hlbiBpc3N1aW5nIHRoZQoJd2FybmluZyBhYm91dCBhIGxpbmtlciBpbnB1dCBmaWxlIG5vdCBiZWluZyB1c2VkLgoKMjAwNy0wNS0zMCAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KCgkqIHRyZWUtdnJwLmMgKGNvbXBhcmVfbmFtZXMpOiBJbml0aWFsaXplIHNvcC4KCjIwMDctMDUtMzAgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9hbmFseXplX2Z1bmN0aW9uKTogUmVtb3ZlCgljb21wdXRhdGlvbiBvZiBpbmxpbmUgcGFyYW1ldGVycy4KCjIwMDctMDUtMzAgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoVEFSR0VUX1NVQlRBUkdFVF9ERUZBVUxUKTogVW5kZWYgYmVmb3JlIGRlZmluZS4KCjIwMDctMDUtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAoYXJtLXdycy12eHdvcmtzKTogUmVtb3ZlIGRieGVsZi5oIGZyb20gdG1fZmlsZS4KCUFkZCB2eC1jb21tb24uaC4gIEluY2x1ZGUgdnh3b3Jrcy5oIGJldHdlZW4gdngtY29tbW9uLmggYW5kCglhcm0vdnh3b3Jrcy5oLgoJKiBjb25maWcvdngtY29tbW9uLmggKERXQVJGMl9VTldJTkRfSU5GTyk6IFVuZGVmaW5lIGJlZm9yZQoJcmVkZWZpbmluZy4KCSogY29uZmlnL3Z4d29ya3MuaCAoVEFSR0VUX0FTTV9DT05TVFJVQ1RPUik6IExpa2V3aXNlLgoJKFRBUkdFVF9BU01fREVTVFJVQ1RPUik6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL3Z4d29ya3MuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IENoZWNrIGFybV9hcmNoX3hzY2FsZQoJaW5zdGVhZCBvZiBhcm1faXNfeHNjYWxlLiAgVXNlIFZYV09SS1NfT1NfQ1BQX0JVSUxUSU5TLgoJKE9WRVJSSURFX09QVElPTlMsIFNVQlRBUkdFVF9DUFBfU1BFQyk6IERlZmluZS4KCShDQzFfU1BFQyk6IEFkZCAtdHN0cm9uZ2FybS4gIExpbmUgdXAgYmFja3NsYXNoZXMuCgkoVlhXT1JLU19FTkRJQU5fU1BFQyk6IERlZmluZS4KCShBU01fU1BFQyk6IEFkZCBWWFdPUktTX0VORElBTl9TUEVDLgoJKExJQl9TUEVDLCBTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDKTogUmVkZWZpbmUgdG8gdGhlaXIKCVZYV09SS1NfKiBlcXVpdmFsZW50cy4KCShMSU5LX1NQRUMpOiBMaWtld2lzZSwgYnV0IGFkZCBWWFdPUktTX0VORElBTl9TUEVDLgoJKEFTTV9GSUxFX1NUQVJUKTogRGVsZXRlLgoJKFRBUkdFVF9WRVJTSU9OKTogUmVmb3JtYXQuCgkoRlBVVFlQRV9ERUZBVUxULCBGVU5DVElPTl9QUk9GSUxFUik6IERlZmluZS4KCShERUZBVUxUX1NUUlVDVFVSRV9TSVpFX0JPVU5EQVJZKTogRGVmaW5lLgoJKiBjb25maWcvYXJtL3Qtdnh3b3JrcyAoTElCMUFTTVNSQywgTElCMUFTTUZVTkNTKTogRGVmaW5lLgoJKEZQQklULCBEUEJJVCk6IERlZmluZS4KCShmcC1iaXQuYywgZHAtYml0LmMpOiBOZXcgcnVsZXMuCgkoTVVMVElMSUJfT1BUSU9OUyk6IEFkZCBzdHJvbmdhcm0sIC1tcnRwIGFuZCAtbXJ0cC8tZlBJQyBtdWx0aWxpYnMuCgkoTVVMVElMSUJfTUFUQ0hFUywgTVVMVElMSUJfRVhDRVBUSU9OUyk6IERlZmluZS4KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9lbWl0X2NhbGxfaW5zbik6IERlY2xhcmUuCgkqIGNvbmZpZy9hcm0vYXJtLmg6IEluY2x1ZGUgdnh3b3Jrcy1kdW1teS5oLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZWxmX2FzbV9jb25zdHJ1Y3RvciwgYXJtX2VsZl9hc21fZGVzdHJ1Y3Rvcik6CglNYXJrIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IERvIG5vdCBhbGxvdyBWeFdvcmtzIFJUUCBQSUMgdG8gYmUgdXNlZAoJZm9yIFRodW1iLiAgRm9yY2UgcjkgdG8gYmUgdGhlIFBJQyByZWdpc3RlciBmb3IgVnhXb3JrcyBSVFBzIGFuZAoJbWFrZSBpdCBpbmNvbXBhdGlibGUgd2l0aCAtbXNpbmdsZS1waWMtYmFzZS4KCShhcm1fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBSZXR1cm4gZmFsc2UgZm9yIGNhbGxzIHRoYXQgbWlnaHQKCWdvIHRocm91Z2ggYSBWeFdvcmtzIFBJQyBQTFQgZW50cnkuCgkocmVxdWlyZV9waWNfcmVnaXN0ZXIpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tLi4uCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IC4uLmhlcmUuICBEbyBub3QgdXNlIEdPVE9GRiBhY2Nlc3NlcwoJZm9yIFZ4V29ya3MgUlRQcy4KCShhcm1fbG9hZF9waWNfcmVnaXN0ZXIpOiBIYW5kbGUgdGhlIFZ4V29ya3MgUlRQIGluaXRpYWxpemF0aW9uCglzZXF1ZW5jZS4gIFVzZSBwaWNfcmVnIGFzIGEgc2hvcnRoYW5kIGZvciBjZnVuLT5tYWNoaW5lLT5waWNfcmVnLgoJKGFybV9lbWl0X2NhbGxfaW5zbik6IE5ldyBmdW5jdGlvbi4KCShhcm1fYXNzZW1ibGVfaW50ZWdlcik6IERvIG5vdCB1c2UgR09UT0ZGIGFjY2Vzc2VzIGZvciBWeFdvcmtzIFJUUC4KCSogY29uZmlnL2FybS9hcm0ubWQgKFVOU1BFQ19QSUNfT0ZGU0VUKTogTmV3IHVuc3BlYyBudW1iZXIuCgkocGljX29mZnNldF9hcm0pOiBOZXcgcGF0dGVybi4KCShjYWxsLCBjYWxsX3ZhbHVlKTogVXNlIGFybV9lbWl0X2NhbGxfaW5zbi4KCShjYWxsX2ludGVybmFsLCBjYWxsX3ZhbHVlX2ludGVybmFsKTogTmV3IGV4cGFuZGVycy4KCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtIChfX1BMVF9fKTogRGVmaW5lIHRvIGVtcHR5IGZvcgoJVnhXb3JrcyB1bmxlc3MgX19QSUNfXy4KCjIwMDctMDUtMzAgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BnbWFpbC5jb20+CgoJKiBnZW5yZWNvZy5jOiBJbmNsdWRlIHJlZ3MuaCBpbiBnZW5lcmF0ZWQgZmlsZS4KCSogZ2VuZW1pdC5jOiBEaXR0by4gRml4IHVwIGZvcm1hdHRpbmcuCgkqIGNvbmZpZy9tbjEwMzAwL2NvbnN0cmFpbnRzLm1kOiBOZXcuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQ6IEluY2x1ZGUuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyhtbjEwMzAwX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOgoJRml4IHVwIGZvciByZW1vdmVkIG1hY3JvLgoJKiBjb25maWcvbW4xMDMwMC9wcmVkaWNhdGVzLm1kIChjYWxsX2FkZHJlc3Nfb3BlcmFuZCk6IERpdHRvLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IERlbGV0ZS4KCShDT05TVF9PS19GT1JfSSk6IERpdHRvLgoJKENPTlNUX09LX0ZPUl9KKTogRGl0dG8uCgkoQ09OU1RfT0tfRk9SX0spOiBEaXR0by4KCShDT05TVF9PS19GT1JfTCk6IERpdHRvLgoJKENPTlNUX09LX0ZPUl9NKTogRGl0dG8uCgkoQ09OU1RfT0tfRk9SX04pOiBEaXR0by4KCShDT05TVF9ET1VCTEVfT0tfRk9SX0xFVFRFUl9QKTogRGl0dG8uCgkoT0tfRk9SX1EpOiBEaXR0by4KCShPS19GT1JfUik6IERpdHRvLgoJKE9LX0ZPUl9UKTogRGl0dG8uCgkoRVhUUkFfQ09OU1RSQUlOVCk6IERpdHRvLgoKMjAwNy0wNS0zMCBVcm9zIEJpemphayA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKE1BU0tfNjRCSVQsIE1BU0tfTU1YLCBNQVNLXzNETk9XKiwgTUFTS19TU0UqKToKCVJlbW92ZSBkZWZpbmVzLgoJKiBjb25maWcvaTM4Ni9iaWFyY2guaCAoVEFSR0VUXzY0QklUX0RFRkFVTFQpOiBEZWZpbmUgdG8KCU9QVElPTl9NQVNLX0lTQV82NEJJVC4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBSZW5hbWUgTUFTS18qIG1hY3JvcyB0byBPUFRJT05fTUFTS19JU0FfKi4KCjIwMDctMDUtMzAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMyMTUyCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X29tcF9hdG9taWNfcGlwZWxpbmUpOiBVc2UgY29ycmVjdAoJdHlwZXMgZm9yIGNvbXBhcmlzb24uCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb21wYXJpc29uKTogQ2FsbCBtYXliZV9jYW5vbmljYWxpemVfY29tcGFyaXNvbgoJd2l0aCBvcmlnaW5hbCB0eXBlZCBhcmd1bWVudHMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9naW1wbGlmeV92YV9hcmcpOiBGaXggdHlwZSBtaXNtYXRjaGVzLgoKMjAwNy0wNS0zMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE3NjkKCSogZXhjZXB0LmMgKGR1cGxpY2F0ZV9laF9yZWdpb25zKTogQ2xlYXIgcHJldl90cnkgaWYKCUVSVF9NVVNUX05PVF9USFJPVyByZWdpb24gaXMgaW5zaWRlIG9mIEVSVF9UUlkgcmVnaW9uLgoKMjAwNy0wNS0zMCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jIChzY2V2X2NvbnN0X3Byb3ApOiBEbyBub3QgY3JlYXRlIGxhYmVscy4KCSogdHJlZS1zc2Etc2luay5jIChzdGF0ZW1lbnRfc2lua19sb2NhdGlvbik6IFJldHVybiBiYXNpYyBibG9jayBhbmQKCWJzaSBvZiB0aGUgbG9jYXRpb24gd2hlcmUgc3RhdGVtZW50cyBzaG91bGQgYmUgaW5zZXJ0ZWQuCgkoc2lua19jb2RlX2luX2JiKTogVGFrZSBic2kgZnJvbSBzdGF0ZW1lbnRfc2lua19sb2NhdGlvbi4KCSogbGFtYmRhLWNvZGUuYyAobGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCk6IFVzZSBic2lfYWZ0ZXJfbGFiZWxzCglpbnN0ZWFkIG9mIGJzaV9zdGFydC4KCSogdHJlZS1wcm9maWxlLmMgKHRyZWVfZ2VuX2ljX2Z1bmNfcHJvZmlsZXIpOiBQYXNzIEJTSV9ORVdfU1RNVCB0bwoJYnNpX2luc2VydF9hZnRlci4KCSogdHJlZS1jZmcuYyAoYnNpX21vdmVfYWZ0ZXIpOiBQYXNzIEJTSV9ORVdfU1RNVCB0byBic2lfaW5zZXJ0X2FmdGVyLgoJKGJzaV9tb3ZlX2JlZm9yZSk6IERvY3VtZW50IGluY29uc2lzdGVuY3kgd2l0aCBic2lfbW92ZV9hZnRlci4KCSh0cmVlX3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCk6IERvIG5vdCBjcmVhdGUgbGFiZWxzIGlmIG5vdCBuZWNlc3NhcnkuCgoyMDA3LTA1LTMwIFVyb3MgQml6amFrIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVEFSR0VUX0FCTSk6IE5ldyBkZWZpbmUuCgkoVEFSR0VUX1BPUENOVCk6IERpdHRvLgoJKFRBUkdFVF82NEJJVCwgVEFSR0VUX01NWCwgVEFSR0VUXzNETk9XLCBUQVJHRVRfM0ROT1dfQSwgVEFSR0VUX1NTRSopOgoJTmV3IHRlbXBvcmFyeSBkZWZpbmVzIHRvIHJlZGVmaW5lIGZyb20gT1BUSU9OX0lTQV8qIGRlZmluZXMuCgkoTUFTS182NEJJVCwgTUFTS19NTVgsIE1BU0tfM0ROT1csIE1BU0tfM0ROT1dfQSwgTUFTS19TU0UqKToKCU5ldyB0ZW1wb3JhcnkgZGVmaW5lcyB0byByZWRlZmluZSBmcm9tIE9QVElPTl9NQVNLX0lTQV8qIGRlZmluZXMuCgkoaXg4Nl9pc2FfZmxhZ3MpOiBOZXcgZXh0ZXJuIGludCBkZWNsYXJhdGlvbi4KCShUQVJHRVRfU1VCVEFSR0VUX0RFRkFVTFQpOiBOZXcgZGVmaW5lLgoJKFRBUkdFVF9TVUJUQVJHRVRfSVNBX0RFRkFVTFQpOiBEaXR0by4KCShUQVJHRVRfU1VCVEFSR0VUMzJfREVGQVVMVCk6IERpdHRvLgoJKFRBUkdFVF9TVUJUQVJHRVQzMl9JU0FfREVGQVVMVCk6IERpdHRvLgoJKFRBUkdFVF9TVUJUQVJHRVQ2NF9JU0FfREVGQVVMVCk6IERpdHRvLgoJKiBjb25maWcvaTM4Ni91bml4Lmg6IFVuZGVmIFRBUkdFVF9TVUJUQVJHRVRfREVGQVVMVCBiZWZvcmUgZGVmaW5lLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaDogQ2hhbmdlIFRBUkdFVF82NEJJVCBkZWZpbmUgdG8KCU9QVElPTl9JU0FfNjRCSVQuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm9wdCAobTNkbm93YSk6IERlZmluZSBhcyB1bmRvY3VtZW50ZWQgb3B0aW9uCgl1c2luZyBleGlzdGluZyAiaXg4Nl9pc2FfZmxhZ3MiIHZhcmlibGUuCgkobTMyLCBtNjQpOiBVc2UgZXhpc3RpbmcgIml4ODZfaXNhX2ZsYWdzIiB2YXJpYWJsZS4KCShtbW14LCBtM2Rub3cpOiBEaXR0by4KCShtc3NlLCBtc3NlMiwgbXNzZTMsIG1zc3NlMywgbXNzZTQuMSwgbXNzZTRhKTogRGl0dG8uCgkobWFibSk6IERlZmluZSBhcyBub24tbmVnYXRpdmUgb3B0aW9uIHVzaW5nICJ4ODZfYWJtIiB2YXJpYWJsZS4KCShtcG9wY250KTogRGVmaW5lIGFzIG5vbi1uZWdhdGl2ZSBvcHRpb24gdXNpbmcgIng4Nl9wb3BjbnQiIHZhcmlhYmxlLgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2FyY2hfZmVhdHVyZXMpIFtYODZfQVJDSF9DTU9WRV06CglSZXdyaXRlIGZlYXR1cmUgdGVzdCBiaXRtYXAuCgkoaXg4Nl9pc2FfZmxhZ3MpOiBOZXcgaW5pdGlhbGl6ZWQgZ2xvYmFsIGludCB2YXJpYmxlLgoJKGl4ODZfaXNhX2ZsYWdzX2V4cGxpY2l0KTogTmV3IHN0YXRpYyBpbnQgdmFyaWFibGUuCgkoaXg4Nl9oYW5kbGVfb3B0aW9uKTogU2V0ICJpeDg2X2lzYV9mbGFnc19leHBsaWNpdCIgd2hlbiBtbW14LCBtM2Rub3csCgltc3NlLCBtc3NlMiwgbXNzZTMsIG1zc2U0LjEgYW5kIG1zc2U0YSBvcHRpb24gaXMgcHJvY2Vzc2VkLiAgQ2hhbmdlCglpODZfaXNhX2ZsYWdzIGFuZCBpeDg2X2lzYV9mbGFnc19leHBsaWNpdCwgbm90IHRhcmdldF9mbGFncyBhbmQKCXRhcmdldF9mbGFnc19leHBsaWNpdC4KCShvdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlICJ0YXJnZXRfZW5hYmxlIiBhbmQgInRhcmdldF9kaXNhYmxlIiBmaWVsZHMKCWZyb20gInN0cnVjdCBwdHQiLiBVcGRhdGUgcHJvY2Vzc29yX3RhcmdldF90YWJsZSBhY2NvcmRpbmdseS4gUmVtb3ZlCglQVEFfUFJFRkVUQ0hfU1NFIGZyb20gcHJvY2Vzc29yX2FsaWFzX3RhYmxlIGVudHJ5IGlmIFBURV9TU0UgaXMKCWRlZmluZWQgYW5kIHJlYXJyYW5nZSBQVEFfKiBiaXRzLiAgVXNlICJpeDg2X2lzYV9mbGFncyIgaW5zdGVhZCBvZgoJInRhcmdldF9mbGFncyIgYW5kICJpeDg2X2lzYV9mbGFnc19leHBsaWNpdCIgaW5zdGVhZCBvZgoJInRhcmdldF9mbGFnc19leHBsaWNpdCIgd2hlbiBtYXNrZWQgd2l0aCBNQVNLXzY0QklULCBNQVNLX01NWCwKCU1BU0tfM0ROT1csIE1BU0tfM0ROT1dfQSBvciBNQVNLX1NTRSouICBTZXQgIng4Nl9hYm0iIHRvIHRydWUgd2hlbgoJUFRBX0FCTSBpcyBzZXQgaW4gcHJvY2Vzc29yX2FsaWFzX3RhYmxlIGZsYWdzIGVudHJ5LiAgU2V0ICJ4ODZfcG9wY250IgoJdG8gdHJ1ZSB3aGVuIGVpdGhlciBvZiBQVEFfUE9QQ05UIG9yIFBUQV9BQk0gaXMgc2V0IGluCglwcm9jZXNzb3JfYWxpYXNfdGFibGUgZmxhZ3MgZW50cnkuICBTZXQgIng4Nl9wcmVmZXRjaF9zc2UiIHRvIHRydWUKCXdoZW4gZWl0aGVyIG9mIFBUQV9QUkVGRVRDSF9TU0Ugb3IgUFRBX1NTRSBpcyBzZXQgaW4KCXByb2Nlc3Nvcl9hbGlhc190YWJsZSBmbGFncyBlbnRyeS4gIFJlbW92ZSBoYW5kbGluZyBvZgoJInRhcmdldF9lbmFibGUiIGFuZCAidGFyZ2V0X2Rpc2FibGUiIGZpZWxkcyBvZiBwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlLgoJTWFzayAidGFyZ2V0X2ZsYWdzIiB3aXRoIFRBUkdFVF9TVUJUQVJHRVQzMl9ERUZBVUxUIGZvciAzMi1iaXQKCXRhcmdldHMgb3Igd2l0aCBUQVJHRVRfU1VCVEFSR0VUNjRfREVGQVVMVCBmb3IgNjQtYml0IHRhcmdldHMuCglNYXNrICJpeDg2X2lzYV9mbGFncyIgd2l0aCBUQVJHRVRfU1VCVEFSR0VUMzJfSVNBX0RFRkFVTFQgZm9yIDMyLWJpdAoJdGFyZ2V0cyBvciB3aXRoIFRBUkdFVF9TVUJUQVJHRVQ2NF9JU0FfREVGQVVMVCBmb3IgNjQtYml0IHRhcmdldHMuCgkoZGVmX2J1aWx0aW4pOiBNYXNrICJtYXNrIiB2YXJpYWJsZSB3aXRoICJpeDg2X2lzYV9mbGFncyIsIG5vdAoJInRhcmdldF9mbGFncyIuCgkoVEFSR0VUX0RFRkFVTFRfVEFSR0VUX0ZMQUdTKTogRG8gbm90IGluY2x1ZGUgVEFSR0VUXzY0QklUX0RFRkFVTFQuCgoyMDA3LTA1LTI5ICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCVBSIGdjYy8zMTk3NQoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X21pX3RodW5rKTogRW1pdAoJTk9URV9JTlNOX1BST0xPR1VFX0VORCBhdCBiZWdpbm5pbmcgb2YgdGhlIHRodW5rLgoKMjAwNy0wNS0yOSAgSHVpLU1heSBDaGFuZyAgPGhtLmNoYW5nQGFwcGxlLmNvbT4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX3JlZ3Bhcm0pOiBBZGRlZCBjaGVja2luZyBvZgoJaXg4Nl9mb3JjZV9hbGlnbl9hcmdfcG9pbnRlciB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZgoJcmVnaXN0ZXIgcGFyYW1ldGVycy4KCjIwMDctMDUtMjkgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAoRFJfTUlTQUxJR05NRU5UKTogQ2FzdCBhdXggdG8gaW50ZWdlci4KCShTRVRfRFJfTUlTQUxJR05NRU5UKTogTmV3LgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2NvbXB1dGVfZGF0YV9yZWZfYWxpZ25tZW50LAoJdmVjdF91cGRhdGVfbWlzYWxpZ25tZW50X2Zvcl9wZWVsLCB2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdubWVudCk6CglVc2UgU0VUX0RSX01JU0FMSUdOTUVOVC4KCSogdHJlZS1wcmVkY29tLmMgKHNwbGl0X2RhdGFfcmVmc190b19jb21wb25lbnRzKTogQ2FzdCBkci0+YXV4IGZyb20KCXBvaW50ZXIuCgkqIHRyZWUtZGF0YS1yZWYuYyAoY3JlYXRlX2RhdGFfcmVmLCBjb21wdXRlX2FsbF9kZXBlbmRlbmNlcywKCWZpbmRfbG9vcF9uZXN0KTogRXhwb3J0LgoJKiB0cmVlLWRhdGEtcmVmLmggKHN0cnVjdCBkYXRhX3JlZmVyZW5jZSk6IENoYW5nZSBhdXggZmllbGQgdG8gcG9pbnRlci4KCShjcmVhdGVfZGF0YV9yZWYsIGNvbXB1dGVfYWxsX2RlcGVuZGVuY2VzLCBmaW5kX2xvb3BfbmVzdCk6IERlY2xhcmUuCgkqIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYzogSW5jbHVkZSB0cmVlLWRhdGEtcmVmLmguCgkoTDFfQ0FDSEVfU0laRV9CWVRFUywgTDJfQ0FDSEVfU0laRV9CWVRFUywgTk9OVEVNUE9SQUxfRlJBQ1RJT04pOgoJTmV3IG1hY3Jvcy4KCShzdHJ1Y3QgbWVtX3JlZik6IEFkZCBmaWVsZCByZXVzZV9kaXN0YW5jZS4KCShmaW5kX29yX2NyZWF0ZV9ncm91cCwgcmVjb3JkX3JlZik6IFVzZSBYTkVXIGluc3RlYWQgb2YgeGNhbGxvYy4KCUluaXRpYWxpemUgcmV1c2VfZGlzdGFuY2UgZmllbGQuCgkoaXNzdWVfcHJlZmV0Y2hfcmVmKTogU2VsZWN0IHRlbXBvcmFsaXR5IG9mIHByZWZldGNoIGFjY29yZGluZyB0bwoJcmV1c2VfZGlzdGFuY2UuCgkodm9sdW1lX29mX3JlZmVyZW5jZXMsIHZvbHVtZV9vZl9kaXN0X3ZlY3RvciwgYWRkX3N1YnNjcmlwdF9zdHJpZGVzLAoJc2VsZl9yZXVzZV9kaXN0YW5jZSwgZGV0ZXJtaW5lX2xvb3BfbmVzdF9yZXVzZSk6IE5ldyBmdW5jdGlvbnMuCgkobG9vcF9wcmVmZXRjaF9hcnJheXMpOiBDYWxsIGRldGVybWluZV9sb29wX25lc3RfcmV1c2UuCgkodHJlZV9zc2FfcHJlZmV0Y2hfYXJyYXlzKTogRHVtcCBMMiBjYWNoZSBzaXplLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5vKTogQWRkIFRSRUVfREFUQV9SRUZfSAoJZGVwZW5kZW5jeS4KCjIwMDctMDUtMjkgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtYWxpYXMuYzogQWRkIGFsaWFzaW5nIG92ZXJ2aWV3LgoKMjAwNy0wNS0yOSAgWnV4eSBNZW5nICA8enV4eS5tZW5nQGdtYWlsLmNvbT4KCSAgICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIHRhcmdldC8yOTQ5OAoJKiBjb25maWcvaTM4Ni90LWNydGZtOiBDb21waWxlIGNydGZhc3RtYXRoLm8gd2l0aAoJLW1pbmxpbmUtYWxsLXN0cmluZ29wcy4KCSogY29uZmlnL2kzODYvY3lnd2luLmggKEVOREZJTEVfU1BFQ1MpOiBBZGQgY3J0ZmFzdG1hdGguby4KCSogY29uZmlnL2kzODYvbWluZ3czMi5oIChFTkRGSUxFX1NQRUNTKTogQWRkIGNydGZhc3RtYXRoLm8uCgoyMDA3LTA1LTI4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogZG9jL21kLnRleGk6IERvY3VtZW50IGNvbnN0cmFpbnRzIG9uIEhQIFBBLVJJU0MuCgoJKiBwYS9jb25zdHJhaW50cy5tZDogTmV3IGZpbGUuCgkqIHBhLm1kOiBJbmNsdWRlIGNvbnN0cmFpbnRzLm1kLgoJKiBwYS5jIChjaW50X29rX2Zvcl9tb3ZlKTogQXZvaWQgdXNpbmcgQ09OU1RfT0tfRk9SX0xFVFRFUl9QLgoJKGludGVnZXJfc3RvcmVfbWVtb3J5X29wZXJhbmQsIGxkaWxfY2ludF9wKTogTmV3IGZ1bmN0aW9ucy4KCSogcGEtcHJvdG9zLmggKGludGVnZXJfc3RvcmVfbWVtb3J5X29wZXJhbmQsIGxkaWxfY2ludF9wKTogRGVjbGFyZS4KCSogcGEuaCAoQ09OU1RfT0tfRk9SX0xFVFRFUl9QLCBDT05TVF9ET1VCTEVfT0tfRk9SX0xFVFRFUl9QLAoJSVNfUkVMT0FESU5HX1BTRVVET19QLCBFWFRSQV9DT05TVFJBSU5UKTogUmVtb3ZlLgoJKiBwYTMyLXJlZ3MuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogUmVtb3ZlLgoJKiBwYTY0LXJlZ3MuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogUmVtb3ZlLgoKMjAwNy0wNS0yOCAgQW5kcmV3IFBpbnNraSAgPEFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgYy8zMTMzOQoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCA8Y2FzZSBQUkVJTkNSRU1FTlRfRVhQUiwKCWNhc2UgUE9TVElOQ1JFTUVOVF9FWFBSLCBjYXNlIFBSRURFQ1JFTUVOVF9FWFBSLAoJY2FzZSBQT1NUREVDUkVNRU5UX0VYUFI+KTogUmV0dXJuIHRoZSBlcnJvcl9tYXJrX25vZGUKCWlmIGVpdGhlciB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydHMgd291bGQgYW4KCWVycm9yX21hcmtfbm9kZS4KCjIwMDctMDUtMjggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtZGNlLmMgKGVsaW1pbmF0ZV91bm5lY2Vzc2FyeV9zdG10cyk6IFJlbGVhc2UgTEhTIFNTQQoJbmFtZSB3aGVuIHdlIHJlbW92ZSBpdCBmcm9tIGEgY2FsbC4KCjIwMDctMDUtMjggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfbmFycm93X2JpdGZpZWxkKTogUmVtb3ZlLgoJKiB0YXJnaG9va3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglkZWZhdWx0X25hcnJvd19iaXRmaWVsZC4KCgkqIGxhbmdob29rcy1kZWYuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglob29rX2dldF9hbGlhc19zZXRfMC4KCSogbGFuZ2hvb2tzLmMgKGhvb2tfZ2V0X2FsaWFzX3NldF8wKTogUmVtb3ZlLgoKCSogZ2xvYmFsLmMgKEVYRUNVVEVfSUZfQ09ORkxJQ1QpOiBSZW1vdmUuCgoyMDA3LTA1LTI4ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiB0cmVlLW9wdC8zMjEwMAoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV93YXJudl9wKTogRG9uJ3QKCXJldHVybiB0cnVlIHdoZW4gdHJ1dGhfdmFsdWVfcCBpcyB0cnVlIGFuZCB0aGUgdHlwZQoJaXMgb2Ygc2lnbmVkOjEuCgoyMDA3LTA1LTI4ICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFByZXJlcXVpc2l0ZXMpOiBXZSBubyBsb25nZXIgcmVxdWlyZSBBdXRvY29uZgoJMi4xMyBmb3IgdGhlIHRvcC1sZXZlbC4KCjIwMDctMDUtMjggIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiB0YXJnZXQvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3ZlY3Rvcl9tb3ZlKTogRXhwYW5kIHVuYWxpZ25lZAoJbWVtb3J5IGFjY2VzcyB2aWEgeDg2X2V4cGFuZF92ZWN0b3JfbW92ZV9taXNhbGlnbigpIG9ubHkgZm9yCglUSW1vZGUgdmFsdWVzIG9uIDMyLWJpdCB0YXJnZXRzLgoKMjAwNy0wNS0yOCAgUmF6eWEgTGFkZWxza3kgIDxyYXp5YUBpbC5pYm0uY29tPgoKCSogbWF0cml4LXJlb3JnLmM6IE5ldyBmaWxlLiBJbXBsZW1lbnQgbWF0cml4IGZsYXR0ZW5pbmcgYW5kCgl0cmFuc3Bvc2luZyBvcHRpbWl6YXRpb24uCgkqIHRyZWUtcGFzcy5oOiBBZGQgbWF0cml4IHJlb3JnIHBhc3MuCgkqIGNvbW1vbi5vcHQ6IEFkZCBmaXBhLW1yZW9yZyBmbGFnLgoJKiBNYWtlZmlsZS5pbjogQWRkIG1hdHJpeC1yZW9yZy5jLgoJKiBwYXNzZXMuYzogQWRkIG1hdHJpeCByZW9yZyBwYXNzLgoJKiB2YXJwb29sLmMgKGFkZF9uZXdfc3RhdGljX3Zhcik6IE5ldyBmdW5jdGlvbi4KCSogY2dyYXBoLmggKGFkZF9uZXdfc3RhdGljX3Zhcik6IERlY2xhcmUuCgoyMDA3LTA1LTI3ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBVcGRhdGUKCXNwX29mZnNldCBkZXBlbmRpbmcgb24gc3RhY2sgc2l6ZS4gU2F2ZSByMTIgZGVwZW5kaW5nCglvbiByZWdpc3RlcnMgd2UncmUgc2F2aW5nIGxhdGVyLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogVXBkYXRlIHNwX29mZnNldCBkZXBlbmRpbmcgb25seQoJb24gc3RhY2sgc2l6ZS4KCjIwMDctMDUtMjcgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXZycC5jIChleGVjdXRlX3ZycCk6IERvIG5vdCBjaGVjayB3aGV0aGVyIGN1cnJlbnRfbG9vcHMgPT0gTlVMTC4KCSogdHJlZS1jaHJlYy5jIChldm9sdXRpb25fZnVuY3Rpb25faXNfaW52YXJpYW50X3JlY19wKTogRGl0dG8uCgkqIGlmY3Z0LmMgKGlmX2NvbnZlcnQpOiBEaXR0by4KCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHRocmVhZF9ibG9jayk6IERpdHRvLgoJKHRocmVhZF90aHJvdWdoX2FsbF9ibG9ja3MpOiBEaXR0by4gIEFzc2VydCB0aGF0IGxvb3BzIHdlcmUgYW5hbHlzZWQuCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAocmV3cml0ZV9pbnRvX2xvb3BfY2xvc2VkX3NzYSwKCXZlcmlmeV9sb29wX2Nsb3NlZF9zc2EpOiBDaGVjayBudW1iZXJfb2ZfbG9vcHMgaW5zdGVhZCBvZgoJY3VycmVudF9sb29wcy4KCSogcHJlZGljdC5jICh0cmVlX2VzdGltYXRlX3Byb2JhYmlsaXR5KTogRGl0dG8uCgkqIHRyZWUtaWYtY29udi5jIChtYWluX3RyZWVfaWZfY29udmVyc2lvbik6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLWNoLmMgKGNvcHlfbG9vcF9oZWFkZXJzKTogRGl0dG8uCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUpOiBEaXR0by4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKHNjZXZfY29uc3RfcHJvcCk6IERpdHRvLgoJKHNjZXZfZmluYWxpemUpOiBEbyBub3QgZG8gYW55dGhpbmcgaWYgc2NldiBhbmFseXNpcyB3YXMgbm90Cglpbml0aWFsaXplZC4KCSogY2ZnbG9vcGFuYWwuYyAobWFya19pcnJlZHVjaWJsZV9sb29wcyk6IERvIG5vdCBjaGVjayB3aGV0aGVyCgljdXJyZW50X2xvb3BzID09IE5VTEwuCgkobWFya19sb29wX2V4aXRfZWRnZXMpOiBDaGVjayBudW1iZXJfb2ZfbG9vcHMgaW5zdGVhZCBvZiBjdXJyZW50X2xvb3BzLgoJKiBsb29wLWluaXQuYyAobG9vcF9vcHRpbWl6ZXJfaW5pdCk6IERvIG5vdCBmcmVlIGN1cnJlbnRfbG9vcHMgd2hlbgoJdGhlcmUgYXJlIG5vIGxvb3BzLgoJKGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXplKTogQXNzZXJ0IHRoYXQgbG9vcHMgd2VyZSBhbmFseXplZC4KCShydGxfbW92ZV9sb29wX2ludmFyaWFudHMsIHJ0bF91bnN3aXRjaCwgcnRsX3Vucm9sbF9hbmRfcGVlbF9sb29wcywKCXJ0bF9kb2xvb3ApOiBDaGVjayBudW1iZXJfb2ZfbG9vcHMgaW5zdGVhZCBvZiBjdXJyZW50X2xvb3BzLgoJKiB0cmVlLXNzYS1sb29wLmMgKHRyZWVfbG9vcF9vcHRpbWl6ZXJfaW5pdCk6IERvIG5vdCBjaGVjayB3aGV0aGVyCgljdXJyZW50X2xvb3BzID09IE5VTEwuCgkodHJlZV9zc2FfbG9vcF9pbml0LCB0cmVlX3NzYV9sb29wX2ltLCB0cmVlX3NzYV9sb29wX3Vuc3dpdGNoLAoJZ2F0ZV90cmVlX3ZlY3Rvcml6ZSB0cmVlX2xpbmVhcl90cmFuc2Zvcm0sIGNoZWNrX2RhdGFfZGVwcywKCXRyZWVfc3NhX2xvb3BfaXZjYW5vbiwgdHJlZV9zc2FfZW1wdHlfbG9vcCwgdHJlZV9zc2FfbG9vcF9ib3VuZHMsCgl0cmVlX2NvbXBsZXRlX3Vucm9sbCwgdHJlZV9zc2FfbG9vcF9wcmVmZXRjaCwgdHJlZV9zc2FfbG9vcF9pdm9wdHMpOgoJQ2hlY2sgbnVtYmVyX29mX2xvb3BzIGluc3RlYWQgb2YgY3VycmVudF9sb29wcy4KCSh0cmVlX3NzYV9sb29wX2RvbmUpOiBEbyBub3QgY2hlY2sgd2hldGhlciBjdXJyZW50X2xvb3BzID09IE5VTEwuCgkqIHRyZWUtc3NhLXByZS5jIChmaW5pX3ByZSk6IERvIG5vdCB0YWtlIGRvX2ZyZSBhcmd1bWVudC4gIEFsd2F5cwoJZnJlZSBsb29wcyBpZiBhdmFpbGFibGUuCgkoZXhlY3V0ZV9wcmUpOiBEbyBub3QgcGFzcyBkb19mcmUgdG8gZmluaV9wcmUuCgoyMDA3LTA1LTI3ICBUb2JpYXMgQnVybnVzICA8YnVybnVzQG5ldC1iLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzIwODMKCSogcmVhbC5jIChtcGZyX2Zyb21fcmVhbCk6IEZpeCBzaWduIG9mIC1JbmYuCgoyMDA3LTA1LTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV9jb252ZXJzaW9uKTogSW5pdGlhbGl6ZQoJdHJlZV9jb2RlIHZhcmlhYmxlcyB0byBFUlJPUl9NQVJLLgoJKHZlY3Rvcml6YWJsZV90eXBlX2RlbW90aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX3R5cGVfcHJvbW90aW9uKTogTGlrZXdpc2UuCgoyMDA3LTA1LTI2ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMjA2NQoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtb3Z0aSk6IEhhbmRsZSBwdXNoIG9wZXJhbmRzIHZpYQoJaXg4Nl9leHBhbmRfcHVzaCgpLgoKMjAwNy0wNS0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiYXNpYy1ibG9jay5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgbWVyZ2Vfc2VxX2Jsb2Nrcy4KCSogY2ZnY2xlYW51cC5jIChtZXJnZV9zZXFfYmxvY2tzKTogUmVtb3ZlLgoKCSogdHJlZS1mbG93Lmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBpc19hbGlhc2VkX3dpdGguCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGlzX2FsaWFzZWRfd2l0aCk6IFJlbW92ZS4KCjIwMDctMDUtMjYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfZXhwYW5kX3NzZTRfdW5wYWNrKTogTmV3LgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9zc2U0X3VucGFjayk6IE5ldy4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAodmVjX3VucGFja3VfaGlfdjE2cWkpOiBDYWxsCglpeDg2X2V4cGFuZF9zc2U0X3VucGFjayBpZiBTU0U0LjEgaXMgZW5hYmxlZC4KCSh2ZWNfdW5wYWNrc19oaV92MTZxaSk6IExpa2V3aXNlLgoJKHZlY191bnBhY2t1X2xvX3YxNnFpKTogTGlrZXdpc2UuCgkodmVjX3VucGFja3NfbG9fdjE2cWkpOiBMaWtld2lzZS4KCSh2ZWNfdW5wYWNrdV9oaV92OGhpKTogTGlrZXdpc2UuCgkodmVjX3VucGFja3NfaGlfdjhoaSk6IExpa2V3aXNlLgoJKHZlY191bnBhY2t1X2xvX3Y4aGkpOiBMaWtld2lzZS4KCSh2ZWNfdW5wYWNrc19sb192OGhpKTogTGlrZXdpc2UuCgkodmVjX3VucGFja3VfaGlfdjRzaSk6IExpa2V3aXNlLgoJKHZlY191bnBhY2tzX2hpX3Y0c2kpOiBMaWtld2lzZS4KCSh2ZWNfdW5wYWNrdV9sb192NHNpKTogTGlrZXdpc2UuCgkodmVjX3VucGFja3NfbG9fdjRzaSk6IExpa2V3aXNlLgoKMjAwNy0wNS0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXR5cGVjay5jLCBjb25maWcvYXJtL2FybS5jLCBjb25maWcvZGFyd2luLmMsCgljb25maWcvc2gvc3ltYmlhbi5jLCBnY2MuYywgaXBhLWNwLmMsIGlwYS1pbmxpbmUuYywgbG9vcC1pdi5jLAoJb21lZ2EuYywgdHJlZS1zc2EtbG9vcC1uaXRlci5jLCB0cmVlc3RydWN0LmRlZjogRml4IHR5cG9zIGFuZAoJZm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zIGluIHZhcmlvdXMKCXdhcm5pbmcvZXJyb3IvZGlhZ25vc3RpYyBtZXNzYWdlcy4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYywgY29uZmlnL3BhL3BhLmMsIGNvbmZpZy9zcHUvc3B1LmMsCglkZi1wcm9ibGVtcy5jLCBkZi1zY2FuLmMsIGRvbXdhbGsuYywgZWJpdG1hcC5jLCBlYml0bWFwLmgsCglmb2xkLWNvbnN0LmMsIGdjYy5jLCBpcGEtdHlwZS1lc2NhcGUuYywgb21lZ2EuYywgb21lZ2EuaCwKCXRyZWUtc3NhLWNvYWxlc2NlLmMsIHRyZWUtc3NhLWxpdmUuYywgdHJlZS1zc2Etc3RydWN0YWxpYXMuYywKCXRyZWUtdnJwLmM6IEZpeCBjb21tZW50IHR5cG9zLiAgRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBkb2MvdG0udGV4aTogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKMjAwNy0wNS0yNSAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgdHJlZS1vcHQvMzIwOTAKCSogdHJlZS1zc2EtZm9yd3Byb3AuYwoJKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfaW50b192YXJpYWJsZV9hcnJheV9pbmRleCk6IFJlbW92ZQoJdGhlIGxocyBhcmd1bWVudC4gIFVzZSB0aGUgdHlwZSBvZiBkZWZfcmhzIGluc3RlYWQgb2YgbGhzLgoJKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwcl8xKTogVXBkYXRlIHVzZSBvZgoJZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9pbnRvX3ZhcmlhYmxlX2FycmF5X2luZGV4LgoKMjAwNy0wNS0yNSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoJICAgIE5pZ2VsIFN0ZXBoZW5zICA8bmlnZWxAbWlwcy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYXR0cmlidXRlX3RhYmxlKTogQWRkICJuZWFyIiBhbmQgImZhciIKCWZ1bmN0aW9uIGF0dHJpYnV0ZXMsICJmYXIiIGJlaW5nIGFuIGFsaWFzIGZvciAibG9uZ19jYWxsIi4KCShUQVJHRVRfQ09NUF9UWVBFX0FUVFJJQlVURVMpOiBEZWZpbmUgYXMgbWlwc19jb21wX3R5cGVfYXR0cmlidXRlcy4KCShtaXBzX25lYXJfdHlwZV9wLCBtaXBzX2Zhcl90eXBlX3ApOiBOZXcuCgkobWlwc19jb21wX3R5cGVfYXR0cmlidXRlcyk6IE5ldyBmdW5jdGlvbiB0byBjaGVjayB0aGF0IGF0dHJpYnV0ZXMKCWF0dGFjaGVkIHRvIGEgZnVuY3Rpb24gdHlwZSBhcmUgY29tcGF0aWJsZS4KCShtaXBzX291dHB1dF9taV90aHVuayk6IFRlc3QgU1lNQk9MX1JFRl9MT05HX0NBTExfUCgpIHJhdGhlciB0aGFuCglUQVJHRVRfTE9OR19DQUxMUyB3aGVuIGRlY2lkaW5nCXdoZXRoZXIgd2UgY2FuIGRvIGEgZGlyZWN0IHNpYmNhbGwKCXRvIHRoZSB0YXJnZXQgZnVuY3Rpb24gb2YgdGhlIHRodW5rLgoJKG1pcHNfZW5jb2RlX3NlY3Rpb25faW5mbyk6IENoZWNrIGZvciAibmVhciIgYW5kICJmYXIiIGZ1bmN0aW9uCglhdHRyaWJ1dGVzLCBhbmQgYWx3YXlzIHNldCB0aGUgU1lNQk9MX0ZMQUdfTE9OR19DQUxMIGJpdCBleHBsaWNpdGx5LgoKCSogY29uZmlnL21pcHMvcHJlZGljYXRlcy5tZCAoY29uc3RfY2FsbF9pbnNuX29wZXJhbmQpOiBUZXN0IG9ubHkKCVNZTUJPTF9SRUZfTE9OR19DQUxMX1AoKSBhbmQgbm90IFRBUkdFVF9MT05HX0NBTExTLgoKCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRG9jdW1lbnQgTUlQUyAibmVhciIgYW5kCgkiZmFyIiBhdHRyaWJ1dGVzLgoKCSogdGVzdHN1aXRlL2djYy50YXJnZXQvbWlwcy9uZWFyLWZhci0xLmM6IE5ldyB0ZXN0IGNhc2UuCgkqIHRlc3RzdWl0ZS9nY2MudGFyZ2V0L21pcHMvbmVhci1mYXItMi5jOiBOZXcgdGVzdCBjYXNlLgoJKiB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9taXBzL25lYXItZmFyLTMuYzogTmV3IHRlc3QgY2FzZS4KCSogdGVzdHN1aXRlL2djYy50YXJnZXQvbWlwcy9uZWFyLWZhci00LmM6IE5ldyB0ZXN0IGNhc2UuCgoyMDA3LTA1LTI1ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCSogY29uZmlnLmdjYzogQWRkIGkzODYvdC1mcHJ1bGVzLXNvZnRmcDY0IGFuZCBzb2Z0LWZwL3Qtc29mdGZwCgl0byB4ODYtZGFyd2luIGNvbmZpZ3VyYXRpb25zLgoJKiBjb25maWcvaTM4Ni90LWRhcndpbjogQWRkIHNvZnRmcCBzdXBwb3J0LgoJKiBjb25maWcvaTM4Ni90LWRhcndpbjY0OiBEaXR0by4KCSogY29uZmlnL2kzODYvc2ZwLW1hY2hpbmUuaDogSWYgbWFjaCB0aGVuIGRvbid0IHVzZQoJYWxpYXNpbmcsIGVtaXQgYSBzdHViIHRvIGNhbGwuCgoyMDA3LTA1LTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNmZ2xheW91dC5jLCBjZ3JhcGh1bml0LmMsIGNvbmZpZy9hdnIvYXZyLmMsIGZvbGQtY29uc3QuYywKCWhhaWZhLXNjaGVkLmMsIG9wdGFicy5oLCB0cmVlLWFmZmluZS5jLCB0cmVlLWRhdGEtcmVmLmMsCgl0cmVlLXByZWRjb20uYywgdHJlZS1zc2EtYWxpYXMtd2FybmluZ3MuYywKCXRyZWUtc3NhLWZvcndwcm9wLmMsIHRyZWUtdmVjdC1hbmFseXplLmMsIHRyZWUtdnJwLmM6IEZpeAoJY29tbWVudCB0eXBvcy4gIEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogZG9jL2NwcC50ZXhpLCBkb2MvaW52b2tlLnRleGk6IEZpeCB0eXBvcy4KCjIwMDctMDUtMjYgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzMyMDY1CgkqIHRhcmdldC9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfdmVjdG9yX21vdmUpOiBGb3JjZSBTVUJSRUdzIG9mCgljb25zdGFudHMgaW50byBtZW1vcnkuICBFeHBhbmQgdW5hbGlnbmVkIG1lbW9yeSByZWZlcmVuY2VzIGZvcgoJU1NFIG1vZGVzIHZpYSB4ODZfZXhwYW5kX3ZlY3Rvcl9tb3ZlX21pc2FsaWduKCkgZnVuY3Rpb24uCgoyMDA3LTA1LTI1ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvc3NlLm1kICgqdmVjX2V4dHJhY3R2MmRpXzFfc3NlMik6IERvIG5vdCBjYWxjdWxhdGUKCSJtZW1vcnkiIGF0dHJpYnV0ZSBmb3IgInNzZWlzaGZ0IiB0eXBlIGluc24gd2l0aG91dCBvcGVyYW5kc1syXS4KCjIwMDctMDUtMjUgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgkgICAgTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoKCSogZG9jL2V4dGVuZC50ZXhpIChhbGxvY19zaXplKTogTmV3IGF0dHJpYnV0ZS4KCSogYy1jb21tb24uYyAoaGFuZGxlX2FsbG9jX3NpemVfYXR0cmlidXRlKTogTmV3LgoJKiB0cmVlLW9iamVjdC1zaXplLmMgKGFsbG9jX29iamVjdF9zaXplKTogVXNlIGFsbG9jX3NpemUKCWF0dHJpYnV0ZSwgaWYgYXZhaWxhYmxlLgoKMjAwNy0wNS0yNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YyZGYpOiBNYXJrIGl0Cgl3aXRoIE1BU0tfU1NFMi4KCShfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YyZGkpOiBMaWtld2lzZS4KCShfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Y0c2kpOiBMaWtld2lzZS4KCShfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Y4aGkpOiBMaWtld2lzZS4KCShfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YxNnFpKTogTGlrZXdpc2UuCgkoX19idWlsdGluX2lhMzJfdmVjX3NldF92OGhpKTogTGlrZXdpc2UuCgoyMDA3LTA1LTI1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKCp2ZWNfZXh0cmFjdHYyZGlfMV9zc2UyKTogQ29ycmVjdCBzaGlmdC4KCjIwMDctMDUtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpOiBEZWxldGUuCgkoYXJtX2lzX2xvbmdjYWxsX3ApOiBSZW5hbWUgdG8uLi4KCShhcm1faXNfbG9uZ19jYWxsX3ApOiAuLi50aGlzLiAgVGFrZSBhIHNpbmdsZSB0cmVlIGFyZ3VtZW50IGFuZAoJcmV0dXJuIGEgYm9vbC4KCSogY29uZmlnL2FybS9hcm0uaCAoQ0FMTF9TSE9SVCwgQ0FMTF9MT05HLCBDQUxMX05PUk1BTCk6IERlbGV0ZS4KCShDVU1VTEFUSVZFX0FSR1MpOiBSZW1vdmUgY2FsbF9jb29raWUuCgkoU0hPUlRfQ0FMTF9GTEFHX0NIQVIsIExPTkdfQ0FMTF9GTEFHX0NIQVIsIEVOQ09ERURfU0hPUlRfQ0FMTF9BVFRSX1ApCgkoRU5DT0RFRF9MT05HX0NBTExfQVRUUl9QKTogRGVsZXRlLgoJKEFSTV9OQU1FX0VOQ09ESU5HX0xFTkdUSFMpOiBSZW1vdmUgU0hPUlRfQ0FMTF9GTEFHX0NIQVIgYW5kCglMT05HX0NBTExfRkxBR19DSEFSIGNhc2VzLgoJKEFSTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpOiBEZWxldGUuCgkqIGNvbmZpZy9hcm0vZWxmLmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpOiBEb24ndCB1c2UKCUFSTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pbml0X2N1bXVsYXRpdmVfYXJncyk6IERvbid0IHNldCBjYWxsX2Nvb2tpZS4KCShhcm1fZnVuY3Rpb25fYXJnKTogUmV0dXJuIGNvbnN0MF9ydHggZm9yIFZPSURtb2RlIGFyZ3VtZW50cy4KCShhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlLCBjdXJyZW50X2ZpbGVfZnVuY3Rpb25fb3BlcmFuZCk6IERlbGV0ZS4KCShhcm1fZnVuY3Rpb25faW5fc2VjdGlvbl9wKTogTmV3IGZ1bmN0aW9uLgoJKGFybV9pc19sb25nY2FsbF9wKTogUmVuYW1lIHRvLi4uCgkoYXJtX2lzX2xvbmdfY2FsbF9wKTogLi4udGhpcy4gIFRha2UgdGhlIHRhcmdldCBmdW5jdGlvbiBhcyBhIHNpbmdsZQoJYXJndW1lbnQgYW5kIHJldHVybiBhIGJvb2wuICBEbyBub3QgcmVseSBvbiBjYWxsIGNvb2tpZXMuICBDaGVjawoJd2hldGhlciB0aGUgdGFyZ2V0IHN5bWJvbCBpcyBpbiB0aGUgc2FtZSBzZWN0aW9uIGFzIHRoZSBjdXJyZW50CglmdW5jdGlvbiwgbm90IGp1c3QgdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdC4KCShhcm1fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBVc2UgYXJtX2lzX2xvbmdfY2FsbF9wLgoJKGFybV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRG9uJ3QgZW5jb2RlIGEgY2FsbCB0eXBlLgoJKiBjb25maWcvYXJtL2FybS5tZCAoY2FsbCwgY2FsbF92YWx1ZSk6IFVwZGF0ZSBjYWxscyB0bwoJYXJtX2lzX2xvbmcoXyljYWxsX3AuICBTaW1wbGlmeSBsb2dpYy4KCSgqY2FsbF9zeW1ib2wsICpjYWxsX3ZhbHVlX3N5bWJvbCwgKmNhbGxfaW5zbiwgKmNhbGxfdmFsdWVfaW5zbik6CglVcGRhdGUgY2FsbHMgdG8gYXJtX2lzX2xvbmcoXyljYWxsX3AuCgoyMDA3LTA1LTI1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE5ODIKCSogdHJlZS1zc2EtZm9yd3Byb3AuYwoJKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfaW50b192YXJpYWJsZV9hcnJheV9pbmRleCk6IEhhbmRsZSBhcnJheXMKCXdpdGggZWxlbWVudCBzaXplIG9uZS4KCjIwMDctMDUtMjQgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCSogY29uZmlnL3NwdS9zcHUubWQgKHNtdWxzaTNfaGlnaHBhcnQpOiBVbnNoYXJlIHRoZSBydGwgY2hhaW4uCgkodW11bHNpM19oaWdocGFydCk6IExpa2V3aXNlLgoKMjAwNy0wNS0yNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMyMDY5CgkqIHJlZ2NsYXNzLmMgKHJlZ2NsYXNzKTogRG9uJ3QgY3Jhc2ggaWYgdGhlIGVudHJ5IGluIHJlZ25vX3JlZ19ydHgKCWlzIE5VTEwuCgoyMDA3LTA1LTI0ICBPbGxpZSBXaWxkICA8YWF3QGdvb2dsZS5jb20+CgoJKiBkb2MvY3BwLnRleGkgKENvbW1vbiBQcmVkZWZpbmVkIE1hY3Jvcyk6IEFkZCBfX0NPVU5URVJfXwoJZGVzY3JpcHRpb24uCgoyMDA3LTA1LTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiBwb3N0cmVsb2FkLWdjc2UuYyAocmVnX2NoYW5nZWRfYWZ0ZXJfaW5zbl9wKTogTmV3IGZ1bmN0aW9uLgoJKG9wcnNfdW5jaGFuZ2VkX3ApOiBVc2UgaXQgdG8gY2hlY2sgYWxsIHJlZ2lzdGVycyBpbiBhIFJFRy4KCShyZWNvcmRfb3ByX2NoYW5nZXMpOiBMb29rIGZvciBjbG9iYmVycyBpbiBDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UuCgkocmVnX3NldF9iZXR3ZWVuX2FmdGVyX3JlbG9hZF9wKTogRGVsZXRlLgoJKHJlZ191c2VkX2JldHdlZW5fYWZ0ZXJfcmVsb2FkX3ApOiBMaWtld2lzZS4KCShyZWdfc2V0X29yX3VzZWRfc2luY2VfYmJfc3RhcnQpOiBMaWtld2lzZS4KCShlbGltaW5hdGVfcGFydGlhbGx5X3JlZHVuZGFudF9sb2FkKTogVXNlIHJlZ19jaGFuZ2VkX2FmdGVyX2luc25fcAoJYW5kIHJlZ191c2VkX2JldHdlZW5fcCBpbnN0ZWFkIG9mIHJlZ19zZXRfb3JfdXNlZF9zaW5jZV9iYl9zdGFydC4KCVVzZSByZWdfc2V0X2JldHdlZW5fcCBpbnN0ZWFkIG9mIHJlZ19zZXRfYmV0d2Vlbl9hZnRlcl9yZWxvYWRfcC4KCSogcnRsYW5hbC5jIChyZWdfc2V0X3ApOiBDaGVjayB3aGV0aGVyIFJFRyBvdmVybGFwcwoJcmVnc19pbnZhbGlkYXRlZF9ieV9jYWxsLCByYXRoZXIgdGhhbiBqdXN0IGNoZWNraW5nIHRoZQoJbWVtYmVyc2hpcCBvZiBSRUdOTyAoUkVHKS4KCjIwMDctMDUtMjQgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBkb2MvcGFzc2VzLnRleGk6IERvY3VtZW50IHByZWRpY3RpdmUgY29tbW9uaW5nLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mcHJlZGljdGl2ZS1jb21tb25pbmcpOiBEb2N1bWVudC4KCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IEVuYWJsZSBmbGFnX3ByZWRpY3RpdmVfY29tbW9uaW5nIG9uIC1PMy4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChnZXRfbHNtX3RtcF9uYW1lKTogRXhwb3J0LiAgQWxsb3cKCWFkZGluZyBpbmRpY2VzIHRvIHRoZSBnZW5lcmF0ZWQgbmFtZS4KCShzY2hlZHVsZV9zbSk6IFBhc3MgMCB0byBnZXRfbHNtX3RtcF9uYW1lLgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHN0bXRfZG9taW5hdGVzX3N0bXRfcCk6IEV4cG9ydC4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAob3Bfc3ltYm9sXzEpOiBSZW5hbWVkIHRvIC4uLgoJKG9wX3N5bWJvbF9jb2RlKTogLi4uIGFuZCBleHBvcnRlZC4KCShkdW1wX29tcF9jbGF1c2UsIG9wX3N5bWJvbCk6IFVzZSBvcF9zeW1ib2xfY29kZQoJaW5zdGVhZCBvZiBvcF9zeW1ib2xfMS4KCSogdHJlZS1wYXNzLmggKHBhc3NfcHJlZGNvbSk6IERlY2xhcmUuCgkqIHRpbWV2YXIuZGVmIChUVl9QUkVEQ09NKTogTmV3IHRpbWV2YXIuCgkqIHRyZWUtc3NhLWxvb3AuYyAocnVuX3RyZWVfcHJlZGljdGl2ZV9jb21tb25pbmcsCglnYXRlX3RyZWVfcHJlZGljdGl2ZV9jb21tb25pbmcsIHBhc3NfcHJlZGNvbSk6IE5ldy4KCSogdHJlZS1kYXRhLXJlZi5jIChmaW5kX2RhdGFfcmVmZXJlbmNlc19pbl9sb29wKTogRmluZCB0aGUKCXJlZmVyZW5jZXMgaW4gZG9taW5hbmNlIG9yZGVyLgoJKGNhbm9uaWNhbGl6ZV9iYXNlX29iamVjdF9hZGRyZXNzKTogRW5zdXJlIHRoYXQgdGhlIHJlc3VsdCBoYXMKCXBvaW50ZXIgdHlwZS4KCShkcl9hbmFseXplX2lubmVybW9zdCk6IEV4cG9ydC4KCShjcmVhdGVfZGF0YV9yZWYpOiBDb2RlIHRvIGZhaWwgZm9yIHJlZmVyZW5jZXMgd2l0aCBpbnZhcmlhbnQKCWFkZHJlc3MgbW92ZWQgLi4uCgkoZmluZF9kYXRhX3JlZmVyZW5jZXNfaW5fc3RtdCk6IC4uLiBoZXJlLgoJKiB0cmVlLWRhdGEtcmVmLmggKGRyX2FuYWx5emVfaW5uZXJtb3N0KTogRGVjbGFyZS4KCSogdHJlZS1hZmZpbmUuYzogSW5jbHVkZSB0cmVlLWdpbXBsZS5oIGFuZCBoYXNodGFiLmguCgkoYWZmX2NvbWJpbmF0aW9uX2ZpbmRfZWx0LCBuYW1lX2V4cGFuc2lvbl9oYXNoLAoJbmFtZV9leHBhbnNpb25fZXEsIHRyZWVfdG9fYWZmX2NvbWJpbmF0aW9uX2V4cGFuZCwKCWRvdWJsZV9pbnRfY29uc3RhbnRfbXVsdGlwbGVfcCwgYWZmX2NvbWJpbmF0aW9uX2NvbnN0YW50X211bHRpcGxlX3ApOgoJTmV3IGZ1bmN0aW9ucy4KCSogdHJlZS1hZmZpbmUuaCAoYWZmX2NvbWJpbmF0aW9uX2NvbnN0YW50X211bHRpcGxlX3AsCgl0cmVlX3RvX2FmZl9jb21iaW5hdGlvbl9leHBhbmQpOiBEZWNsYXJlLgoJKiB0cmVlLXByZWRjb20uYzogTmV3IGZpbGUuCgkqIGNvbW1vbi5vcHQgKGZwcmVkaWN0aXZlLWNvbW1vbmluZyk6IE5ldyBvcHRpb24uCgkqIHRyZWUtZmxvdy5oIChvcF9zeW1ib2xfY29kZSwgdHJlZV9wcmVkaWN0aXZlX2NvbW1vbmluZywKCXN0bXRfZG9taW5hdGVzX3N0bXRfcCwgZ2V0X2xzbV90bXBfbmFtZSk6IERlY2xhcmUuCgkqIE1ha2VmaWxlLmluICh0cmVlLXByZWRjb20ubyk6IEFkZC4KCSh0cmVlLWFmZmluZS5vKTogQWRkIFRSRUVfR0lNUExFX0ggZGVwZW5kZW5jeS4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBkY2Vsb29wIGFmdGVyCgljb3B5IHByb3BhZ2F0aW9uIGluIGxvb3Agb3B0aW1pemVyLiAgQWRkIHByZWRpY3RpdmUgY29tbW9uaW5nCgl0byBsb29wIG9wdGltaXplciBwYXNzZXMuCgoyMDA3LTA1LTI0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9NQU5HTEVfREVDTF9BU1NFTUJMRVJfTkFNRSk6IENvcnJlY3QKCWRlZmF1bHQgaG9vay4KCjIwMDctMDUtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdlbmdlbnJ0bC5jIChnZW5kZWNsLCBnZW5kZWYpOiBPdXRwdXQgdGhlIGdlbnMgYW5ub3RhdGVkIGZvcgoJc3RhdGlzdGljcy4KCShnZW5oZWFkZXIpOiBJbmNsdWRlIHN0YXRpc3RpY3MuaC4KCgkqIGRvYy9pbnZva2UudGV4aSAoLWZkdW1wLXVubnVtYmVyZWQpOiBVcGRhdGUgZG9jcyB3aGVuIGxpbmUgbnVtYmVyCglub3RlcyBhcmUgZ29uZS4KCSogcHJpbnQtcnRsLmMgKGZsYWdfZHVtcF91bm51bWJlcmVkKTogVXBkYXRlIGNvbW1lbnRzLgoJKHByaW50X3J0bCk6IEZpeCBteSBwcmV2aW91cyBjaGFuZ2UuCgkqIGVtaXQtcnRsLmMgKGVtaXRfbm90ZV9iZWZvcmUsIGVtaXRfbm90ZV9hZnRlcik6IENsZWFyIG91dCBub3RlCglzcGVjaWZpYyBkYXRhLgoKMjAwNy0wNS0yNCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBtaWRkbGUtZW5kLzMyMDE4CgkqIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jICh0aHJlYWRfdGhyb3VnaF9sb29wX2hlYWRlcik6IFVzZQoJc2V0X2xvb3BfY29weS4KCSh0aHJlYWRfdGhyb3VnaF9hbGxfYmxvY2tzKTogQ2FsbCBpbml0aWFsaXplX29yaWdpbmFsX2NvcHlfdGFibGVzCglhbmQgZnJlZV9vcmlnaW5hbF9jb3B5X3RhYmxlcy4KCSogY2ZnbG9vcG1hbmlwLmMgKGR1cGxpY2F0ZV9sb29wLCBkdXBsaWNhdGVfbG9vcF90b19oZWFkZXJfZWRnZSk6CglVc2Ugc2V0X2xvb3BfY29weS4KCSogdHJlZS1jZmcuYyAodHJlZV9kdXBsaWNhdGVfc2VzZV9yZWdpb24pOiBEaXR0by4KCSogY2ZnaG9va3MuYyAoZHVwbGljYXRlX2Jsb2NrKTogVXNlIGdldF9sb29wX2NvcHkuCgkqIGNmZy5jOiBJbmNsdWRlIGNmZ2xvb3AuaC4KCShsb29wX2NvcHkpOiBOZXcgaGFzaCB0YWJsZS4KCShpbml0aWFsaXplX29yaWdpbmFsX2NvcHlfdGFibGVzKTogSW5pdGlhbGl6ZSBsb29wX2NvcHkgdGFibGUuCgkoZnJlZV9vcmlnaW5hbF9jb3B5X3RhYmxlcyk6IEZyZWUgbG9vcF9jb3B5IHRhYmxlLgoJKGNvcHlfb3JpZ2luYWxfdGFibGVfY2xlYXIsIGNvcHlfb3JpZ2luYWxfdGFibGVfc2V0LAoJc2V0X2xvb3BfY29weSwgZ2V0X2xvb3BfY29weSk6IE5ldyBmdW5jdGlvbnMuCgkoc2V0X2JiX29yaWdpbmFsLCBzZXRfYmJfY29weSk6IFVzZSBjb3B5X29yaWdpbmFsX3RhYmxlX3NldC4KCSogY2ZnbG9vcC5oIChzdHJ1Y3QgbG9vcCk6IFJlbW92ZSBjb3B5IGZpZWxkLgoJKiBNYWtlZmlsZS5pbiAoY2ZnLm8pOiBBZGQgQ0ZHTE9PUF9IIGRlcGVuZGVuY3kuCgkqIGJhc2ljLWJsb2NrLmggKHNldF9sb29wX2NvcHksIGdldF9sb29wX2NvcHkpOiBEZWNsYXJlLgoKMjAwNy0wNS0yNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgU1NFNC4xIGZvcgoJLW1zc2UvLW1zc2UyLy1tc3NlMy4KCjIwMDctMDUtMjQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBNYXJrCglfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3YyZGkgd2l0aCBNQVNLXzY0QklULgoKMjAwNy0wNS0yNCAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMjcwNjcKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9NQU5HTEVfREVDTF9BU1NFTUJMRVJfTkFNRSk6IERvY3VtZW50LgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9tYW5nbGVfZGVjbF9hc3NlbWJsZXJfbmFtZSk6IERlY2xhcmUKCWRlZmF1bHQgaG9vay4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfbWFuZ2xlX2RlY2xfYXNzZW1ibGVyX25hbWUpOiBEZWZpbmUKCWRlZmF1bHQgaG9vay4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfTUFOR0xFX0RFQ0xfQVNTRU1CTEVSX05BTUUpIE5ldy4gU2V0IHRvCglkZWZhdWx0IGhvb2suCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBtYW5nbGVfZGVjbF9hc3NlbWJsZXJfbmFtZSBmaWVsZC4KCSogbGFuZ2hvb2tzLmMgKGxoZF9zZXRfZGVjbF9hc3NlbWJsZXJfbmFtZSk6IENhbGwKCXRhcmdldG0ubWFuZ2xlX2RlY2xfYXNzZW1ibGVyX25hbWUgZm9yIG5hbWVzIHdpdGggZ2xvYmFsIHNjb3BlLgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChUQVJHRVRfTUFOR0xFX0RFQ0xfQVNTRU1CTEVSX05BTUUpIE92ZXJyaWRlCglkZWZhdWx0LgoJKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMpOiBTaW1wbGlmeSB0byB1c2UgREVDTF9BU1NFTUJMRVJfTkFNRS4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaTM4Nl9wZV9tYW5nbGVfZGVjbF9hc3NlbWJsZXJfbmFtZSk6CglEZWNsYXJlLgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX21heWJlX21hbmdsZV9kZWNsX2Fzc2VtYmxlcl9uYW1lKToKCU5ldy4gRmFjdG9yZWQgb3V0IG9mIGkzODZfcGVfZW5jb2RlX3NlY3Rpb25faW5mby4KCShnZW5fc3RkY2FsbF9vcl9mYXN0Y2FsbF9zdWZmaXgpOiBHZXQgbmFtZSBpZGVudGlmaWVyIGFzIGFyZ3VtZW50LgoJTW92ZSBjaGVjayBmb3IgcHJpb3IgZGVjb3JhdGlvbiBvZiBzdGRjYWxsCglzeW1ib2xzIHRvIGkzODZfcGVfZW5jb2RlX3NlY3Rpb25faW5mby4KCShpMzg2X3BlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBBZGp1c3QgY2FsbCB0bwoJZ2VuX3N0ZGNhbGxfb3JfZmFzdGNhbGxfc3VmZml4LiAgVXNlCglpMzg2X3BlX21heWJlX21hbmdsZV9kZWNsX2Fzc2VtYmxlcl9uYW1lLCBpZiBuZWVkZWQuCgkoaTM4Nl9wZV9tYW5nbGVfZGVjbF9hc3NlbWJsZXJfbmFtZSk6IE5ldy4gV3JhcAoJaTM4Nl9wZV9tYXliZV9tYW5nbGVfZGVjbF9hc3NlbWJsZXJfbmFtZS4KCjIwMDctMDUtMTYgIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxlc3BpbmRvbGFAZ29vZ2xlLmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogRGVsYXkgdGhlIGNoZWNrIGZvcgoJSU5URUdSQUxfVFlQRV9QIGFuZCBUWVBFX1VOU0lHTkVELgoJKiBsYW5naG9va3MuYyAoZ2V0X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogRG9uJ3QgY2hlY2sgZm9yCglJTlRFR1JBTF9UWVBFX1Agb3IgVFlQRV9VTlNJR05FRC4KCShsaGRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBDaGVjayBmb3IgSU5URUdSQUxfVFlQRV9QIGFuZAoJVFlQRV9VTlNJR05FRC4KCjIwMDctMDUtMjMgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOaWdlbCBTdGVwaGVucyAgPG5pZ2VsQG1pcHMuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCUZpeCB1cCBNSVBTMTYgaGFyZCBmbG9hdCBhbmQgYWRkIHN1cHBvcnQgZm9yIGNvbXBsZXguCgoJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9IQVJEX0ZMT0FUX0FCSSk6IE5ldy4KCShUQVJHRVRfU09GVF9GTE9BVF9BQkkpOiBOZXcuCgkoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19taXBzX2hhcmRfZmxvYXQgYW5kCglfX21pcHNfc29mdF9mbG9hdCB0byByZWZsZWN0IHRoZSBBQkkgaW4gdXNlLCBub3Qgd2hldGhlciB0aGUKCUZQVSBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIChlLmcuLCBpbiBNSVBTMTYgbW9kZSkuCgkoVU5JVFNfUEVSX0hXRlBWQUxVRSk6IFVzZSBUQVJHRVRfU09GVF9GTE9BVF9BQkkuCgkoVU5JVFNfUEVSX0ZQVkFMVUUpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19leHBhbmRfY2FsbCk6IFJlbW92ZSByZWR1bmRhbnQKCVRBUkdFVF9NSVBTMTYgY2hlY2suCgkobWlwc19hcmdfcmVnbm8pOiBOZXcuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBXaGVuIHNldHRpbmcgYml0cyBpbiBjdW0tPmZwX2NvZGUgZm9yCglNSVBTMTYsIGRvbid0IHN1YnRyYWN0IDEgZnJvbSBjdW0tPmFyZ19udW1iZXIsIHNpbmNlIGl0IGlzIG5vdwoJemVyby1iYXNlZC4KCShmdW5jdGlvbl9hcmcpOiBVc2UgbWlwc19hcmdfcmVnbm8uCgkobWlwc19yZXR1cm5fbW9kZV9pbl9mcHJfcCk6IE5ldy4KCShtaXBzMTZfY2FsbF9zdHViX21vZGVfc3VmZml4KTogTmV3LgoJKG1pcHMxNl9jZnVuX3JldHVybnNfaW5fZnByX3ApOiBOZXcuCgkobWlwc19zYXZlX3JlZ19wKTogVXNlIG1pcHMxNl9jZnVuX3JldHVybnNfaW5fZnByX3AuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBUZXN0IG1pcHMxNl9oYXJkX2Zsb2F0LCBub3QKCSFUQVJHRVRfU09GVF9GTE9BVCwgdG8gZGVjaWRlIHdoZW4gYSBmdW5jdGlvbiBzdHViIGlzIHJlcXVpcmVkLgoJKG1pcHNfZXhwYW5kX2VwaWxvZ3VlKTogQ2FsbCBNSVBTMTYgaGVscGVyIHJvdXRpbmVzIHRvIGNvcHkKCXJldHVybiB2YWx1ZSBpbnRvIGEgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIuCgkobWlwc19jYW5fdXNlX3JldHVybl9pbnNuKTogVXNlIG1pcHMxNl9jZnVuX3JldHVybnNfaW5fZnByX3AuCgkobWlwc19mdW5jdGlvbl92YWx1ZSk6IFJld3JpdGUgdG8gdXNlIG1pcHNfcmV0dXJuX21vZGVfaW5fZnByX3AuCgkobWlwczE2X2ZwX2FyZ3MpOiBIYW5kbGUgTUlQUzMycjIgSVNBIHdoaWNoIHN1cHBvcnRzCglUQVJHRVRfRkxPQVQ2NCwgYW5kIHVzZSBtZmhjMS9tdGhjMSB0byBjb3B5IHRoZSBtb3N0IHNpZ25pZmljYW50Cgl3b3JkIG9mIGRvdWJsZSBhcmd1bWVudHMgZnJvbSBvciB0byB0aGUgaGlnaCBiaXRzIG9mIDY0LWJpdAoJZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgoJKGJ1aWxkX21pcHMxNl9mdW5jdGlvbl9zdHViKTogRmlsbCBpbiBERUNMX1JFU1VMVCBmb3Igc3R1YmRlY2wuCgkobWlwczE2X2ZwcmV0X2RvdWJsZSk6IE5ldyBoZWxwZXIgZnVuY3Rpb24uCgkoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IFVzZSBtaXBzMTZfcmV0dXJuX21vZGVfaW5fZnByX3AuICBBZGQKCXN1cHBvcnQgZm9yIGNvbXBsZXggbW9kZXMuICBGaWxsIGluIERFQ0xfUkVTVUxUIGZvciBzdHViZGVjbC4KCShtaXBzX2luaXRfbGliZnVuY3MpOiBSZW1vdmUgcmVkdW5kYW50IFRBUkdFVF9NSVBTMTYgY2hlY2suCgoJKiBjb25maWcvbWlwcy9taXBzMTYuUwoJKFJFVCwgQVJHMSwgQVJHMik6IE5ldy4KCShNRVJHRV9HUFJmLCBNRVJHRV9HUFJ0KTogTmV3LgoJKERFTEFZdCwgREVMQVlmKTogTmV3LgoJKE1PVkVfU0ZfQllURTAsIE1PVkVfU0lfQllURTApOiBOZXcuCgkoTU9WRV9TRl9CWVRFNCwgTU9WRV9TRl9CWVRFOCk6IE5ldy4KCShNT1ZFX0RGX0JZVEUwLCBNT1ZFX0RGX0JZVEU4KTogTmV3LgoJKE1PVkVfU0ZfUkVULCBNT1ZFX1NDX1JFVCwgTU9WRV9ERl9SRVQsIE1PVkVfRENfUkVULCBNT1ZFX1NJX1JFVCk6IE5ldy4KCShTRk9QKTogUmVuYW1lZCB0by4uLgoJKE9QU0YzKTogVGhpcywgYW5kIG1hY3JvLWlmaWVkLiAgVXBkYXRlZCBhbGwgdXNlcy4KCShTRk9QMik6IFJlbmFtZWQgdG8uLi4KCShPUFNGMik6IFRoaXMsIGFuZCBtYWNyby1pZmllZC4gIFVwZGF0ZWQgYWxsIHVzZXMuCgkoU0ZDTVApOiBSZW5hbWVkIHRvLi4uCgkoQ01QU0YpOiBUaGlzLCBhbmQgbWFjcm8taWZpZWQuICBVcGRhdGVkIGFsbCB1c2VzLgoJKFNGUkVWQ01QKTogUmVuYW1lZCB0by4uLgoJKFJFVkNNUFNGKTogVGhpcywgYW5kIG1hY3JvLWlmaWVkLiAgVXBkYXRlZCBhbGwgdXNlcy4KCShfX21pcHMxNl9mbG9hdHNpc2YsIF9fbWlwczE2X2ZpeF90cnVuY3Nmc2kpOiBNYWNyby1pZmllZC4KCShMRERCTDEsIExEREJMMiwgUkVUREJMKTogRGVsZXRlZC4KCShERk9QKTogUmVuYW1lZCB0by4uLgoJKE9QREYzKTogVGhpcywgYW5kIG1hY3JvLWlmaWVkLiAgVXBkYXRlZCBhbGwgdXNlcy4KCShERk9QMik6IFJlbmFtZWQgdG8uLi4KCShPUERGMik6IFRoaXMsIGFuZCBtYWNyby1pZmllZC4gIFVwZGF0ZWQgYWxsIHVzZXMuCgkoX19taXBzMTZfZXh0ZW5kc2ZkZjIsIF9fbWlwczE2X3RydW5jZGZzZjIpOiBNYWNyby1pZmllZC4KCShERkNNUCk6IFJlbmFtZWQgdG8uLi4KCShDTVBERik6IFRoaXMsIGFuZCBtYWNyby1pZmllZC4gIFVwZGF0ZWQgYWxsIHVzZXMuCgkoREZSRVZDTVApOiBSZW5hbWVkIHRvLi4uCgkoUkVWQ01QREYpOiBUaGlzLCBhbmQgbWFjcm8taWZpZWQuICBVcGRhdGVkIGFsbCB1c2VzLgoJKF9fbWlwczE2X2Zsb2F0c2lkZiwgX19taXBzMTZfZml4X3RydW5jZGZzaSk6IE1hY3JvLWlmaWVkLgoJKFJFVF9GVU5DVElPTik6IE5ldy4KCShfX21pcHMxNl9yZXRfc2YsIF9fbWlwczE2X3JldF9kZik6IE1hY3JvLWlmaWVkLgoJKF9fbWlwczE2X3JldF9zYywgX19taXBzMTZfcmV0X2RjKTogTmV3LgoJKFNUVUJfQVJHU18wLCBTVFVCX0FSR1NfMSwgU1RVQl9BUkdTXzUsIFNUVUJfQVJHU185LCBTVFVCX0FSR1NfMiwKCVNUVUJfQVJHU182LCBTVFVCX0FSR1NfMTApOiBOZXcuCgkoQ0FMTF9TVFVCX05PX1JFVCk6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfMSk6IE1hY3JvLWlmaWVkLgoJKF9fbWlwczE2X2NhbGxfc3R1Yl81KTogTWFjcm8taWZpZWQuCgkoX19taXBzMTZfY2FsbF9zdHViXzIpOiBNYWNyby1pZmllZC4KCShfX21pcHMxNl9jYWxsX3N0dWJfNik6IE1hY3JvLWlmaWVkLgoJKF9fbWlwczE2X2NhbGxfc3R1Yl85KTogTWFjcm8taWZpZWQuCgkoX19taXBzMTZfY2FsbF9zdHViXzEwKTogTWFjcm8taWZpZWQuCgkoQ0FMTF9TVFVCX1JFVCk6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2ZfMCk6IE1hY3JvLWlmaWVkLgoJKF9fbWlwczE2X2NhbGxfc3R1Yl9zZl8xKTogTWFjcm8taWZpZWQuCgkoX19taXBzMTZfY2FsbF9zdHViX3NmXzUpOiBNYWNyby1pZmllZC4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2ZfMik6IE1hY3JvLWlmaWVkLgoJKF9fbWlwczE2X2NhbGxfc3R1Yl9zZl82KTogTWFjcm8taWZpZWQuCgkoX19taXBzMTZfY2FsbF9zdHViX3NmXzkpOiBNYWNyby1pZmllZC4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2ZfMTApOiBNYWNyby1pZmllZC4KCShfX21pcHMxNl9jYWxsX3N0dWJfZGZfMCk6IE1hY3JvLWlmaWVkLgoJKF9fbWlwczE2X2NhbGxfc3R1Yl9kZl8xKTogTWFjcm8taWZpZWQuCgkoX19taXBzMTZfY2FsbF9zdHViX2RmXzUpOiBNYWNyby1pZmllZC4KCShfX21pcHMxNl9jYWxsX3N0dWJfZGZfMik6IE1hY3JvLWlmaWVkLgoJKF9fbWlwczE2X2NhbGxfc3R1Yl9kZl82KTogTWFjcm8taWZpZWQuCgkoX19taXBzMTZfY2FsbF9zdHViX2RmXzkpOiBNYWNyby1pZmllZC4KCShfX21pcHMxNl9jYWxsX3N0dWJfZGZfMTApOiBNYWNyby1pZmllZC4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2NfMCk6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2NfMSk6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2NfNSk6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2NfMik6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2NfNik6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2NfOSk6IE5ldy4KCShfX21pcHMxNl9jYWxsX3N0dWJfc2NfMTApOiBOZXcuCgkoX19taXBzMTZfY2FsbF9zdHViX2RjXzApOiBOZXcuCgkoX19taXBzMTZfY2FsbF9zdHViX2RjXzEpOiBOZXcuCgkoX19taXBzMTZfY2FsbF9zdHViX2RjXzUpOiBOZXcuCgkoX19taXBzMTZfY2FsbF9zdHViX2RjXzIpOiBOZXcuCgkoX19taXBzMTZfY2FsbF9zdHViX2RjXzYpOiBOZXcuCgkoX19taXBzMTZfY2FsbF9zdHViX2RjXzkpOiBOZXcuCgkoX19taXBzMTZfY2FsbF9zdHViX2RjXzEwKTogTmV3LgoKCSogY29uZmlnL21pcHMvdC1lbGYgKExJQjFBU01GVU5DUyk6IEFkZCBNSVBTMTYgZmxvYXRpbmctcG9pbnQgc3R1YnMuCgkqIGNvbmZpZy9taXBzL3QtaXNhMzI2NCAoTElCMUFTTUZVTkNTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL3QtcjI5MDAgKExJQjFBU01GVU5DUyk6IExpa2V3aXNlLgoKMjAwNy0wNS0yMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoSW52b2tpbmcgR0NDKTogRG9jdW1lbnQgdGhhdCB0aGUgb3JkZXIgb2YgdGhlCgktbCBvcHRpb24gbWF0dGVycy4KCjIwMDctMDUtMjMgIENoZW4gTGlxaW4gIDxsaXFpbkBzdW5ub3J0aC5jb20uY24+CgoJUFIgdGFyZ2V0LzMwOTg3CgkqIGNvbmZpZy9zY29yZS9taXNjLm1kIChiaXRjbHJfYywgYml0c2V0X2MsIGJpdHRnbF9jKTogUmVtb3ZlLgoJKiBjb25maWcvc2NvcmUvcHJlZGljYXRlLm1kIChjb25zdF9wb3cyLCBjb25zdF9ucG93Mik6IFJlbW92ZS4KCSogY29uZmlnL3Njb3JlL3Njb3JlLmggKEFTTV9PVVRQVVRfRVhURVJOQUwpOiBBZGQgQVNNX09VVFBVVF9FWFRFUk5BTAoJdW5kZWYuCgoJUFIgdGFyZ2V0LzMwNDc0CgkqIGNvbmZpZy9zY29yZS9zY29yZS5jIChzY29yZV9wcmludF9vcGVyYW5kKTogTWFrZSBzdXJlIHRoYXQgb25seQoJbG93ZXIgYml0cyBhcmUgdXNlZC4KCjIwMDctMDUtMjIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiB0cmVlLXZycC5jIChhdm9pZF9vdmVyZmxvd19pbmZpbml0eSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24sCglicm9rZW4gb3V0IG9mIHNldF92YWx1ZV9yYW5nZV90b192YWx1ZS4KCShzZXRfdmFsdWVfcmFuZ2VfdG9fdmFsdWUpOiBDYWxsIGF2b2lkX292ZXJmbG93X2luZmluaXR5LgoJKGV4dHJhY3RfcmFuZ2VfZnJvbV9hc3NlcnQpOiBMaWtld2lzZS4KCjIwMDctMDUtMjIgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzEwOTUKCSAqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbW1vdmVfYXJncyk6IFN0cmlwIG5vcHMgdGhhdCBkb24ndAoJY2hhbmdlIHRoZSB0eXBlIGJlZm9yZSBsb29raW5nIGZvciBhIENPTVBPVU5EX0VYUFIuCgoyMDA3LTA1LTIyICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogbG93ZXItc3VicmVnLmMgKGRlY29tcG9zZV9tdWx0aXdvcmRfc3VicmVncyk6IElmIHdlIGNoYW5nZSBhbgoJaW5zbiwgY2FsbCByZW1vdmVfcmV0dmFsX25vdGUgb24gaXQuCgoyMDA3LTA1LTIyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQG5pbGRyYW0uY28udWs+CgoJKiByZWdzLmggKGVuZF9oYXJkX3JlZ25vKTogTmV3IGZ1bmN0aW9uLgoJKEVORF9IQVJEX1JFR05PLCBFTkRfUkVHTk8pOiBOZXcgbWFjcm9zLgoJKGFkZF90b19oYXJkX3JlZ19zZXQpOiBOZXcgZnVuY3Rpb24uCgkocmVtb3ZlX2Zyb21faGFyZF9yZWdfc2V0KTogTGlrZXdpc2UuCgkoaW5faGFyZF9yZWdfc2V0X3ApOiBMaWtld2lzZS4KCShvdmVybGFwc19oYXJkX3JlZ19zZXRfcCk6IExpa2V3aXNlLgoJKiBidC1sb2FkLmMgKGZpbmRfYnRyX3JlZmVyZW5jZSk6IFVzZSBvdmVybGFwc19oYXJkX3JlZ19zZXRfcC4KCShub3RlX2J0cl9zZXQpOiBVc2UgRU5EX0hBUkRfUkVHTk8uCgkqIGNhbGxlci1zYXZlLmMgKHNldHVwX3NhdmVfYXJlYXMpOiBVc2UgZW5kX2hhcmRfcmVnbm8uCgkobWFya19zZXRfcmVncyk6IFVzZSBFTkRfSEFSRF9SRUdOTy4KCShhZGRfc3RvcmVkX3JlZ3MpOiBVc2UgZW5kX2hhcmRfcmVnbm8uCgkobWFya19yZWZlcmVuY2VkX3JlZ3MpOiBVc2UgYWRkX3RvX2hhcmRfcmVnX3NldC4KCSogY29tYmluZS5jICh1cGRhdGVfdGFibGVfdGljayk6IFVzZSBFTkRfUkVHTk8uCgkocmVjb3JkX3ZhbHVlX2Zvcl9yZWcpOiBMaWtld2lzZS4KCShyZWNvcmRfZGVhZF9hbmRfc2V0X3JlZ3MpOiBMaWtld2lzZS4KCShnZXRfbGFzdF92YWx1ZV92YWxpZGF0ZSk6IExpa2V3aXNlLgoJKHVzZV9jcm9zc2VzX3NldF9wKTogTGlrZXdpc2UuCgkocmVnX2RlYWRfYXRfcF8xKTogTGlrZXdpc2UuCgkocmVnX2RlYWRfYXRfcCk6IExpa2V3aXNlLgoJKG1hcmtfdXNlZF9yZWdzX2NvbWJpbmUpOiBVc2UgYWRkX3RvX2hhcmRfcmVnX3NldC4KCShtb3ZlX2RlYXRocyk6IFVzZSBFTkRfSEFSRF9SRUdOTy4KCShyZWdfYml0ZmllbGRfdGFyZ2V0X3ApOiBVc2UgZW5kX2hhcmRfcmVnbm8uCgkoZGlzdHJpYnV0ZV9ub3Rlcyk6IFVzZSBFTkRfSEFSRF9SRUdOTy4KCSogY3NlLmMgKG1lbnRpb25fcmVncyk6IFVzZSBFTkRfUkVHTk8uCgkoaW5zZXJ0KTogVXNlIGFkZF90b19oYXJkX3JlZ19zZXQuCgkoaW52YWxpZGF0ZSk6IFVzZSBFTkRfSEFSRF9SRUdOTy4KCShpbnZhbGlkYXRlX2Zvcl9jYWxsKTogTGlrZXdpc2UuCgkoZXhwX2VxdWl2X3ApOiBVc2UgRU5EX1JFR05PLgoJKGNzZV9pbnNuKTogTGlrZXdpc2UuCgkqIGNzZWxpYi5jIChjc2VsaWJfaW52YWxpZGF0ZV9yZWdubyk6IFVzZSBlbmRfaGFyZF9yZWduby4KCSogZGYtcHJvYmxlbXMuYyAoZGZfdXJlY19tYXJrX3JlZ19jaGFuZ2UpOiBVc2UgRU5EX0hBUkRfUkVHTk8uCgkqIGRmLXNjYW4uYyAoZGZfcmVmX3JlY29yZCk6IFVzZSBFTkRfSEFSRF9SRUdOTy4KCSogZnVuY3Rpb24uYyAoa2VlcF9zdGFja19kZXByZXNzZWQpOiBVc2UgZW5kX2hhcmRfcmVnbm8uCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxsb2MpOiBVc2UgZW5kX2hhcmRfcmVnbm8uCgkoZ2xvYmFsX2NvbmZsaWN0cyk6IFVzZSBhZGRfdG9faGFyZF9yZWdfc2V0IGluc3RlYWQgb2YKCW1hcmtfcmVnX2xpdmVfbmMuCgkoZmluZF9yZWcpOiBMaWtld2lzZS4KCShtYXJrX3JlZ19zdG9yZSk6IExpa2V3aXNlLgoJKG1hcmtfcmVnX2NvbmZsaWN0cyk6IExpa2V3aXNlLgoJKG1hcmtfcmVnX2RlYXRoKTogVXNlIHJlbW92ZV9mcm9tX2hhcmRfcmVnX3NldC4KCShtYXJrX3JlZ19saXZlX25jKTogRGVsZXRlLgoJKHNldF9wcmVmZXJlbmNlKTogVXNlIGVuZF9oYXJkX3JlZ25vLgoJKiBsb2NhbC1hbGxvYy5jIChtYXJrX2xpZmUpOiBVc2UgYWRkX3RvX2hhcmRfcmVnX3NldCBhbmQKCXJlbW92ZV9mcm9tX2hhcmRfcmVnX3NldC4KCShwb3N0X21hcmtfbGlmZSk6IFVzZSBhZGRfdG9faGFyZF9yZWdfc2V0LgoJKiBtb2RlLXN3aXRjaGluZy5jIChyZWdfZGllcyk6IFVzZSByZW1vdmVfZnJvbV9oYXJkX3JlZ19zZXQuCgkocmVnX2JlY29tZXNfbGl2ZSk6IFVzZSBhZGRfdG9faGFyZF9yZWdfc2V0LgoJKiByZWNvZy5jIChyZWdfZml0c19jbGFzc19wKTogVXNlIGluX2hhcmRfcmVnX3NldF9wLgoJKHBlZXAyX2ZpbmRfZnJlZV9yZWdpc3Rlcik6IFVzZSBhZGRfdG9faGFyZF9yZWdfc2V0LgoJKiByZWctc3RhY2suYyAoY29udmVydF9yZWdzX2V4aXQpOiBVc2UgRU5EX0hBUkRfUkVHTk8uCgkqIHJlZ2NsYXNzLmMgKHJlY29yZF9yZWdfY2xhc3Nlcyk6IFVzZSBpbl9oYXJkX3JlZ19zZXRfcC4KCSogcmVncmVuYW1lLmMgKG5vdGVfc2V0cyk6IFVzZSBhZGRfdG9faGFyZF9yZWdfc2V0LgoJKGNsZWFyX2RlYWRfcmVncyk6IFVzZSByZW1vdmVfZnJvbV9oYXJkX3JlZ19zZXQuCgkocmVncmVuYW1lX29wdGltaXplKTogVXNlIGFkZF90b19oYXJkX3JlZ19zZXQuCgkoZmluZF9vbGRlc3RfdmFsdWVfcmVnKTogVXNlIGluX2hhcmRfcmVnX3NldF9wLgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBVc2UgaW5faGFyZF9yZWdfc2V0X3AgYW5kIGVuZF9oYXJkX3JlZ25vLgoJKGhhcmRfcmVnX3NldF9oZXJlX3ApOiBVc2UgZW5kX2hhcmRfcmVnbm8uCgkoZGVjb21wb3NlKTogTGlrZXdpc2UuCgkocmVnX292ZXJsYXBfbWVudGlvbmVkX2Zvcl9yZWxvYWRfcCk6IFVzZSBFTkRfSEFSRF9SRUdOTy4KCShmaW5kX2VxdWl2X3JlZyk6IFVzZSBpbl9oYXJkX3JlZ19zZXRfcCBhbmQgZW5kX2hhcmRfcmVnbm8uCgkqIHJlbG9hZDEuYyAoY29tcHV0ZV91c2VfYnlfcHNldWRvcyk6IFVzZSBhZGRfdG9faGFyZF9yZWdfc2V0LgoJKG1hcmtfaG9tZV9saXZlKTogVXNlIGVuZF9oYXJkX3JlZ25vLgoJKHNwaWxsX2hhcmRfcmVnKTogTGlrZXdpc2UuCgkoY2xlYXJfcmVsb2FkX3JlZ19pbl91c2UpOiBMaWtld2lzZS4KCSogcmVvcmcuYyAoZGVsZXRlX3ByaW9yX2NvbXB1dGF0aW9uKTogVXNlIEVORF9SRUdOTy4KCSogcmVzb3VyY2UuYyAodXBkYXRlX2xpdmVfc3RhdHVzKTogVXNlIEVORF9IQVJEX1JFR05PLgoJKG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMpOiBVc2UgYWRkX3RvX2hhcmRfcmVnX3NldC4KCShtYXJrX3NldF9yZXNvdXJjZXMpOiBMaWtld2lzZS4KCShtYXJrX3RhcmdldF9saXZlX3JlZ3MpOiBMaWtld2lzZS4gIFVzZSByZW1vdmVfZnJvbV9oYXJkX3JlZ19zZXQuCgkqIHJ0bGFuYWwuYyAocmVmZXJzX3RvX3JlZ25vX3ApOiBVc2UgRU5EX1JFR05PLgoJKHJlZ19vdmVybGFwX21lbnRpb25lZF9wKTogTGlrZXdpc2UuCgkoZGVhZF9vcl9zZXRfcCk6IExpa2V3aXNlLiAgVXNlIGFuIGV4Y2x1c2l2ZSB1cHBlciBsb29wIGJvdW5kLgoJKGNvdmVyc19yZWdub19ub19wYXJhbGxlbF9wKTogVXNlIEVORF9SRUdOTy4KCShmaW5kX3JlZ25vX25vdGUpOiBMaWtld2lzZS4KCShmaW5kX3JlZ19mdXNhZ2UpOiBVc2UgRU5EX0hBUkRfUkVHTk8uCgkqIHN0bXQuYyAoZGVjbF9vdmVybGFwc19oYXJkX3JlZ19zZXRfcCk6IFVzZSBvdmVybGFwc19oYXJkX3JlZ19zZXRfcC4KCSogdmFyLXRyYWNraW5nLmMgKGVtaXRfbm90ZV9pbnNuX3Zhcl9sb2NhdGlvbik6IFVzZSBlbmRfaGFyZF9yZWduby4KCjIwMDctMDUtMjIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AbmlsZHJhbS5jby51az4KCgkqIG1vZGUtc3dpdGNoaW5nLmMgKHJlZ19kaWVzKTogQ2hhbmdlIHR5cGUgb2Ygc2Vjb25kIGFyZ3VtZW50IHRvCgkiSEFSRF9SRUdfU0VUICoiLgoJKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogVXBkYXRlIGFjY29yZGluZ2x5LgoKMjAwNy0wNS0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBoYXJkLXJlZy1zZXQuaCAoR09fSUZfSEFSRF9SRUdfU1VCU0VULCBHT19JRl9IQVJEX1JFR19FUVVBTCk6IERlbGV0ZQoJaW4gZmF2b3Igb2YuLi4KCShoYXJkX3JlZ19zdWJzZXRfcCwgaGFyZF9yZWdfc2V0c19lcXVhbF9wLCBoYXJkX3JlZ19zZXRzX2ludGVyc2VjdF9wKQoJKGhhcmRfcmVnX3NldF9lbXB0eV9wKTogLi4udGhlc2UgbmV3IGZ1bmN0aW9ucy4KCSogYnQtbG9hZC5jIChjaG9vc2VfYnRyKTogVXNlIGhhcmRfcmVnX3N1YnNldF9wIGluc3RlYWQgb2YKCUdPX0lGX0hBUkRfUkVHX1NVQlNFVC4KCSogY2ZnY2xlYW51cC5jIChvbGRfaW5zbnNfbWF0Y2hfcCk6IFVzZSBoYXJkX3JlZ19zZXRzX2VxdWFsX3AKCWluc3RlYWQgb2YgR09fSUZfSEFSRF9SRUdfRVFVQUwuCgkqIGRmLXByb2JsZW1zLmMgKGRmX3VyZWNfbG9jYWxfY29tcHV0ZSk6IFVzZSBoYXJkX3JlZ19zZXRfZW1wdHlfcAoJaW5zdGVhZCBvZiBHT19JRl9IQVJEX1JFR19FUVVBTC4KCSogZ2xvYmFsLmMgKGZpbmRfcmVnKTogVXNlIGhhcmRfcmVnX3NldF9lbXB0eV9wIGluc3RlYWQgb2YKCUdPX0lGX0hBUkRfUkVHX1NVQlNFVC4KCShtb2RpZnlfcmVnX3Bhdik6IFVzZSBoYXJkX3JlZ19zZXRfZW1wdHlfcCBpbnN0ZWFkIG9mCglHT19JRl9IQVJEX1JFR19FUVVBTC4KCSogbG9jYWwtYWxsb2MuYyAoZmluZF9mcmVlX3JlZyk6IFVzZSBoYXJkX3JlZ19zdWJzZXRfcCBpbnN0ZWFkCglvZiBHT19JRl9IQVJEX1JFR19TVUJTRVQuCgkqIHJlZy1zdGFjay5jIChjaGFuZ2Vfc3RhY2ssIGNvbnZlcnRfcmVnc18xKTogVXNlIGhhcmRfcmVnX3NldHNfZXF1YWxfcAoJaW5zdGVhZCBvZiBHT19JRl9IQVJEX1JFR19FUVVBTC4KCSogcmVnY2xhc3MuYyAoaW5pdF9yZWdfc2V0c18xLCByZWdfc2Nhbl9tYXJrX3JlZnMpOiBVc2UKCWhhcmRfcmVnX3N1YnNldF9wIGluc3RlYWQgb2YgR09fSUZfSEFSRF9SRUdfU1VCU0VULgoJKHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wKTogVXNlIGhhcmRfcmVnX3NldHNfaW50ZXJzZWN0X3AgaW5zdGVhZAoJb2YgR09fSUZfSEFSRF9SRUdfU1VCU0VULAoJKiByZWxvYWQxLmMgKGZpbmlzaF9zcGlsbHMpOiBVc2UgaGFyZF9yZWdfc3Vic2V0X3AgaW5zdGVhZCBvZgoJR09fSUZfSEFSRF9SRUdfU1VCU0VULgoJKiBzdHJ1Y3QtZXF1aXYuYyAoZGVhdGhfbm90ZXNfbWF0Y2hfcCk6IFVzZSBoYXJkX3JlZ19zZXRzX2VxdWFsX3AKCWluc3RlYWQgb2YgR09fSUZfSEFSRF9SRUdfRVFVQUwuCgkqIGNvbmZpZy9zaC9zaC5jIChwdXNoX3JlZ3MsIGNhbGNfbGl2ZV9yZWdzKTogVXNlCgloYXJkX3JlZ19zZXRzX2ludGVyc2VjdF9wIGluc3RlYWQgb2YgaGFyZF9yZWdzX2ludGVyc2VjdF9wLgoJKGhhcmRfcmVnc19pbnRlcnNlY3RfcCk6IERlbGV0ZS4KCjIwMDctMDUtMjIgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKFRlc3QgRGlyZWN0aXZlcykgQWRkIGRnLW1lc3NhZ2UuCgoyMDA3LTA1LTIyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi0qKTogQWRkIHNtbWludHJpbi5oIHRvCglleHRyYV9oZWFkZXJzLgoJKHg4Nl82NC0qLSopOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYtbW9kZXMuZGVmIChWMlFJKTogTmV3LgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgU1NFNC4xIGFuZAoJU1NFNEEuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFN1cHBvcnQgU1NFNC4xLgoJKElYODZfQlVJTFRJTl9CTEVORFBEKTogTmV3IGZvciBTU0U0LjEuCgkoSVg4Nl9CVUlMVElOX0JMRU5EUFMpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fQkxFTkRWUEQpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fQkxFTkRWUFMpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUEJMRU5EVkIxMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUEJMRU5EVzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9EUFBEKTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX0RQUFMpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fSU5TRVJUUFMxMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fTU9WTlREUUEpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fTVBTQURCVzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QQUNLVVNEVzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QQ01QRVFRKTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BITUlOUE9TVVcxMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUE1BWFNCMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BNQVhTRDEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTUFYVUQxMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUE1BWFVXMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BNSU5TQjEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTUlOU0QxMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUE1JTlVEMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BNSU5VVzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WU1hCVzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WU1hCRDEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WU1hCUTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WU1hXRDEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WU1hXUTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WU1hEUTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WWlhCVzEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WWlhCRDEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WWlhCUTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WWlhXRDEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WWlhXUTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTU9WWlhEUTEyOCk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QTVVMRFExMjgpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUE1VTExEMTI4KTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1JPVU5EUEQpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUk9VTkRQUyk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9ST1VORFNEKTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1JPVU5EU1MpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fUFRFU1RaKTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1BURVNUQyk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9QVEVTVE5aQyk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9WRUNfRVhUX1YxNlFJKTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1ZFQ19TRVRfVjJESSk6IExpa2V3aXNlLgoJKElYODZfQlVJTFRJTl9WRUNfU0VUX1Y0U0YpOiBMaWtld2lzZS4KCShJWDg2X0JVSUxUSU5fVkVDX1NFVF9WNFNJKTogTGlrZXdpc2UuCgkoSVg4Nl9CVUlMVElOX1ZFQ19TRVRfVjE2UUkpOiBMaWtld2lzZS4KCShiZGVzY19wdGVzdCk6IE5ldy4KCShiZGVzY19zc2VfM2FyZyk6IExpa2V3aXNlLgoJKGJkZXNjXzJhcmcpOiBMaWtld2lzZS4KCShiZGVzY18xYXJnKTogTGlrZXdpc2UuCgkoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBTdXBwb3J0IFNTRTQuMS4gIEhhbmRsZSBTU0UgYnVpbHRpbnMKCXdpdGggMyBhcmdzLgoJKGl4ODZfZXhwYW5kX3NzZV80X29wZXJhbmRzX2J1aWx0aW4pOiBOZXcuCgkoaXg4Nl9leHBhbmRfdW5vcF9idWlsdGluKTogU3VwcG9ydCAyIGFyZyBidWlsdGlucyB3aXRoIGEgY29uc3RhbnQKCXNtYWxsZXIgdGhhbiA4IGJpdHMgYXMgdGhlIDJuZCBhcmcuCgkoaXg4Nl9leHBhbmRfc3NlX3B0ZXN0KTogTmV3LgoJKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBTdXBwb3J0IFNTRTQuMS4gU3VwcG9ydCAzIGFyZyBTU0UgYnVpbHRpbnMuCgkoaXg4Nl9leHBhbmRfdmVjdG9yX3NldCk6IFN1cHBvcnQgU1NFNC4xLgoJKGl4ODZfZXhwYW5kX3ZlY3Rvcl9leHRyYWN0KTogTGlrZXdpc2UuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lCglfX1NTRTRfMV9fIGZvciAtbXNzZTQuMS4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKFVOU1BFQ19CTEVORFYpOiBOZXcgZm9yIFNTRTQuMS4KCShVTlNQRUNfSU5TRVJUUFMpOiBMaWtld2lzZS4KCShVTlNQRUNfRFApOiBMaWtld2lzZS4KCShVTlNQRUNfTU9WTlREUUEpOiBMaWtld2lzZS4KCShVTlNQRUNfTVBTQURCVyk6IExpa2V3aXNlLgoJKFVOU1BFQ19QSE1JTlBPU1VXKTogTGlrZXdpc2UuCgkoVU5TUEVDX1BURVNUKTogTGlrZXdpc2UuCgkoVU5TUEVDX1JPVU5EUCk6IExpa2V3aXNlLgoJKFVOU1BFQ19ST1VORFMpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtc3NlNC4xKTogTmV3IGZvciBTU0U0LjEuCgoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChjb25zdF9wb3cyXzFfdG9fMl9vcGVyYW5kKTogTmV3LgoJKGNvbnN0X3BvdzJfMV90b18zMjc2OF9vcGVyYW5kKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaTM4Ni9zbW1pbnRyaW4uaDogTmV3LiBUaGUgU1NFNC4xIGludHJpbnNpYyBoZWFkZXIKCWZpbGUuCgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKCp2ZWNfc2V0djRzZl9zc2U0XzEpOiBOZXcgcGF0dGVybiBmb3IKCVNTRTQuMS4KCShzc2U0XzFfaW5zZXJ0cHMpOiBMaWtld2lzZS4KCSgqc3NlNF8xX2V4dHJhY3Rwcyk6IExpa2V3aXNlLgoJKHNzZTRfMV9wdGVzdCk6IExpa2V3aXNlLgoJKHNzZTRfMV9tdWx2MnNpdjJkaTMpOiBMaWtld2lzZS4KCSgqc3NlNF8xX211bHY0c2kzKTogTGlrZXdpc2UuCgkoKnNzZTRfMV9zbWF4PG1vZGU+Myk6IExpa2V3aXNlLgoJKCpzc2U0XzFfdW1heDxtb2RlPjMpOiBMaWtld2lzZS4KCSgqc3NlNF8xX3NtaW48bW9kZT4zKTogTGlrZXdpc2UuCgkoKnNzZTRfMV91bWluPG1vZGU+Myk6IExpa2V3aXNlLgoJKHNzZTRfMV9lcXYyZGkzKTogTGlrZXdpc2UuCgkoKnNzZTRfMV9waW5zcmIpOiBMaWtld2lzZS4KCSgqc3NlNF8xX3BpbnNyZCk6IExpa2V3aXNlLgoJKCpzc2U0XzFfcGluc3JxKTogTGlrZXdpc2UuCgkoKnNzZTRfMV9wZXh0cmIpOiBMaWtld2lzZS4KCSgqc3NlNF8xX3BleHRyYl9tZW1vcnkpOiBMaWtld2lzZS4KCSgqc3NlNF8xX3BleHRyd19tZW1vcnkpOiBMaWtld2lzZS4KCSgqc3NlNF8xX3BleHRycSk6IExpa2V3aXNlLgoJKHNzZTRfMV9ibGVuZHBkKTogTGlrZXdpc2UuCgkoc3NlNF8xX2JsZW5kcHMpOiBMaWtld2lzZS4KCShzc2U0XzFfYmxlbmR2cGQpOiBMaWtld2lzZS4KCShzc2U0XzFfYmxlbmR2cHMpOiBMaWtld2lzZS4KCShzc2U0XzFfZHBwZCk6IExpa2V3aXNlLgoJKHNzZTRfMV9kcHBzKTogTGlrZXdpc2UuCgkoc3NlNF8xX21vdm50ZHFhKTogTGlrZXdpc2UuCgkoc3NlNF8xX21wc2FkYncpOiBMaWtld2lzZS4KCShzc2U0XzFfcGFja3VzZHcpOiBMaWtld2lzZS4KCShzc2U0XzFfcGJsZW5kdmIpOiBMaWtld2lzZS4KCShzc2U0XzFfcGJsZW5kdyk6IExpa2V3aXNlLgoJKHNzZTRfMV9waG1pbnBvc3V3KTogTGlrZXdpc2UuCgkoc3NlNF8xX2V4dGVuZHY4cWl2OGhpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfZXh0ZW5kdjhxaXY4aGkyKTogTGlrZXdpc2UuCgkoc3NlNF8xX2V4dGVuZHY0cWl2NHNpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfZXh0ZW5kdjRxaXY0c2kyKTogTGlrZXdpc2UuCgkoc3NlNF8xX2V4dGVuZHYycWl2MmRpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfZXh0ZW5kdjJxaXYyZGkyKTogTGlrZXdpc2UuCgkoc3NlNF8xX2V4dGVuZHY0aGl2NHNpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfZXh0ZW5kdjRoaXY0c2kyKTogTGlrZXdpc2UuCgkoc3NlNF8xX2V4dGVuZHYyaGl2MmRpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfZXh0ZW5kdjJoaXYyZGkyKTogTGlrZXdpc2UuCgkoc3NlNF8xX2V4dGVuZHYyc2l2MmRpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfZXh0ZW5kdjJzaXYyZGkyKTogTGlrZXdpc2UuCgkoc3NlNF8xX3plcm9fZXh0ZW5kdjhxaXY4aGkyKTogTGlrZXdpc2UuCgkoKnNzZTRfMV96ZXJvX2V4dGVuZHY4cWl2OGhpMik6IExpa2V3aXNlLgoJKHNzZTRfMV96ZXJvX2V4dGVuZHY0cWl2NHNpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfemVyb19leHRlbmR2NHFpdjRzaTIpOiBMaWtld2lzZS4KCShzc2U0XzFfemVyb19leHRlbmR2MnFpdjJkaTIpOiBMaWtld2lzZS4KCSgqc3NlNF8xX3plcm9fZXh0ZW5kdjJxaXYyZGkyKTogTGlrZXdpc2UuCgkoc3NlNF8xX3plcm9fZXh0ZW5kdjRoaXY0c2kyKTogTGlrZXdpc2UuCgkoKnNzZTRfMV96ZXJvX2V4dGVuZHY0aGl2NHNpMik6IExpa2V3aXNlLgoJKHNzZTRfMV96ZXJvX2V4dGVuZHYyaGl2MmRpMik6IExpa2V3aXNlLgoJKCpzc2U0XzFfemVyb19leHRlbmR2MmhpdjJkaTIpOiBMaWtld2lzZS4KCShzc2U0XzFfemVyb19leHRlbmR2MnNpdjJkaTIpOiBMaWtld2lzZS4KCSgqc3NlNF8xX3plcm9fZXh0ZW5kdjJzaXYyZGkyKTogTGlrZXdpc2UuCgkoc3NlNF8xX3JvdW5kcGQpOiBMaWtld2lzZS4KCShzc2U0XzFfcm91bmRwcyk6IExpa2V3aXNlLgoJKHNzZTRfMV9yb3VuZHNkKTogTGlrZXdpc2UuCgkoc3NlNF8xX3JvdW5kc3MpOiBMaWtld2lzZS4KCShtdWx2NHNpMyk6IERvbid0IGV4cGFuZCBmb3IgU1NFNC4xLgoJKHNtYXg8bW9kZT4zKTogTGlrZXdpc2UuCgkodW1heHY0c2kzKTogTGlrZXdpc2UuCgkodW1pbnYxNnFpMyk6IExpa2V3aXNlLgoJKHVtaW48bW9kZT4zKTogTGlrZXdpc2UuCgkodW1heHY4aGkzKTogUmV3cml0ZS4gIE9ubHkgZW5hYmxlZCBmb3IgU1NFNC4xLgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBTU0U0LjEgYnVpbHQtaW4gZnVuY3Rpb25zLgoKCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbXNzZTQuMS4KCjIwMDctMDUtMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9saW51eC5oIChBU01fU1BFQyk6IEFkZCBhc21fcGNyZWxfc3BlYy4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmggKEFTTV9TUEVDKTogRG9uJ3Qgb3ZlcnJpZGUgaGVyZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChBU01fUENSRUxfU1BFQyk6IE5ldy4KCShBU01fU1BFQyk6IEFkZCBhc21fcGNyZWxfc3BlYy4KCShFWFRSQV9TUEVDUyk6IEFkZCBhc21fcGNyZWxfc3BlYy4KCjIwMDctMDUtMjEgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChCdWlsZGluZyBhIGNyb3NzIGNvbXBpbGVyKTogQWRkIHJlcXVpcmVtZW50cwoJZm9yIEphdmEgY3Jvc3MgY29tcGlsZXIuCgoyMDA3LTA1LTIxICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMxOTk1CgkqIHRyZWUtY2hyZWMuYyAoZXZvbHV0aW9uX2Z1bmN0aW9uX2lzX2FmZmluZV9tdWx0aXZhcmlhdGVfcCk6CglBZGQgbG9vcG5vIGFyZ3VtZW50LiAgVXNlIGV2b2x1dGlvbl9mdW5jdGlvbl9pc19pbnZhcmlhbnRfcmVjX3AKCWluc3RlYWQgb2YgZXZvbHV0aW9uX2Z1bmN0aW9uX2lzX2NvbnN0YW50X3AuCglVcGRhdGUgY2FsbHMgdG8gZXZvbHV0aW9uX2Z1bmN0aW9uX2lzX2FmZmluZV9tdWx0aXZhcmlhdGVfcC4KCSogdHJlZS1jaHJlYy5oIChldm9sdXRpb25fZnVuY3Rpb25faXNfYWZmaW5lX211bHRpdmFyaWF0ZV9wKToKCUFkZCBsb29wbm8gYXJndW1lbnQuCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jIChnYXRoZXJfY2hyZWNfc3RhdHMpOiBDYWxsCglldm9sdXRpb25fZnVuY3Rpb25faXNfYWZmaW5lX211bHRpdmFyaWF0ZV9wIHdpdGggYSBsb29wCgludW1iZXIgb2YgMC4KCSogdHJlZS1kYXRhLXJlZi5jIChhbmFseXplX21pdl9zdWJzY3JpcHQpOiBMaWtld2lzZS4KCShhbmFseXplX292ZXJsYXBwaW5nX2l0ZXJhdGlvbnMpOiBMaWtld2lzZS4KCShhY2Nlc3NfZnVuY3Rpb25zX2FyZV9hZmZpbmVfb3JfY29uc3RhbnRfcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3JfMSk6IElmIHRoZSBhY2Nlc3MgZnVuY3Rpb25zCglhcmUgZXF1YWwsIGRvbid0IGRvIGFueXRoaW5nLgoKMjAwNy0wNS0yMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCSAgICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCSAgICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogYy1jcHBidWlsdGluLmMgKGNfY3BwX2J1aWx0aW5zKTogRGVmaW5lCglfX0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9BTkRfU1dBUF8xLCBfX0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9BTkRfU1dBUF8yLAoJX19HQ0NfSEFWRV9TWU5DX0NPTVBBUkVfQU5EX1NXQVBfNCwgX19HQ0NfSEFWRV9TWU5DX0NPTVBBUkVfQU5EX1NXQVBfOCwKCV9fR0NDX0hBVkVfU1lOQ19DT01QQVJFX0FORF9TV0FQXzE2LCBpZiBhcHByb3ByaWF0ZS4KCSogZG9jL2NwcC50ZXhpIChbU3RhbmRhcmQgUHJlZGVmaW5lZCBNYWNyb3NdKTogRG9jdW1lbnQuCgoyMDA3LTA1LTIxICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoTElOS19DT01NQU5EX1NQRUMpOiBBZGQgLmN4eC8uY3AgZm9yIGRzeW11dGlsCgloYW5kbGluZyBhcyB3ZWxsLgoJKiBjb25maWcvZGFyd2luOS5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IExpa2V3aXNlLgoKMjAwNy0wNS0yMSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3RtbWludHJpbi5oIChfbW1fYWxpZ25yX2VwaTgpOiBQcm92aWRlIG1hY3JvCglpbXBsZW1lbnRhdGlvbiBpZiBfX09QVElNSVpFX18gaXMgbm90IGRlZmluZWQuCgkoX21tX2FsaWducl9waTgpOiBEaXR0by4KCSogY29uZmlnL2kzODYvYW1taW50cmluLmggKF9tbV9leHRyYWN0aV9zaTY0KTogRGl0dG8uCgkoX21tX2luc2VydGlfc2k2NCk6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9lbW1pbnRyaW4uaCAoX21tX3NodWZmbGVfcGQpOiBEaXR0by4KCShfbW1fc2xsaV9lcGkxNik6IERpdHRvLgoJKF9tbV9zbGxpX2VwaTMyKTogRGl0dG8uCgkoX21tX3NsbGlfZXBpNjQpOiBEaXR0by4KCShfbW1fc3JhaV9lcGkxNik6IERpdHRvLgoJKF9tbV9zcmFpX2VwaTMyKTogRGl0dG8uCgkoX21tX3NybGlfc2kxMjgpOiBEaXR0by4KCShfbW1fc2xsaV9zaTEyOCk6IERpdHRvLgoJKF9tbV9zcmxpX2VwaTE2KTogRGl0dG8uCgkoX21tX3NybGlfZXBpMzIpOiBEaXR0by4KCShfbW1fc3JsaV9lcGk2NCk6IERpdHRvLgoJKF9tbV9leHRyYWN0X2VwaTE2KTogRGl0dG8uCgkoX21tX2luc2VydF9lcGkxNik6IERpdHRvLgoJKF9tbV9zaHVmZmxlaGlfZXBpMTYpOiBEaXR0by4KCShfbW1fc2h1ZmZsZWxvX2VwaTE2KTogRGl0dG8uCgkoX21tX3NodWZmbGVfZXBpMzIpOiBEaXR0by4KCSogY29uZmlnL2kzODYveG1taW50cmluLmggKF9tbV9leHRyYWN0X3BpMTYpOiBEaXR0by4KCShfbV9wZXh0cncpOiBEaXR0by4KCShfbW1faW5zZXJ0X3BpMTYpOiBEaXR0by4KCShfbV9waW5zcncpOiBEaXR0by4KCShfbW1fc2h1ZmZsZV9waTE2KTogRGl0dG8uCgkoX21fcHNodWZ3KTogRGl0dG8uCgkoX21tX3NodWZsZV9wcyk6IERpdHRvLgoJKF9tbV9wcmVmZXRjaCk6IERpdHRvLgoKMjAwNy0wNS0yMSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGRlZmF1bHRzLmggKElCTV9GTE9BVF9GT1JNQVQpOiBNYWNybyBkZWZpbml0aW9uIHJlbW92ZWQuCgkqIGRvYy90bS50ZXhpIChJQk1fRkxPQVRfRk9STUFUKTogRG9jdW1lbnRhdGlvbiBlbnRyeSByZW1vdmVkLgoJKiByZWFsLmMgKGVuY29kZV9pMzcwX3NpbmdsZSwgZGVjb2RlX2kzNzBfc2luZ2xlLAoJZW5jb2RlX2kzNzBfZG91YmxlLCBkZWNvZGVfaTM3MF9kb3VibGUpOiBGdW5jdGlvbnMgcmVtb3ZlZC4KCShpMzcwX3NpbmdsZV9mb3JtYXQsIGkzNzBfZG91YmxlX2Zvcm1hdCk6IEluaXRpYWxpemF0aW9ucyByZW1vdmVkLgoJKHJlYWxfbWF4dmFsLCByb3VuZF9mb3JfZm9ybWF0LCBleGFjdF9yZWFsX3RydW5jYXRlLCBzaWduaWZpY2FuZF9zaXplKToKCUNvbnNpZGVyIHRoZSBsb2cyX2IgZmllbGQgdG8gYWx3YXlzIGJlIG9uZS4KCShpZWVlX3NpbmdsZV9mb3JtYXQsIG1pcHNfc2luZ2xlX2Zvcm1hdCwgY29sZGZpcmVfc2luZ2xlX2Zvcm1hdCwKCWllZWVfZG91YmxlX2Zvcm1hdCwgbWlwc19kb3VibGVfZm9ybWF0LAljb2xkZmlyZV9kb3VibGVfZm9ybWF0LAoJaWVlZV9leHRlbmRlZF9tb3Rvcm9sYV9mb3JtYXQsIGllZWVfZXh0ZW5kZWRfaW50ZWxfOTZfZm9ybWF0LAoJaWVlZV9leHRlbmRlZF9pbnRlbF8xMjhfZm9ybWF0LCBpZWVlX2V4dGVuZGVkX2ludGVsXzk2X3JvdW5kXzUzX2Zvcm1hdCwKCWlibV9leHRlbmRlZF9mb3JtYXQsIG1pcHNfZXh0ZW5kZWRfZm9ybWF0LCBpZWVlX3F1YWRfZm9ybWF0LAoJbWlwc19xdWFkX2Zvcm1hdCwgdmF4X2ZfZm9ybWF0LCB2YXhfZF9mb3JtYXQsIHZheF9nX2Zvcm1hdCwKCWRlY2ltYWxfc2luZ2xlX2Zvcm1hdCwgZGVjaW1hbF9kb3VibGVfZm9ybWF0LCBkZWNpbWFsX3F1YWRfZm9ybWF0LAoJYzR4X3NpbmdsZV9mb3JtYXQsIGM0eF9leHRlbmRlZF9mb3JtYXQsIHJlYWxfaW50ZXJuYWxfZm9ybWF0KTogUmVtb3ZlCglpbml0aWFsaXphdGlvbiBvZiBsb2cyX2IuCgkqIHJlYWwuaCAoaTM3MF9zaW5nbGVfZm9ybWF0LCBpMzcwX2RvdWJsZV9mb3JtYXQpOiBEZWNsYXJhdGlvbnMKCXJlbW92ZWQuCgkqIGMtY3BwYnVpbHRpbi5jIChidWlsdGluX2RlZmluZV9mbG9hdF9jb25zdGFudHMpOiBDb25zaWRlciB0aGUgbG9nMl9iCglmaWVsZCB0byBhbHdheXMgYmUgb25lLgoKMjAwNy0wNS0yMSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZW1pdF9wcmVkaWNhdGVfcmVsYXRpb25faW5mbyk6IEZpeCB1c2Ugb2YKCU5PVEVfSU5TTl9CQVNJQ19CTE9DS19QLgoJKHByb2Nlc3NfZm9yX3Vud2luZF9kaXJlY3RpdmUpOiBMaWtld2lzZS4KCjIwMDctMDUtMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBVcGRhdGUgY29tbWVudC4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogTW92ZSB2YV9saXN0X2dwcl9zaXplLAoJdmFfbGlzdF9mcHJfc2l6ZSwgZnVuY3Rpb25fZnJlcXVlbmN5IHRvIGZyb250IG9mIGJpdGZpZWxkcy4gIEFkZAoJY2FsbHNfdW53aW5kX2luaXQuCgkoY3VycmVudF9mdW5jdGlvbl9jYWxsc191bndpbmRfaW5pdCk6IE5ldy4KCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Vud2luZF9pbml0KTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2NhbGxzX3Vud2luZF9pbml0IG5vdAoJY3VycmVudF9mdW5jdGlvbl9oYXNfbm9ubG9jYWxfbGFiZWwuCgkqIHJlbG9hZDEuYyAoaGFzX25vbmV4Y2VwdGlvbmFsX3JlY2VpdmVyKTogTmV3LgoJKHJlbG9hZCk6IFVzZSBpdCBhbmQgY3VycmVudF9mdW5jdGlvbl9jYWxsc191bndpbmRfaW5pdCB0bwoJZGV0ZXJtaW5lIHdoZXRoZXIgY2FsbC1zYXZlZCByZWdzIG11c3QgYmUgc2F2ZWQuCgoyMDA3LTA1LTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnZW5ndHlwZS5jIChhZGp1c3RfZmllbGRfcnR4X2RlZik6IFVzZSBOT1RFX0tJTkQgaW5zdGVhZCBvZgoJTk9URV9MSU5FX05VTUJFUjsgdXNlIE5PVEVfSU5TTl9CQVNJQ19CTE9DS19QIHdoZW4gcG9zc2libGUuCgkqIGRkZy5jIChjcmVhdGVfZGRnKTogTElrZXdpc2UuCgkqIGZpbmFsLmMgKGZpbmFsKTogUmVtb3ZlIGh1bmsgbW92aW5nIGxpbmUgbnVtYmVyIG5vdGVzIGFyb3VuZCBzaW5jZQoJdGhleSBhcmUgbm8gbG9uZ2VyIHByZXNlbnQgYXQgdGhpcyBzdGFnZS4KCShmaW5hbF9zY2FuX2luc24pOiBVc2UgTk9URV9LSU5EIGluc3RlYWQgb2YKCU5PVEVfTElORV9OVU1CRVI7IHVzZSBOT1RFX0lOU05fQkFTSUNfQkxPQ0tfUCB3aGVuIHBvc3NpYmxlLgoJKG91dHB1dF9hc21fbGFiZWwpOiBMaWtld2lzZS4KCSogcmVvcmcuYyAoZGJyX3NjaGVkdWxlKTogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmMgKHVubGlua19vdGhlcl9ub3Rlcyk6IExpa2V3aXNlLgoJKiBtb2RlLXN3aXRjaGluZy5jIChvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyk6IExpa2V3aXNlLgoJKiBncmFwaC5jIChzdGFydF9iYik6IExpa2V3aXNlLgoJKiBydGwuZGVmIChOT1RFKTogVXBkYXRlIGRlc2NyaXB0aW9uLgoJKiBqdW1wLmMgKHNxdWVlemVfbm90ZXMpOiBEZWxldGUuCgkobWFya19qdW1wX2xhYmVsKTogVXNlIE5PVEVfS0lORCBpbnN0ZWFkIG9mIE5PVEVfTElORV9OVU1CRVI7IHVzZQoJTk9URV9JTlNOX0JBU0lDX0JMT0NLX1Agd2hlbiBwb3NzaWJsZS4KCSogaWZjdnQuYyAoZGVhZF9vcl9wcmVkaWNhYmxlKTogUmVtb3ZlIGNhbGwgb2Ygc3F1ZWV6ZV9ub3Rlcy4KCSogZHdhcmYyb3V0LmMgKGdlbl9sYWJlbF9kaWUpOiBVc2UgTk9URV9LSU5EIGluc3RlYWQgb2YKCU5PVEVfTElORV9OVU1CRVI7IHVzZSBOT1RFX0lOU05fQkFTSUNfQkxPQ0tfUCB3aGVuIHBvc3NpYmxlLgoJKGR3YXJmMm91dF92YXJfbG9jYXRpb24pOiBMaWtld2lzZS4KCSogY2ZnYnVpbGQuYyAobWFrZV9lZGdlcyk6IExpa2V3aXNlLgoJKGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAocmVvcmRlcl9ibG9ja3NfMSk6IExpa2V3aXNlLgoJKGVwaWxvZ3VlX2RvbmUpOiBMaWtld2lzZS4KCShyZXBvc2l0aW9uX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9ub3Rlcyk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogTGlrZXdpc2U7IGRyb3AgY29kZSBmb3IgcHJpbnRpbmcKCWxpbmUgbnVtYmVyIG5vdGVzLgoJKHByaW50X3J0bCk6IExpa2V3aXNlLgoJKHByaW50X3J0bF9zaW5nbGUpOiBMaWtld2lzZS4KCSogZ2NzZS5jIChpbnNlcnRfaW5zbl9zdGFydF9iYik6IExpa2V3aXNlLgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGZpeHVwX3RhaWxfY2FsbHMpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKHNqbGpfZW1pdF9mdW5jdGlvbl9lbnRlcik6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChhZGRfaW5zbl9hZnRlcik6IExpa2Vpd3NlLgoJKGVtaXRfbGFiZWxfYmVmb3JlKTogTGlrZXdpc2UuCgkoZW1pdF9sYWJlbF9hZnRlcik6IExpa2V3aXNlLgoJKGVtaXRfbm90ZV9iZWZvcmUsIGVtaXRfbm90ZV9hZnRlciwgZW1pdF9ub3RlKTogVXBkYXRlCglwYXJhbWV0ZXIgdG8gYmUgZW51bSBpbnNuX25vdGU7IGRvIG5vdCBkZWFsIHdpdGggc291cmNlCglmaWxlcy4KCSogY2ZnY2xlYW51cC5jIChtZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzKToKCVVzZSBOT1RFX0tJTkQgaW5zdGVhZCBvZiBOT1RFX0xJTkVfTlVNQkVSOyB1c2UgTk9URV9JTlNOX0JBU0lDX0JMT0NLX1AKCXdoZW4gcG9zc2libGUuCgkobWVyZ2VfYmxvY2tzX21vdmVfc3VjY2Vzc29yX25vanVtcHMpOiBTaW1wbGlmeSBub3cgd2hlbgoJd2UgZG9uJ3QgaGF2ZSBCTE9DSyBub3Rlcy4KCSh0cnlfb3B0aW1pemVfY2ZnKTogTGlrZXdpc2UuCgkqIGNmZ2xheW91dC5jIChza2lwX2luc25zX2FmdGVyX2Jsb2NrKTogTGlrZXdpc2UuCgkocmVjb3JkX2VmZmVjdGl2ZV9lbmRwb2ludHMpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfaW5zbl9jaGFpbik6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50X3Bvb2xfMSk6IExpa2V3aXNlLgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emUpOiBMaWtld2lzZS4KCSogcnRsLmMgKE5PVEVfSU5TTl9NQVhfaXNudF9uZWdhdGl2ZV9hZGp1c3RfTk9URV9JTlNOX0JJQVMpOgoJRXh0ZXJtaW5hdGUuCgkobm90ZV9pbnNuX25hbWUpOiBTaW1wbGlmeSBub3cgd2hlbiBOT1RFX0lOU05fQklBUyBpcyBnb25lLgoJKiBydGwuaCAoTk9URV9TT1VSQ0VfTE9DQVRJT04sIE5PVEVfRVhQQU5ERURfTE9DQVRJT04pOiBFeHRlcm1pbmF0ZS4KCShTRVRfSU5TTl9ERUxFVEVEKTogU2ltcGxpZnkuCgkoTk9URV9MSU5FX05VTUJFUik6IEV4dGVybWluYXRlLgoJKE5PVEVfTElORV9LSU5EKTogTmV3LgoJKE5PVEVfSU5TTl9CQVNJQ19CTE9DS19QKTogVXBkYXRlLgoJKGVudW0gaW5zbl9ub3RlKTogU2ltcGxpZnkuCgkoR0VUX05PVEVfSU5TTl9OQU1FKSBTaW1wbGlmeS4KCShlbWl0X25vdGVfYmVmb3JlLCBlbWl0X25vdGVfYWZ0ZXIsIGVtaXRfbm90ZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkoc3F1ZWV6ZV9ub3Rlcyk6IFJlbW92ZS4KCSogc2NoZWQtaW50LmggKE5PVEVfTk9UX0JCX1ApOiBVcGRhdGUuCgkqIHJlc291cmNlLmMgKG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IFVwZGF0ZS4KCSogc2NoZWQtcmduLmMgKGRlYnVnX2RlcGVuZGVuY2llcyk6IFVwZGF0ZS4KCSogc2NoZWQtdmlzLmMgKHByaW50X2luc24pOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9oYW5kbGVfdHJhcF9zaGFkb3dzKTogVXBkYXRlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogVXBkYXRlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfYWRqdXN0X3Vucm9sbF9tYXgpOiBGdW5jdGlvbiBkZWFkIHNpbmNlIGdjYyA0LjAuMC4KCShUQVJHRVRfQURKVVNUX1VOUk9MTF9NQVgpOiBMaWtld2lzZS4KCShzcGxpdF9icmFuY2hlcyk6IFVwZGF0ZS4KCShzaF9vcHRpbWl6ZV90YXJnZXRfcmVnaXN0ZXJfY2FsbGVlX3NhdmVkKTogUmVtb3ZlIGh1bmsgZGVhZCBzaW5jZSBnY2MKCTQuMC4wLgoJKHNoX2FkanVzdF91bnJvbGxfbWF4KTogRXh0ZXJtaW5hdGUuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9yZW9yZyk6IFVzZSBTRVRfSU5TTl9ERUxFVEVELgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfY2hlY2tfel9yZXBsYWNlbWVudCk6IExpa2V3aXNlLgoJKG02OGhjMTFfcmVvcmcpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBVcGRhdGUuCgkoZW1pdF9wcmVkaWNhdGVfcmVsYXRpb25faW5mbyk6IFVwZGF0ZS4KCShwcm9jZXNzX2Zvcl91bndpbmRfZGlyZWN0aXZlKTogVXBkYXRlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogVXBkYXRlLgoJKG91dHB1dF9jYWxsKTogVXBkYXRlLgoJKiBjb25maWcvcGEvcGEuYyAob3V0cHV0X2xicmFuY2gpOiBVcGRhdGUuCgkob3V0cHV0X21pbGxpY29kZV9jYWxsKTogVXBkYXRlLgoJKG91dHB1dF9jYWxsKTogVXBkYXRlLgoJKHBhX2NvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogVXBkYXRlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHMxNl9ncF9wc2V1ZG9fcmVnKTogVXBkYXRlLgoJKiBjb25maWcvYmZpbi9iZmluLmMgKGdlbl9vbmVfYnVuZGxlKTogVXBkYXRlLgoJKiBjZmdydGwuYyAoY2FuX2RlbGV0ZV9ub3RlX3ApOiBVcGRhdGUuCgkoZGVsZXRlX2luc24pOiBVcGRhdGUuCgkocnRsX21lcmdlX2Jsb2Nrcyk6IFVwZGF0ZS4KCShjb21taXRfb25lX2VkZ2VfaW5zZXJ0aW9uKTogVXBkYXRlLgoJKHJ0bF92ZXJpZnlfZmxvd19pbmZvKTogVXBkYXRlLgoJKiBzdG10LmMgKGV4cGFuZF9jYXNlKTogRG8gbm90IGNhbGwgc3F1ZWV6ZV9ub3Rlcy4KCjIwMDctMDUtMjAgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCVBSIG1pZGRsZS1lbmQvNzY1MQoJUFIgYysrLzExODU2CglQUiBjLzEyOTYzCglQUiBjLzIzNTg3CglQUiBvdGhlci8yOTY5NAoJKiBjLm9wdCAoV3R5cGUtbGltaXRzKTogTmV3LgoJKiBkb2MvaW52b2tlLnRleGkgKFd0eXBlLWxpbWl0cyk6IERvY3VtZW50IGl0LgoJKFdleHRyYSk6IEVuYWJsZWQgYnkgLVdleHRyYS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyk6IEVuYWJsZWQgYnkgLVdleHRyYS4KCSogYy1jb21tb24uYyAoc2hvcnRlbl9jb21wYXJlKTogV2FybiB3aXRoIFd0eXBlLWxpbWl0cy4KCjIwMDctMDUtMjAgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni90bW1pbnRyaW4uaCAoX21tX2FsaWducl9lcGkzMik6IEltcGxlbWVudCBhcyBhbHdheXMKCWlubGluZWQgZnVuY3Rpb24sIG5vdCBhcyBhIG1hY3JvLgoJKF9tbV9hbGlnbnJfcGk4KTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L2FtbWludHJpbi5oIChfbW1fZXh0cmFjdGlfc2k2NCk6IERpdHRvLgoJKF9tbV9pbnNlcnRpX3NpNjQpOiBEaXR0by4KCSogY29uZmlnL2kzODYvZW1taW50cmluLmggKF9tbV9zaHVmZmxlX3BkKTogRGl0dG8uCgkoX21tX2V4dHJhY3RfZXBpMTYpOiBEaXR0by4KCShfbW1faW5zZXJ0X2VwaTE2KTogRGl0dG8uCgkoX21tX3NodWZmbGVoaV9lcGkxNik6IERpdHRvLgoJKF9tbV9zaHVmZmxlbG9fZXBpMTYpOiBEaXR0by4KCShfbW1fc2h1ZmZsZV9lcGkzMik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni94bW1pbnRyaW4uaCAoX21tX3NldF9zcyk6IFVzZSAwLjBmIGZvciBmbG9hdCBjb25zdGFudC4KCSogY29uZmlnLzM4Ni9tbTNkbm93Lmg6IEFkZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHRvCglhbGwgZnVuY3Rpb25zLgoJKF9tX2Zyb21fZmxvYXQpOiBBZGQgX19leHRlbnNpb25fXyB0byBjb252ZXJzaW9uLiAgVXNlIDAuMGYgZm9yCglmbG9hdCBjb25zdGFudC4KCShfbV90b19mbG9hdCk6IFVzZSBDODkgY29tcGF0aWJsZSBhc3NpZ25tZW50LgoKMjAwNy0wNS0yMCAgTWFydGluIE1pY2hsbWF5ciAgPHRibUBjeXJpdXMuY29tPgoKCVBSIHRhcmdldC8zMjAwNwoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc206IERlZmluZSBfX0FSTV9BUkNIX18gb24gdjIvdjMgbWFjaGluZXMuCgoyMDA3LTA1LTIwICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBtaWRkbGUtZW5kLzc2NTEKCSogZG9jL2ludm9rZS50ZXhpIChXcmV0dXJuLXR5cGUpOiBDb21wbGV0ZSBkZXNjcmlwdGlvbi4KCShXZXh0cmEpOiBEZWxldGUgaXRlbSBhYm91dCByZXR1cm4tdHlwZSB3YXJuaW5nLgoJKiBjLWRlY2wuYzogRGVsZXRlIHJlZHVuZGFudCBXZXh0cmEgd2FybmluZy4KCjIwMDctMDUtMjAgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzMxNTg1CgkqIGNvbmZpZy9pMzg2L3BtbWludHJpbi5oOiBEbyBub3QgaW5jbHVkZSB4bW1pbnRyaW4uaAoJKiBjb25maWcvaTM4Ni94bW1pbnRyaW4uaCAoX21tX2V4dHJhY3RfcGkxNik6IEltcGxlbWVudCBhcyBhbHdheXMKCWlubGluZWQgZnVuY3Rpb24sIG5vdCBhcyBhIG1hY3JvLgoJKF9tbV9wcmVmZXRjaCk6IERpdHRvLgoJKF9tX3BleHRydyk6IERpdHRvLgoJKF9tbV9pbnNlcnRfcGkxNik6IERpdHRvLgoJKF9tX3BpbnNydyk6IERpdHRvLgoJKF9tbV9zaHVmZmxlX3BpMTYpOiBEaXR0by4gIEFkZCBjb25zdCB0byBfX04gYXJndW1lbnQuCgkoX21fcHNodWZ3KTogRGl0dG8uIEFkZCBjb25zdCB0byBfX04gYXJndW1lbnQuCgkoX21tX3NodWZsZV9wcyk6IERpdHRvLiAgQWRkIGNvbnN0IHRvIF9fbWFzayBhcmd1bWVudC4KCSogY29uZmlnL2kzODYvZW1taW50cmluLmggKF9tbV9zbGxpX2VwaTE2KTogQWRkIGNvbnN0IHRvIF9fQiBhcmd1bWVudC4KCShfbW1fc2xsaV9lcGkzMik6IERpdHRvLgoJKF9tbV9zcmxpX3NpMTI4KTogSW1wbGVtZW50IGFzIGFsd2F5cyBpbmxpbmVkIGZ1bmN0aW9uLCBub3QgYXMgYQoJbWFjcm8uICBBZGQgX19pbmxpbmUgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkoX21tX3NsbGlfc2kxMjgpOiBEaXR0by4KCjIwMDctMDUtMTkgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9zZnAtbWFjaGluZS5oIChGUF9FWF9JTlZBTElELCBGUF9FWF9ERU5PUk0sCglGUF9FWFBfRElWWkVSTywgRlBfRVhfT1ZFUkZMT1csIEZQX0VYX1VOREVSRkxPVywgRlBfRVhfSU5FWEFDVCk6CglOZXcgY29uc3RhbnRzLgoJKHN0cnVjdCBmZW52KTogTmV3IHN0cnVjdHVyZS4KCShGUF9IQU5ETEVfRVhDRVBUSU9OUyk6IE5ldyBkZWZpbmUuCgkoRlBfUk5EX05FQVJFU1QsIEZQX1JORF9aRVJPLCBGUF9STkRfUElORiwgRlBfUk5EX01JTkYpOiBOZXcgY29uc3RhbnRzLgoJKF9GUF9ERUNMX0VYUCk6IE5ldyBkZWZpbmUuCgkoRlBfSU5JVF9ST1VORE1PREUpOiBOZXcgZGVmaW5lLgoJKEZQX1JPVU5ETU9ERSk6IE5ldyBkZWZpbmUuCgoyMDA3LTA1LTE5ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogQWRkIC1XY29udmVyc2lvbi1zaWduLgoJKFdjb252ZXJzaW9uKTogVXBkYXRlIGRlc2NyaXB0aW9uLgoJKFdjb252ZXJzaW9uLXNpZ24pOiBOZXcuCgkqIGMub3B0IChXY29udmVyc2lvbi1zaWduKTogTmV3LgoJKiBjLW9wdHMuYyAoY19jb21tb25fcG9zdF9vcHRpb25zKTogVW5pbml0aWFsaXplZCBXY29udmVyc2lvbi1zaWduCgltZWFucyBkaXNhYmxlZCBmb3IgQysrLiBPdGhlcndpc2UsIHRha2UgdGhlIHN0YXR1cyBvZiBXY29udmVyc2lvbi4KCSogYy1jb21tb24uYyAoY29udmVyc2lvbl93YXJuaW5nKTogV2FybiB3aXRoIGVpdGhlciBXY29udmVyc2lvbiBvcgoJV2NvbnZlcnNpb24tc2lnbi4KCSh3YXJuaW5nc19mb3JfY29udmVydF9hbmRfY2hlY2spOiBDb25kaXRpb25zIGFyZSBhbHJlYWR5IGNoZWNrZWQgYnkKCWNvbnZlcnNpb25fd2FybmluZy4KCShjb252ZXJ0X2FuZF9jaGVjayk6IERvbid0IGNoZWNrIHdhcm5pbmdzIGlmIHRoZSBjb252ZXJzaW9uIGZhaWxlZC4KCjIwMDctMDUtMTkgQW5keSBIdXRjaGluc29uIDxIdXRjaGluc29uQW5keUBuZXRzY2FwZS5uZXQ+CgkgICBBbmF0b2x5IFNva29sb3YgPGFlc29rQGRvbC5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChleHBhbmRfcHJvbG9ndWUsIGV4cGFuZF9lcGlsb2d1ZSwKCWF2cl9lcGlsb2d1ZV91c2VzKSA6IEFkZCBkZWNsYXJhdGlvbi4KCSogY29uZmlnL2F2ci9wcmVkaWNhdGVzLm1kIChhdnJfc3BfaW1tZWRpYXRlX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKiBjb25maWcvYXZyL2NvbnN0cmFpbnRzLm1kIChSKTogTmV3IGNvbnN0cmFpbnQuCgljb25maWcvYXZyL2F2ci5tZCAoU1JFR19BRERSLCBVTlNQRUNfU0VJLCBVTlNQRUNfQ0xJLAoJVU5TUEVDVl9QUk9MT0dVRV9TQVZFUywgVU5TUEVDVl9FUElMT0dVRV9SRVNUT1JFUyk6IE5ldyBjb25zdGFudHMuCgkoKnBvcDEsICpwb3AyLCAqcG9wMywgKnBvcDQsICpwb3A1KTogQ29tYmluZSBpbnRvIC4uLgoJKCphZGRoaTNfc3BfUl9wYzIsICphZGRoaTNfc3BfUl9wYzMpOiAuLi4gdGhlc2UgcGF0dGVybnMuCgkoKm1vdmhpX3NwLCBwb3BxaSwgcG9waGksIGVuYWJsZV9pbnRlcnJ1cHQsIGRpc2FibGVfaW50ZXJydXB0LAoJY2FsbF9wcm9sb2d1ZV9zYXZlcywgZXBpbG9ndWVfcmVzdG9yZXMsIHJldHVybl9mcm9tX2VwaWxvZ3VlLAoJcmV0dXJuX2Zyb21fbWFpbl9lcGlsb2d1ZSwgcmV0dXJuX2Zyb21faW50ZXJydXB0X2VwaWxvZ3VlLAoJcmV0dXJuX2Zyb21fbmFrZWRfZXBpbG9ndWUsIHByb2xvZ3VlLCBlcGlsb2d1ZSk6IE5ldyBwYXR0ZXJucy4KCShqdW1wKTogSGFuZGxlIHN5bWJvbCByZWZlcmVuY2UuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9hZGpfZnJhbWVfcHRyLCBvdXRfc2V0X3N0YWNrX3B0ciwKCWF2cl9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUsIGF2cl9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBSZW1vdmUKCWZ1bmN0aW9ucy4KCShhdnJfaW5pdF9tYWNoaW5lX3N0YXR1cywgZXhwYW5kX3Byb2xvZ3VlLCBleHBhbmRfZXBpbG9ndWUsCglhdnJfYXNtX2Z1bmN0aW9uX2VuZF9wcm9sb2d1ZSwgYXZyX2VwaWxvZ3VlX3VzZXMsCglhdnJfYXNtX2Z1bmN0aW9uX2JlZ2luX2VwaWxvZ3VlKTogTmV3IGZ1bmN0aW9ucy4KCShwcm9sb2d1ZV9zaXplLCBlcGlsb2d1ZV9zaXplLCBqdW1wX3RhYmxlc19zaXplKTogUmVtb3ZlIGdsb2JhbAoJdmFyaWFibGVzLgoJKFRBUkdFVF9BU01fRlVOQ1RJT05fUFJPTE9HVUUsIFRBUkdFVF9BU01fRlVOQ1RJT05fRVBJTE9HVUUpOiBSZW1vdmUuCgkoVEFSR0VUX0FTTV9GVU5DVElPTl9FTkRfUFJPTE9HVUUpOiBEZWZpbmUuCgkoVEFSR0VUX0FTTV9GVU5DVElPTl9CRUdJTl9FUElMT0dVRSk6IERlZmluZS4KCShhdnJfb3ZlcnJpZGVfb3B0aW9ucyk6IEluaXRpYWxpc2UgaW5pdF9tYWNoaW5lX3N0YXR1cy4KCShvdXRwdXRfbW92aGkpOiBIYW5kbGUgYWxsIHN0YWNrIHBvaW50ZXIgbG9hZHMuCgkob3V0X21vdnFpX3JfbXIsIG91dF9tb3ZxaV9tcl9yKTogSGFuZGxlIFNSRUdfQUREUiBhZGRyZXNzLgoJKGF2cl9vdXRwdXRfYWRkcl92ZWNfZWx0KTogRG8gbm90IHVzZSB2YXJpYWJsZSBqdW1wX3RhYmxlc19zaXplLgoJKiBjb25maWcvYXZyL2F2ci5oIChBVlJfMl9CWVRFX1BDLCBBVlJfM19CWVRFX1BDKTogTmV3LgoJKEVQSUxPR1VFX1VTRVMpIFJlZGVmaW5lLgoJKG1hY2hpbmVfZnVuY3Rpb24pIERlY2xhcmUuCgoyMDA3LTA1LTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vZmZzZXRfd2l0aGluX2FsaWdubWVudF9wKTogVHdlYWsgY29tbWVudC4KCVVzZSBhIHNpbmdsZSByZXR1cm4gc3RhdGVtZW50LgoKMjAwNy0wNS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMzAyNTAKCSogYnVpbHRpbnMuYyAoZG9fbXBmcl9sZ2FtbWFfcik6IE5ldy4KCShmb2xkX2J1aWx0aW5fMik6IEhhbmRsZSBidWlsdGluIGdhbW1hX3IvbGdhbW1hX3IuCgkqIHRyZWUuaCAoQ0FTRV9GTFRfRk5fUkVFTlQpOiBOZXcuCgoyMDA3LTA1LTE4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChwcmludF9kaWUpOiBVc2UgJyVsZCcgbm90ICclbHUnIHRvIHByaW50IGEgJ2xvbmcnLgoJKG91dHB1dF9kaWUpOiBVc2UgJ3Vuc2lnbmVkIGxvbmcnIHdpdGggJXguCgkqIHNjaGVkLXZpcy5jIChwcmludF92YWx1ZSk6IFVzZSAndW5zaWduZWQgSE9TVF9XSURFX0lOVCcgYW5kCglIT1NUX1dJREVfSU5UX1BSSU5UX0hFWCB0byBwcmludCBIT1NUX1dJREVfSU5ULgoJKiB0cmVlLWR1bXAuYyAoZHVtcF9wb2ludGVyKTogVXNlICd1bnNpZ25lZCBsb25nJyBmb3IgJWx4LgoKCSogdW53aW5kLWR3Mi5jICh1d19pZGVudGlmeV9jb250ZXh0KTogVXNlIHRoZSBDRkEsIG5vdCB0aGUgSVAuCgoyMDA3LTA1LTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzMxOTg5CglQUiB0YXJnZXQvMzE2ODEKCVBSIHRhcmdldC8zMTY2NgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogU2V0IG1heWJlX3ZhYXJnIHRvCgl0cnVlIGlmIGZ1bmN0aW9uIGhhcyBubyBhcmd1bWVudC4KCjIwMDctMDUtMTggIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX29mZnNldF93aXRoaW5fYWxpZ25tZW50X3ApOiBOZXcuCgkobWlwc19zeW1ib2xpY19jb25zdGFudF9wKTogQ2FsbCBpdCBmb3IgVFBSRUwgYW5kIERUUFJFTCBzeW1ib2xzLgoKMjAwNy0wNS0xOCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGxvbmdsb25nLmggKF9feDg2XzY0X18pOiBBZGQgZGVmaW5pdGlvbnMgZm9yIGFkZF9zc2FhYWEsCglzdWJfZGRtbXNzLCB1bXVsX3BwbW0sIHVkaXZfcXJubmQsIGNvdW50X2xlYWRpbmdfemVyb3MgYW5kCgljb3VudF90cmFpbGluZ196ZXJvcy4KCShfX2kzODZfXyk6IEltcGxlbWVudCBjb3VudF9sZWFkaW5nX3plcm9zIHVzaW5nIF9fYnVpbHRpbl9jbHooKS4KCUltcGxlbWVudCBjb3VudF90cmFpbGluZ196ZXJvcyB1c2lnbiBfX2J1aWx0aW5fY3R6KCkuCgoyMDA3LTA1LTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L3Z4d29ya3MuaCAoQVNNX1BSRUZFUlJFRF9FSF9EQVRBX0ZPUk1BVCk6IFVuZGVmaW5lLgoKMjAwNy0wNS0xOCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMxMzQ0CgkqIGV4cHIuYyAoZW1pdF9tb3ZlX2NoYW5nZV9tb2RlKTogQ2hhbmdlIG1vZGUgb2YgcHVzaCBvcGVyYW5kcyBoZXJlLgoKMjAwNy0wNS0xNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTk1MwoJKiB0cmVlLXZycC5jIChzZXRfdmFsdWVfcmFuZ2VfdG9fdmFsdWUpOiBBZGQgZXF1aXYgcGFyYW1ldGVyLgoJQ2hhbmdlIGFsbCBjYWxsZXJzLgoJKHNldF92YWx1ZV9yYW5nZV90b19udWxsKTogQ2FsbCBzZXRfdmFsdWVfcmFuZ2VfdG9fdmFsdWUuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCjIwMDctMDUtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRvcGxldi5jIChwcmludF92ZXJzaW9uKTogT3V0cHV0IEdNUC9NUEZSIHZlcnNpb24gaW5mby4KCgkqIGJ1aWx0aW5zLmMgKENBU0VfTUFUSEZOX1JFRU5UKTogTmV3IG1hY3JvLgoJKG1hdGhmbl9idWlsdF9pbik6IFVzZSBpdC4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9HQU1NQV9SLCBCVUlMVF9JTl9HQU1NQUZfUiwKCUJVSUxUX0lOX0dBTU1BTF9SLCBCVUlMVF9JTl9MR0FNTUFfUiwgQlVJTFRfSU5fTEdBTU1BRl9SLAoJQlVJTFRfSU5fTEdBTU1BTF9SKTogTmV3LgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IG5ldyBidWlsdGlucy4KCglQUiBtaWRkbGUtZW5kLzMxNzk2CgkqIGJ1aWx0aW5zLmMgKGRvX21wZnJfcmVtcXVvKTogTmV3LgoJKGZvbGRfYnVpbHRpbl8yKTogSGFuZGxlIEJVSUxUX0lOX0RSRU0vQlVJTFRfSU5fUkVNQUlOREVSLgoJKGZvbGRfYnVpbHRpbl8zKTogSGFuZGxlIEJVSUxUX0lOX1JFTVFVTy4KCglQUiBtaWRkbGUtZW5kLzMwMjUxCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl8xKTogSGFuZGxlIHkwLCB5MS4KCShmb2xkX2J1aWx0aW5fMik6IEhhbmRsZSB5bi4KCglQUiBtaWRkbGUtZW5kLzMwMjUxCgkqIGJ1aWx0aW5zLmMgKGRvX21wZnJfYmVzc2VsX24pOiBOZXcuCgkoZm9sZF9idWlsdGluXzEpOiBIYW5kbGUgQlVJTFRfSU5fSjAgYW5kIEJVSUxUX0lOX0oxLgoJKGZvbGRfYnVpbHRpbl8yKTogSGFuZGxlIEJVSUxUX0lOX0pOLgoKMjAwNy0wNS0xNyAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMzE5NjUKCSogY29uZmlnL2kzODYvbWluZ3czMi5oIChfSU5URUdSQUxfTUFYX0JJVFMpOiBEZWZpbmUgYnVpbHRpbiBhcwoJVFlQRV9QUkVDSVNJT04gKGludG1heF90eXBlX25vZGUpLgoKMjAwNy0wNS0xNyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgdGFyZ2V0LzMxODUwCgkqIHJlbG9hZC5jIChzdWJzdF9yZWxvYWRzKTogUmVtb3ZlIGNoZWNraW5nLgoKMjAwNy0wNS0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMxNjkxCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2V0KTogQnVpbGQgYSBuZXcgc3JjIHBhdHRlcm4gaW5zdGVhZCBvZgoJc3Vic3RpdHV0aW5nIGl0cyBvcGVyYW5kcyBpbiB0aGUgQ09NUEFSRSBjYXNlLgoKMjAwNy0wNS0xNyAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtdnJwLmMgKGZpbmFsaXplX2p1bXBfdGhyZWFkcyk6IERvIG5vdCBjYXJlIGFib3V0IGRvbWluYW5jZSBpbmZvLgoJKGV4ZWN1dGVfdnJwKTogUHJlc2VydmUgbG9vcHMgdGhyb3VnaCBqdW1wIHRocmVhZGluZy4KCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHRocmVhZF9zaW5nbGVfZWRnZSwKCWRiZHNfY29udGludWVfZW51bWVyYXRpb25fcCwgZGV0ZXJtaW5lX2JiX2RvbWluYXRpb25fc3RhdHVzLAoJdGhyZWFkX3Rocm91Z2hfbG9vcF9oZWFkZXIpOiBOZXcgZnVuY3Rpb25zLgoJKGNyZWF0ZV9lZGdlX2FuZF91cGRhdGVfZGVzdGluYXRpb25fcGhpcywKCWNyZWF0ZV9lZGdlX2FuZF91cGRhdGVfZGVzdGluYXRpb25fcGhpcyk6IFNldCBsb29wcyBmb3IgdGhlIG5ldyBibG9ja3MuCgkocHJ1bmVfdW5kZXNpcmFibGVfdGhyZWFkX3JlcXVlc3RzKTogUmVtb3ZlZC4KCShyZWRpcmVjdF9lZGdlcyk6IERvIG5vdCBwcmV0ZW5kIHRoYXQgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoIGNhbgoJY3JlYXRlIG5ldyBibG9ja3MuCgkodGhyZWFkX2Jsb2NrKTogRG8gbm90IGNhbGwgcHJ1bmVfdW5kZXNpcmFibGVfdGhyZWFkX3JlcXVlc3RzLgoJVXBkYXRlIGxvb3BzLgoJKG1hcmtfdGhyZWFkZWRfYmxvY2tzKTogU2VsZWN0IGVkZ2VzIHRvIHRocmVhZCBoZXJlLgoJKHRocmVhZF90aHJvdWdoX2FsbF9ibG9ja3MpOiBUYWtlIG1heV9wZWVsX2xvb3BfaGVhZGVycyBhcmd1bWVudC4KCVRocmVhZCBlZGdlcyB0aHJvdWdoIGxvb3AgaGVhZGVycyBpbmRlcGVuZGVudGx5LgoJKiBjZmdsb29wbWFuaXAuYyAoY3JlYXRlX3ByZWhlYWRlciwgbWZiX2tlZXBfanVzdCk6IEV4cG9ydC4KCSogdHJlZS1wYXNzLmggKFRPRE9fbWFya19maXJzdF9pbnN0YW5jZSk6IE5ldy4KCShmaXJzdF9wYXNzX2luc3RhbmNlKTogRGVjbGFyZS4KCSogY2ZnaG9va3MuYyAoZHVwbGljYXRlX2Jsb2NrKTogUHV0IHRoZSBibG9jayB0byB0aGUgb3JpZ2luYWwgbG9vcAoJaWYgY29weSBpcyBub3Qgc3BlY2lmaWVkLgoJKiB0cmVlLXNzYS1kb20uYyAodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogUHJlc2VydmUgbG9vcHMgdGhyb3VnaAoJanVtcCB0aHJlYWRpbmcuICBQYXNzIG1heV9wZWVsX2xvb3BfaGVhZGVycyB0bwoJdGhyZWFkX3Rocm91Z2hfYWxsX2Jsb2NrcyBhY2NvcmRpbmcgdG8gZmlyc3RfcGFzc19pbnN0YW5jZS4KCSogY2ZnbG9vcC5oIChjcmVhdGVfcHJlaGVhZGVyKTogRGVjbGFyZS4KCSogdHJlZS1mbG93LmggKHRocmVhZF90aHJvdWdoX2FsbF9ibG9ja3MpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKiBiYXNpYy1ibG9jay5oIChtZmJfa2VlcF9qdXN0LCBtZmJfa2pfZWRnZSk6IERlY2xhcmUuCgkqIHBhc3Nlcy5jIChmaXJzdF9wYXNzX2luc3RhbmNlKTogTmV3IHZhcmlhYmxlLgoJKG5leHRfcGFzc18xKTogU2V0IFRPRE9fbWFya19maXJzdF9pbnN0YW5jZS4KCShleGVjdXRlX3RvZG8pOiBTZXQgZmlyc3RfcGFzc19pbnN0YW5jZS4KCjIwMDctMDUtMTcgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjQ2NTkKCSogb3B0YWJzLmggKGVudW0gb3B0YWJfaW5kZXgpOiBBZGQgT1RJX3ZlY191bnBhY2tzX2Zsb2F0X2hpLAoJT1RJX3ZlY191bnBhY2tzX2Zsb2F0X2xvLCBPVElfdmVjX3VucGFja3VfZmxvYXRfaGksCglPVElfdmVjX3VucGFja3VfZmxvYXRfbG8sIE9USV92ZWNfcGFja19zZml4X3RydW5jIGFuZAoJT1RJX3ZlY19wYWNrX3VmaXhfdHJ1bmMuCgkodmVjX3VucGFja3NfZmxvYXRfaGlfb3B0YWIpOiBEZWZpbmUgbmV3IG1hY3JvLgoJKHZlY191bnBhY2tzX2Zsb2F0X2xvX29wdGFiKTogRGl0dG8uCgkodmVjX3VucGFja3VfZmxvYXRfaGlfb3B0YWIpOiBEaXR0by4KCSh2ZWNfdW5wYWNrdV9mbG9hdF9sb19vcHRhYik6IERpdHRvLgoJKHZlY19wYWNrX3NmaXhfdHJ1bmNfb3B0YWIpOiBEaXR0by4KCSh2ZWNfcGFja191Zml4X3RydW5jX29wdGFiKTogRGl0dG8uCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBJbXBsZW1lbnQgdmVjX3VucGFja1tzfHVdX1toaXxsb11fb3B0YWIKCWFuZCB2ZWNfcGFja19bc3x1XWZpeF90cnVuY19vcHRhYiB1c2luZwoJdmVjX3VucGFja1tzfHVdX1toaVxsb11fKiBhbmQgdmVjX3BhY2tfW3V8c11maXhfdHJ1bmNfKiBwYXR0ZXJucwoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0aW9uKTogSGFuZGxlCglGTE9BVF9FWFBSIGFuZCBDT05WRVJUX0VYUFIuICBVcGRhdGUgY29tbWVudC4KCShzdXBwb3J0YWJsZV9uYXJyb3dpbmdfb3BlcmF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAoc3VwcG9ydGFibGVfbmFycm93aW5nX29wZXJhdGlvbik6IFByb3RvdHlwZS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0b3JpemFibGVfY29udmVyc2lvbik6IEhhbmRsZQoJKG51bml0c19pbiA9PSBudW5pdHNfb3V0IC8gMikgYW5kIChudW5pdHNfb3V0ID09IG51bml0c19pbiAvIDIpIGNhc2VzLgoJKHZlY3RfZ2VuX3dpZGVuZWRfcmVzdWx0c19oYWxmKTogTW92ZSBiZWZvcmUgdmVjdG9yaXphYmxlX2NvbnZlcnNpb24uCgkodmVjdG9yaXphYmxlX3R5cGVfZGVtb3Rpb24pOiBDYWxsIHN1cHBvcnRhYmxlX25hcnJvd2luZ19vcGVyYXRpb24oKQoJdG8gY2hlY2sgZm9yIHRhcmdldCBzdXBwb3J0LgoJKiBvcHRhYnMuYyAob3B0YWJfZm9yX3RyZWVfY29kZSkgUmV0dXJuIHZlY191bnBhY2tbc3x1XV9mbG9hdF9oaV9vcHRhYgoJZm9yIFZFQ19VTlBBQ0tfRkxPQVRfSElfRVhQUiwgdmVjX3VucGFja1tzfHVdX2Zsb2F0X2xvX29wdGFiCglmb3IgVkVDX1VOUEFDS19GTE9BVF9MT19FWFBSIGFuZCB2ZWNfcGFja19bdXxzXWZpeF90cnVuY19vcHRhYgoJZm9yIFZFQ19QQUNLX0ZJWF9UUlVOQ19FWFBSLgoJKGV4cGFuZF9iaW5vcCk6IFNwZWNpYWwgY2FzZSBtb2RlIG9mIHRoZSByZXN1bHQgZm9yCgl2ZWNfcGFja19bdXxzXWZpeF90cnVuY19vcHRhYi4KCShpbml0X29wdGFicyk6IEluaXRpYWxpemUgdmVjX3VucGFja1tzfHVdX1toaXxsb11fb3B0YWIgYW5kCgl2ZWNfcGFja19bdXxzXWZpeF90cnVuY19vcHRhYi4KCgkqIHRyZWUuZGVmIChWRUNfVU5QQUNLX0ZMT0FUX0hJX0VYUFIsIFZFQ19VTlBBQ0tfRkxPQVRfTE9fRVhQUiwKCVZFQ19QQUNLX0ZJWF9UUlVOQ19FWFBSKTogTmV3IHRyZWUgY29kZXMuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogSGFuZGxlCglWRUNfVU5QQUNLX0ZMT0FUX0hJX0VYUFIsIFZFQ19VTlBBQ0tfRkxPQVRfTE9fRVhQUiBhbmQKCVZFQ19QQUNLX0ZJWF9UUlVOQ19FWFBSLgoJKG9wX3ByaW8pOiBEaXR0by4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBEaXR0by4KCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBEaXR0by4KCSogdHJlZS12ZWN0LWdlbmVyaWMuYyAoZXhwYW5kX3ZlY3Rvcl9vcGVyYXRpb25zXzEpOiBEaXR0by4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAodmVjX3VucGFja3NfZmxvYXRfaGlfdjhoaSk6IE5ldyBleHBhbmRlci4KCSh2ZWNfdW5wYWNrc19mbG9hdF9sb192OGhpKTogRGl0dG8uCgkodmVjX3VucGFja3VfZmxvYXRfaGlfdjhoaSk6IERpdHRvLgoJKHZlY191bnBhY2t1X2Zsb2F0X2xvX3Y4aGkpOiBEaXR0by4KCSh2ZWNfdW5wYWNrc19mbG9hdF9oaV92NHNpKTogRGl0dG8uCgkodmVjX3VucGFja3NfZmxvYXRfbG9fdjRzaSk6IERpdHRvLgoJKHZlY19wYWNrX3NmaXhfdHJ1bmNfdjJkZik6IERpdHRvLgoKCSogZG9jL2MtdHJlZS50ZXhpIChFeHByZXNzaW9uIHRyZWVzKSBbVkVDX1VOUEFDS19GTE9BVF9ISV9FWFBSXToKCURvY3VtZW50LgoJW1ZFQ19VTlBBQ0tfRkxPQVRfTE9fRVhQUl06IERpdHRvLgoJW1ZFQ19QQUNLX0ZJWF9UUlVOQ19FWFBSXTogRGl0dG8uCgkqIGRvYy9tZC50ZXhpIChTdGFuZGFyZCBOYW1lcykgW3ZlY19wYWNrX3NmaXhfdHJ1bmNdOiBEb2N1bWVudC4KCVt2ZWNfcGFja191Zml4X3RydW5jXTogRGl0dG8uCglbdmVjX3VucGFja3NfZmxvYXRfaGldOiBEaXR0by4KCVt2ZWNfdW5wYWNrc19mbG9hdF9sb106IERpdHRvLgoJW3ZlY191bnBhY2t1X2Zsb2F0X2hpXTogRGl0dG8uCglbdmVjX3VucGFja3VfZmxvYXRfbG9dOiBEaXR0by4KCjIwMDctMDUtMTYgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBzb2Z0LWZwL1JFQURNRTogVXBkYXRlIGZvciBuZXcgZmlsZXMuCgkqIHNvZnQtZnAvZmxvYXR0aXNmLmM6IE5ldyBmaWxlLgoJKiBzb2Z0LWZwL2Zsb2F0dGlkZi5jOiBOZXcgZmlsZS4KCSogc29mdC1mcC9mbG9hdHRpdGYuYzogTmV3IGZpbGUuCgkqIHNvZnQtZnAvZmxvYXR1bnRpc2YuYzogTmV3IGZpbGUuCgkqIHNvZnQtZnAvZmxvYXR1bnRpZGYuYzogTmV3IGZpbGUuCgkqIHNvZnQtZnAvZmxvYXR1bnRpdGYuYzogTmV3IGZpbGUuCgkqIHNvZnQtZnAvZml4c2Z0aS5jOiBOZXcgZmlsZS4KCSogc29mdC1mcC9maXhkZnRpLmM6IE5ldyBmaWxlLgoJKiBzb2Z0LWZwL2ZpeHRmdGkuYzogTmV3IGZpbGUuCgkqIHNvZnQtZnAvZml4dW5zc2Z0aS5jOiBOZXcgZmlsZS4KCSogc29mdC1mcC9maXh1bnNkZnRpLmM6IE5ldyBmaWxlLgoJKiBzb2Z0LWZwL2ZpeHVuc3RmdGkuYzogTmV3IGZpbGUuCgkqIHNvZnQtZnAvZXh0ZW5keGZ0Zi5jOiBOZXcgZmlsZS4KCSogc29mdC1mcC90cnVuY3RmeGYuYzogTmV3IGZpbGUuCgoJKiBsaWJnY2Mtc3RkLnZlciAoX19leHRlbmR4ZnRmMik6IEFkZGVkIHRvIEdDQ180LjMuMCBzZWN0aW9uLgoJKF9fdHJ1bmN0ZnhmMik6IERpdHRvLgoKCSogY29uZmlnL2kzODYvbGliZ2NjLXg4Nl82NC1nbGliYy52ZXIgKF9fYWRkdGYzLCBfX2RpdnRmMywgX19lcXRmMiwKCV9fZXh0ZW5kZGZ0ZjIsIF9fZXh0ZW5kc2Z0ZjIsIF9fZml4dGZkaSwgX19maXh0ZnNpLCBfX2ZpeHRmdGksCglfX2ZpeHVuc3RmZGksIF9fZml4dW5zdGZzaSwgX19maXh1bnN0ZnRpLCBfX2Zsb2F0ZGl0ZiwgX19mbG9hdHNpdGYsCglfX2Zsb2F0dGl0ZiwgX19mbG9hdHVuZGl0ZiwgX19mbG9hdHVuc2l0ZiwgX19mbG9hdHVudGl0ZiwgX19nZXRmMiwKCV9fbGV0ZjIsIF9fbXVsdGYzLCBfX25lZ3RmMiwgX19zdWJ0ZjMsIF9fdHJ1bmN0ZmRmMiwgX190cnVuY3Rmc2YyLAoJX191bm9yZHRmMik6IEV4Y2x1ZGUgYW5kIGFkZCB0byBHQ0NfNC4zLjAgc2VjdGlvbiBmb3IgeDg2XzY0IHRhcmdldHMuCgoJKiBjb25maWcvaTM4Ni90LWZwcnVsZXMtc29mdGZwNjQ6IE5ldyBmaWxlLgoJKiBjb25maWcvaTM4Ni9zZnAtbWFjaGluZS5oOiBOZXcgZmlsZS4KCSogY29uZmlnLmdjYyAoeDg2XzY0LSotbGludXgqLCB4ODZfNjQtKi1rZnJlZWJzZCotZ251LAoJeDg2XzY0LSota25ldGJzZCotZ251KTogQWRkIGkzODYvdC1mcHJ1bGVzLXNvZnRmcDY0CglhbmQgc29mdC1mcC90LXNvZnRmcCB0byB0bWFrZV9maWxlLgoJKGlbMzQ1NjddODYtKi1saW51eCosIGlbMzQ1NjddODYtKi1rZnJlZWJzZCotZ251LAoJaVszNDU2N104Ni0qLWtuZXRic2QqLWdudSk6IERpdHRvIGZvciAtLWVuYWJsZS10YXJnZXRzPWFsbC4KCgkqIGNvbmZpZy9pMzg2L3QtbGludXg2NCAoc29mdGZwX3dyYXBfc3RhcnQpOiBOZXcuCgkoc29mdGZwX3dyYXBfZW5kKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfc2NhbGFyX21vZGVfc3VwcG9ydGVkKTogVEZtb2RlIGlzCglzdXBwb3J0ZWQgZm9yIFRBUkdFVF82NEJJVC4KCjIwMDctMDUtMTYgIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxlc3BpbmRvbGFAZ29vZ2xlLmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogRW11bGF0ZQoJY19jb21tb25fdW5zaWduZWRfdHlwZSBiZWhhdmlvci4KCjIwMDctMDUtMTYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MpOiBNYXJrIF9fdGxzX2dldF9hZGRyCgljYWxscyBhcyBwdXJlLgoKMjAwNy0wNS0xNiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogTW92ZSBhbHRpdmVjIHJlZ2lzdGVyCglzYXZpbmcgYWZ0ZXIgc3RhY2sgcHVzaC4gU2V0IHNwX29mZnNldCB3aGVuZXZlciB3ZSBwdXNoLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogTW92ZSBhbHRpdmVjIHJlZ2lzdGVyIHJlc3RvcmUgYmVmb3JlCglzdGFjayBwdXNoLgoKMjAwNy0wNS0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IEFsbG93IHN5c3Jvb3RzIHRvIGJlIHJlbG9jYXRlZCB1bmRlciAkcHJlZml4IGFzCgl3ZWxsIGFzICRleGVjX3ByZWZpeC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNy0wNS0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUmV2ZXJ0OgoKCTIwMDctMDUtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjIChnY2NfZ3h4X2luY2x1ZGVfZGlyKTogVXNlICQobGlic3ViZGlyX3RvX3ByZWZpeCkuCgkoZ2NjX3Rvb2xkaXIpOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbiAobGlic3ViZGlyX3RvX3ByZWZpeCk6IE5ldyB2YXJpYWJsZSwgYmFzZWQgb24gdGhlCglvbGQgY29uZmlndXJlLmFjIGdjY190b29sZGlyIHNldHRpbmcuCgkocHJlZml4X3RvX2V4ZWNfcHJlZml4KTogTmV3IHZhcmlhYmxlLgoJKERSSVZFUl9ERUZJTkVTKTogVXNlICQobGlic3ViZGlyX3RvX3ByZWZpeCkkKHByZWZpeF90b19leGVjX3ByZWZpeCkKCXJhdGhlciB0aGFuICQodW5saWJzdWJkaXIpLy4uLyB0byBkZXJpdmUgVE9PTERJUl9CQVNFX1BSRUZJWC4KCjIwMDctMDUtMTQgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogUmV0dXJuIGVhcmx5IGZvciBlcnJvci4KCjIwMDctMDUtMTUgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHJlY29yZF9lc3RpbWF0ZSk6IFVzZSBHR0NfTkVXIHRvIGFsbG9jYXRlCglzdHJ1Y3QgbmJfaXRlcl9ib3VuZC4KCShmcmVlX251bWJlcnNfb2ZfaXRlcmF0aW9uc19lc3RpbWF0ZXNfbG9vcCk6IFVzZSBnZ2NfZnJlZS4KCSogZ2VuZ3R5cGUuYyAob3Blbl9iYXNlX2ZpbGVzKTogQWRkIGNmaGxvb3AuaCB0byB0aGUgbGlzdCBvZiBpbmNsdWRlcy4KCSogY2ZnbG9vcG1hbmlwLmMgKHBsYWNlX25ld19sb29wKTogVmVjdG9yIGxhcnJheSBpcyBnYy1hbGxvY2F0ZWQuCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jOiBJbmNsdWRlIGd0LXRyZWUtc2NhbGFyLWV2b2x1dGlvbi5oLgoJKHN0cnVjdCBzY2V2X2luZm9fc3RyLCBzY2FsYXJfZXZvbHV0aW9uX2luZm8pOiBBZGQgR1RZIG1hcmtlcnMuCgkobmV3X3NjZXZfaW5mb19zdHIpOiBVc2UgR0dDX05FVyB0byBhbGxvY2F0ZSBzdHJ1Y3Qgc2Nldl9pbmZvX3N0ci4KCShkZWxfc2Nldl9pbmZvKTogVXNlIGdnY19mcmVlLgoJKHNjZXZfaW5pdGlhbGl6ZSk6IEFsbG9jYXRlIHNjYWxhcl9ldm9sdXRpb25faW5mbyBpbiBnYyBtZW1vcnkuCgkqIGxvb3AtaW5pdC5jOiBJbmNsdWRlIGdnYy5oLgoJKGxvb3Bfb3B0aW1pemVyX2luaXQpOiBVc2UgR0dDX0NORVcgdG8gYWxsb2NhdGUgc3RydWN0IGxvb3BzLgoJKGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXplKTogVXNlIGdnY19mcmVlLgoJKiB0cmVlLXNzYS1sb29wLmMgKHBhc3NfdHJlZV91bnN3aXRjaCwgcGFzc192ZWN0b3JpemUsCglwYXNzX2xpbmVhcl90cmFuc2ZvbSwgcGFzc19lbXB0eV9sb29wLCBwYXNzX2NvbXBsZXRlX3Vucm9sbCwKCXBhc3NfaXZfb3B0aW1pemUpOiBBZGQgVE9ET19nZ2NfY29sbGVjdC4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIHNraXAgbWFya2VyIGZyb20KCXhfY3VycmVudF9sb29wcy4KCSogY2ZnbG9vcC5jOiBJbmNsdWRlIGdnYy5oLgoJKGZsb3dfbG9vcHNfZnJlZSwgZmxvd19sb29wX2ZyZWUpOiBGcmVlIHRoZSBsb29wIGRlc2NyaXB0aW9ucyBpbiBnYwoJbWVtb3J5LgoJKGVzdGFibGlzaF9wcmVkcyk6IFZlY3RvciBzdXBlcmxvb3BzIGlzIGdjIGFsbG9jYXRlZC4KCShhbGxvY19sb29wKTogQWxsb2NhdGUgbG9vcCB1c2luZyBHR0NfQ05FVy4gIEFsbG9jYXRlIGhlYWQgb2YKCWxvb3AtPmV4aXRzIGxpc3QuCgkoZmxvd19sb29wc19maW5kKTogVmVjdG9yIGxhcnJheSBpcyBnYyBhbGxvY2F0ZWQuCgkobG9vcF9leGl0X2ZyZWUpOiBVc2UgZ2djX2ZyZWUuCgkocmVzY2FuX2xvb3BfZXhpdCk6IFVzZSBHR0NfTkVXIHRvIGFsbG9jYXRlIHN0cnVjdCBsb29wX2V4aXQuICBSZWZsZWN0Cgl0aGF0IGhlYWQgb2YgZXhpdHMgbGlzdCBpcyBub3cgbm90IGEgcGFydCBvZiBzdHJ1Y3QgbG9vcC4KCShyZWNvcmRfbG9vcF9leGl0cyk6IEFsbG9jYXRlIGV4aXRzIHRhYmxlIGluIGdjIG1lbW9yeS4KCShnZXRfbG9vcF9leGl0X2VkZ2VzLCB2ZXJpZnlfbG9vcF9zdHJ1Y3R1cmUsIHNpbmdsZV9leGl0KTogUmVmbGVjdAoJdGhhdCBoZWFkIG9mIGV4aXRzIGxpc3QgaXMgbm93IG5vdCBhIHBhcnQgb2Ygc3RydWN0IGxvb3AuCgkqIGNmZ2xvb3AuaCAoc3RydWN0IGxwdF9kZWNpc2lvbiwgc3RydWN0IG5iX2l0ZXJfYm91bmQsCglzdHJ1Y3QgbG9vcF9leGl0KTogQWRkIEdUWSBtYXJrZXIuCgkoc3RydWN0IGxvb3ApOiBBZGQgR1RZIG1hcmtlci4gIE1ha2Ugc3VwZXJsb29wcyB2ZWN0b3IgZ2MgYWxsb2NhdGVkLgoJQWRkIHNraXAgbWFya2VyIHRvIGF1eCBmaWVsZC4gIE1ha2UgaGVhZCBvZiBleGl0cyBsaXN0IGEgc2VwYXJhdGUKCW9iamVjdC4KCShzdHJ1Y3QgbG9vcHMpOiBBZGQgR1RZIG1hcmtlci4gIE1ha2UgbGFycmF5IHZlY3RvciBnYyBhbGxvY2F0ZWQuCglBZGQgcGFyYW0gbWFya2VyIHRvIGV4aXRzIHRhYmxlLgoJKGdldF9sb29wcyk6IFR5cGUgY2hhbmdlZC4KCSogTWFrZWZpbGUuaW4gKHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5vKTogQWRkCglndC10cmVlLXNjYWxhci1ldm9sdXRpb24uaCBkZXBlbmRlbmN5LgoJKGNmZ2xvb3AubywgbG9vcC1pbml0Lm8pOiBBZGQgZ2djLmggZGVwZW5kZW5jeS4KCShHVEZJTEVTKTogQWRkIGNmZ2xvb3AuaCBhbmQgdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMuCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBiYXNpY19ibG9ja19kZWYpOiBSZW1vdmUgc2tpcCBtYXJrZXIgZnJvbQoJbG9vcF9mYXRoZXIgZmllbGQuCgoyMDA3LTA1LTE0ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWF0aGZuKTogVXNlIEVYUEFORF9OT1JNQUwgaW5zdGVhZAoJb2YgMCBpbiB0aGUgY2FsbCB0byBleHBhbmRfZXhwcigpLgoJKGV4cGFuZF9idWlsdGluX21hdGhmbl8zKTogRGl0dG8uCgkoZXhwYW5kX2J1aWx0aW5faW50ZXJjbGFzc19tYXRoZm4pOiBEaXR0by4KCShleHBhbmRfYnVpbHRpbl9jZXhwaSk6IERpdHRvLgoJKGV4cGFuZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuKTogRGl0dG8uCgkoZXhwYW5kX2J1aWx0aW5faW50X3JvdW5kaW5nZm5fMik6IERpdHRvLgoJKGV4cGFuZF9idWlsdGluX3Bvdyk6IERpdHRvLgoJKGV4cGFuZF9idWlsdGluX3Bvd2kpOiBEaXR0by4KCShleHBhbmRfYnVpbHRpbl9ic3dhcCk6IERpdHRvLgoJKGV4cGFuZF9idWlsdGluX3Vub3ApOiBEaXR0by4KCShleHBhbmRfYnVpbHRpbl9mYWJzKTogRGl0dG8uCgkoZ2V0X2J1aWx0aW5fc3luY19tZW0pOiBVc2UgTlVMTF9SVFggaW5zdGVhZCBvZiBOVUxMIGluCgl0aGUgY2FsbCB0byBleHBhbmRfZXhwcigpLgoJKGV4cGFuZF9idWlsdGluX3N5bmNfb3BlcmF0aW9uKTogRGl0dG8uCgkoZXhwYW5kX2J1aWx0aW5fY29tcGFyZV9hbmRfc3dhcCk6IERpdHRvLgoJKGV4cGFuZF9idWlsdGluX2xvY2tfdGVzdF9hbmRfc2V0KTogRGl0dG8uCgkqIGV4Y2VwdC5jIChleHBhbmRfYnVpbHRpbl9laF9yZXR1cm5fZGF0YV9yZWdubyk6IFVzZSBFWFBBTkRfTk9STUFMCglpbnN0ZWFkIG9mIDAgaW4gdGhlIGNhbGwgdG8gZXhwYW5kX2V4cHIoKS4KCShleHBhbmRfYnVpbHRpbl9leHRyYWN0X3JldHVybl9hZGRyKTogRGl0dG8uCgkoZXhwYW5kX2J1aWx0aW5fZWhfcmV0dXJuKTogRGl0dG8uCgkoZXhwYW5kX2VoX3JldHVybik6IERpdHRvLgoJKiBleHBsb3cuYyAoZXhwcl9zaXplKTogRGl0dG8uCgkqIGV4cHIuYyAob3B0aW1pemVfYml0ZmllbGRfYXNzaWdubWVudF9vcCk6IERpdHRvLgoJKGV4cGFuZF9hc3NpZ25lbWVudCk6IERpdHRvLgoJKHN0b3JlX2V4cHIpOiBEaXR0by4KCShzdG9yZV9maWVsZCk6IERpdHRvLgoJKGV4cGFuZF9leHByX2FkZHJfZXhwcl8xKTogVXNlIE5VTExfUlRYIGluc3RlYWQgb2YgTlVMTCBpbgoJdGhlIGNhbGwgdG8gZXhwYW5kX2V4cHIoKS4KCShleHBhbmRfZXhwcl9yZWFsXzEpIFtDT01QTEVYX0NTVF06IFVzZSBFWFBBTkRfTk9STUFMIGluc3RlYWQgb2YgMAoJaW4gdGhlIGNhbGwgdG8gZXhwYW5kX2V4cHIoKS4KCVtDT05TVFJVQ1RPUiwgUExVU19FWFBSLCBNSU5VU19FWFBSLCBORUdBVEVfRVhQUiwgQUJTX0VYUFIsCglCSVRfTk9UX0VYUFIsIExTSElGVF9FWFBSLCBMVF9FWFBSLCBUUlVUSF9OT1RfRVhQUl06IERpdHRvLgoJW1ZFQ19VTlBBQ0tfSElfRVhQUiwgVkVDX1VOUEFDS19MT106IFVzZSBleHBhbmRfbm9ybWFsKCkgaW5zdGVhZAoJb2YgZXhwYW5kX2V4cHIoKS4KCSogb3B0YWJzLmMgKGV4cGFuZF92ZWNfc2hpZnRfZXhwcik6IERpdHRvLgoJKGV4cGFuZF92ZWNfY29uZF9leHByKTogRGl0dG8uCgkodmVjdG9yX2NvbXBhcmVfcnR4KTogVXNlIEVYUEFORF9TVEFDS19QQVJNIGluc3RlYWQgb2YgMSBpbiB0aGUKCWNhbGwgdG8gZXhwYW5kX2V4cHIoKS4KCSogc3RtdC5jIChleHBhbmRfcmV0dXJuKTogVXNlIEVYUEFORF9OT1JNQUwgaW5zdGVhZCBvZiAwCglpbiB0aGUgY2FsbCB0byBleHBhbmRfZXhwcigpLgoKMjAwNy0wNS0xNCAgRGF2ZSBLb3JuICA8ZGF2ZS5rb3JuQGFydGltaS5jb20+CgoJKiBnZW5hdXRvbWF0YS5jIChnZW5fcmVnZXhwX2VsKTogQWxsb2NhdGUgY29ycmVjdCBzaXplIGZvciByZWdleHAuCgoyMDA3LTA1LTE0ICBSYWZhZWwgQXZpbGEgZGUgRXNwaW5kb2xhICA8ZXNwaW5kb2xhQGdvb2dsZS5jb20+CgoJKiBjLWNvbW1vbi5jICh3YXJuaW5nc19mb3JfY29udmVydF9hbmRfY2hlY2spOiBVc2UgdW5zaWduZWRfdHlwZV9mb3IKCWluc3RlYWQgb2YgY19jb21tb25fdW5zaWduZWRfdHlwZS4KCShjX2NvbW1vbl91bnNpZ25lZF90eXBlKTogUmVtb3ZlLgoJKHNob3J0ZW5fY29tcGFyZSk6IFVzZSBjX2NvbW1vbl9zaWduZWRfb3JfdW5zaWduZWRfdHlwZSBpbnN0ZWFkIG9mCgljX2NvbW1vbl91bnNpZ25lZF90eXBlLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFVzZSB1bnNpZ25lZF90eXBlX2ZvciBpbnN0ZWFkIG9mCgljX2NvbW1vbl91bnNpZ25lZF90eXBlLgoJKiBjLWNvbW1vbi5oIChjX2NvbW1vbl91bnNpZ25lZF90eXBlKTogUmVtb3ZlLgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgdW5zaWduZWRfdHlwZV9mb3IgaW5zdGVhZCBvZgoJY19jb21tb25fdW5zaWduZWRfdHlwZS4KCSogYy1mb3JtYXQuYyAoY2hlY2tfZm9ybWF0X3R5cGVzKTogVXNlIHVuc2lnbmVkX3R5cGVfZm9yIGluc3RlYWQgb2YKCWNfY29tbW9uX3Vuc2lnbmVkX3R5cGUuCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19VTlNJR05FRF9UWVBFKTogUmVtb3ZlLgoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogVXNlIHVuc2lnbmVkX3R5cGVfZm9yIGluc3RlYWQKCW9mIGNfY29tbW9uX3Vuc2lnbmVkX3R5cGUuCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogVXNlIHVuc2lnbmVkX3R5cGVfZm9yIGluc3RlYWQgb2YKCWxhbmdfaG9va3MudHlwZXMudW5zaWduZWRfdHlwZS4KCSogZXhwbWVkLmMgKG1ha2VfdHJlZSk6IFVzZSB1bnNpZ25lZF90eXBlX2ZvciBpbnN0ZWFkIG9mCglsYW5nX2hvb2tzLnR5cGVzLnVuc2lnbmVkX3R5cGUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9uZWdhdGVfZXhwcik6IFVzZSB1bnNpZ25lZF90eXBlX2ZvciBpbnN0ZWFkIG9mCglsYW5nX2hvb2tzLnR5cGVzLnVuc2lnbmVkX3R5cGUuCgkoYnVpbGRfcmFuZ2VfY2hlY2spOiBMaWtld2lzZS4KCShmb2xkX3VuYXJ5KTogTGlrZXdpc2UuCgkoZm9sZF9iaW5hcnkpOiBMaWtld2lzZS4KCShmb2xkX3Rlcm5hcnkpOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1VOU0lHTkVEX1RZUEUpOiBSZW1vdmUuCgkqIGxhbmdob29rcy5oIChsYW5nX2hvb2tzX2Zvcl90eXBlcyk6IFJlbW92ZSB1bnNpZ25lZF90eXBlLgoJKiB0cmVlLmMgKGdldF91bnNpZ25lZF90eXBlKTogTmV3LgoJKHVuc2lnbmVkX3R5cGVfZm9yKTogVXNlIGdldF91bnNpZ25lZF90eXBlIGluc3RlYWQgb2YKCWxhbmdfaG9va3MudHlwZXMudW5zaWduZWRfdHlwZS4KCjIwMDctMDUtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaDogUmVuYW1lIG02OGtfaW50ZXJydXB0X2Z1bmN0aW9uX3AKCXRvIG02OGtfZ2V0X2Z1bmN0aW9uX2tpbmQuICBVcGRhdGUgaXRzIHByb3RvdHlwZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBhbiBlbnRyeSBmb3IKCWludGVycnVwdF90aHJlYWQuCgkobTY4a19pbnRlcnJ1cHRfZnVuY3Rpb25fcCk6IFJldHVybiBlbnVtIG02OGtfZnVuY3Rpb25fdHlwZQoJaW5zdGVhZCBvZiBib29sLiAgUmVuYW1lIHRvIG02OGtfZ2V0X2Z1bmN0aW9uX2tpbmQuCgkobTY4a19oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSk6IFJlamVjdCBpbnRlcnJ1cHRfdGhyZWFkIGlmIHRoZQoJdGFyZ2V0IGlzIG5vdCBmaWRvLgoJKG02OGtfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOiBEb24ndCBtYXJrIGFueSByZWdpc3RlciBmb3Igc2F2ZQoJaWYgYW4gaW50ZXJydXB0X3RocmVhZCBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLgoJKG02OGtfaGFyZF9yZWdub19yZW5hbWVfb2spOiBVcGRhdGUgYSB1c2Ugb2YKCW02OGtfaW50ZXJydXB0X2Z1bmN0aW9uX3AuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoRVBJTE9HVUVfVVNFUyk6IFVwZGF0ZSBhIHVzZSBvZgoJbTY4a19pbnRlcnJ1cHRfZnVuY3Rpb25fcC4KCShtNjhrX2Z1bmN0aW9uX3R5cGUpOiBOZXcuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKCpyZXR1cm4pOiBPdXRwdXQgYSAnc2xlZXAnIGluc3RydWN0aW9uCglmb3IgYSBmdW5jdGlvbiB3aXRoIGFuIGludGVycnVwdF90aHJlYWQgYXR0cmlidXRlLgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IHRoZSBpbnRlcnJ1cHRfdGhyZWFkIGF0dHJpYnV0ZS4KCjIwMDctMDUtMTMgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8zMTkxMQoJKiB0cmVlLXNzYS1wcmUuYyAocGhpX3RyYW5zbGF0ZSk6IE1ha2Ugc3VyZSB0byBjYWNoZSByZXN1bHRzIGV2ZW4KCWlmIHRoZXkgZGlkbid0IGNoYW5nZSB0aGUgZXhwcmVzc2lvbi4KCjIwMDctMDUtMTMgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAocmVzb2x2ZV9taXhlcnMpOiBFeHBvcnRlZC4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmggKHJlc29sdmVfbWl4ZXJzKTogRGVjbGFyZS4KCSogdHJlZS1kYXRhLXJlZi5jIChvYmplY3RfYW5hbHlzaXMsIHB0cl9kZWNsX21heV9hbGlhc19wLAoJcHRyX3B0cl9tYXlfYWxpYXNfcCwgbWF5X2FsaWFzX3AsIHJlY29yZF9wdHJfZGlmZmVyX3AsCglyZWNvcmRfcmVjb3JkX2RpZmZlcl9wLCByZWNvcmRfYXJyYXlfZGlmZmVyX3AsIGFycmF5X3B0cl9kaWZmZXJfcCwKCWJhc2Vfb2JqZWN0X2RpZmZlcl9wLCBiYXNlX2FkZHJfZGlmZmVyX3AsIGFuYWx5emVfYXJyYXlfaW5kZXhlcywKCWluaXRfYXJyYXlfcmVmLCBpbml0X3BvaW50ZXJfcmVmLCBhbmFseXplX2luZGlyZWN0X3JlZiwKCXN0cmlwX2NvbnZlcnNpb24sIGFuYWx5emVfb2Zmc2V0X2V4cHIsIGFkZHJlc3NfYW5hbHlzaXMsCglvYmplY3RfYW5hbHlzaXMsIGFuYWx5emVfb2Zmc2V0KTogUmVtb3ZlZC4KCShkcl9hbmFseXplX2lubmVybW9zdCwgZHJfYW5hbHl6ZV9pbmRpY2VzLCBkcl9hbmFseXplX2FsaWFzLAoJc3BsaXRfY29uc3RhbnRfb2Zmc2V0LCBjYW5vbmljYWxpemVfYmFzZV9vYmplY3RfYWRkcmVzcywKCW9iamVjdF9hZGRyZXNzX2ludmFyaWFudF9pbl9sb29wX3AsIGRpc2pvaW50X29iamVjdHNfcCwKCWRyX21heV9hbGlhc19wLCBkcl9hZGRyZXNzX2ludmFyaWFudF9wKTogTmV3IGZ1bmN0aW9ucy4KCShjcmVhdGVfZGF0YV9yZWYpOiBVc2UgZHJfYW5hbHl6ZV9pbm5lcm1vc3QsIGRyX2FuYWx5emVfaW5kaWNlcwoJYW5kIGRyX2FuYWx5emVfYWxpYXMuCgkoaW5pdGlhbGl6ZV9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBVc2UgZHJfbWF5X2FsaWFzX3AKCWFuZCBvYmplY3RfYWRkcmVzc19pbnZhcmlhbnRfaW5fbG9vcF9wLgoJKGNvbXB1dGVfc2VsZl9kZXBlbmRlbmNlKTogSGFuZGxlIHRoZSBjYXNlIHdoZW4KCUREUl9BUkVfREVQRU5ERU5UIChkZHIpIGlzIGNocmVjX2RvbnRfa25vdy4KCShmaW5kX2RhdGFfcmVmZXJlbmNlc19pbl9zdG10KTogUmVzdHJpY3QgdGhlIGFuYWx5c2lzIG9mIGRhdGEKCXJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGxvb3AgbmVzdC4KCShmaW5kX2RhdGFfcmVmZXJlbmNlc19pbl9sb29wKTogTWFkZSBzdGF0aWMuICBQYXNzIGxvb3AgbmVzdCB0bwoJZmluZF9kYXRhX3JlZmVyZW5jZXNfaW5fc3RtdC4KCShjb21wdXRlX2RhdGFfZGVwZW5kZW5jZXNfZm9yX2xvb3ApOiBVc2UgRFJfVk9QUy4KCShmcmVlX2RhdGFfcmVmKTogRnJlZSBEUl9WT1BTLgoJKiB0cmVlLWRhdGEtcmVmLmggKHN0cnVjdCBmaXJzdF9sb2NhdGlvbl9pbl9sb29wKTogUmVwbGFjZWQgYnkgLi4uCgkoc3RydWN0IGlubmVybW9zdF9sb29wX2JlaGF2aW9yKTogLi4uIG5ldy4KCShzdHJ1Y3QgYmFzZV9vYmplY3RfaW5mbyk6IFJlcGxhY2VkIGJ5IC4uLgoJKHN0cnVjdCBpbmRpY2VzKTogLi4uIG5ldy4KCShzdHJ1Y3QgZHJfYWxpYXMpOiBOZXcuCgkoZW51bSBkYXRhX3JlZl90eXBlKTogUmVtb3ZlZC4KCShzdHJ1Y3QgZGF0YV9yZWZlcmVuY2UpOiBDb25zaXN0IG9mIHN0cnVjdCBpbm5lcm1vc3RfbG9vcF9iZWhhdmlvciwKCXN0cnVjdCBpbmRpY2VzIGFuZCBzdHJ1Y3QgZHJfYWxpYXMuCgkoRFJfU0VUX0FDQ0VTU19GTlMsIERSX0ZSRUVfQUNDRVNTX0ZOUyk6IFJlbW92ZWQuCgkoRFJfTUVNVEFHKTogUmVuYW1lZCB0byAuLi4KCShEUl9TWU1CT0xfVEFHKTogLi4uIHRoaXMuCgkoZmluZF9kYXRhX3JlZmVyZW5jZXNfaW5fbG9vcCk6IERlY2xhcmF0aW9uIHJlbW92ZWQuCgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3RfY29tcHV0ZV9kYXRhX3JlZl9hbGlnbm1lbnQpOiBVc2UgRFJfSU5JVAoJaW5zdGVhZCBvZiBEUl9PRkZTRVRfTUlTQUxJR05NRU5ULiAgRFJfQUxJR05FRF9UTyBpcyBuZXZlciBOVUxMLgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZnMpOiBVc2UgRFJfU1lNQk9MX1RBRyBpbnN0ZWFkIG9mIERSX01FTVRBRy4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIpOiBEaXR0by4KCjIwMDctMDUtMTMgIFJldml0YWwgRXJlcyAgPGVyZXNAaWwuaWJtLmNvbT4KCgkqIHRyZWUtc3NhLWRzZS5jIChnZXRfdXNlX29mX3N0bXRfbGhzKTogTmV3IGZ1bmN0aW9uCgl3aGljaCB3YWxrcyB2aXJ0dWFsIGRlZi11c2UgY2hhaW5zIHRvIGZpbmQgcmVkdW5kYW50IHN0b3Jlcy4KCShkc2Vfb3B0aW1pemVfc3RtdCk6IENhbGwgaXQuCgoyMDA3LTA1LTEyICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBnY3NlLmMgKGdjc2VfbWFpbik6IERvIGp1bXAgYnlwYXNzaW5nIGluIENQUk9QMi4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IE1vdmUgcGFzc19qdW1wX2J5cGFzcwoJYWZ0ZXIgbG9vcDIuCgoJKiBiYXNpYy1ibG9jay5oIChiYl9oYXNfZWhfcHJlZCk6IEZpeCBzdHlsZSBpc3N1ZS4KCjIwMDctMDUtMTIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMxODQ4CgkqIGxvb3AtaW52YXJpYW50LmMgKG1vdmVfaW52YXJpYW50X3JlZyk6IElmIHdlIG1vdmUgYW4gaW5zbgoJd2l0aCBhIFJFR19FUVVBTCBub3RlLCBhbmQgdGhhdCBpbnNuIGlzIG5vdCBhbHdheXMgZXhlY3V0ZWQsCglyZW1vdmUgdGhlIFJFR19FUVVBTCBub3RlLgoKMjAwNy0wNS0xMiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxNzk3CgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwcik6IERvIG5vdAoJcHJvcGFnYXRlIGludG8gYSBzdG10IHRoYXQgaGFzIHZvbGF0aWxlIG9wcy4KCjIwMDctMDUtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjIChnY2NfZ3h4X2luY2x1ZGVfZGlyKTogVXNlICQobGlic3ViZGlyX3RvX3ByZWZpeCkuCgkoZ2NjX3Rvb2xkaXIpOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbiAobGlic3ViZGlyX3RvX3ByZWZpeCk6IE5ldyB2YXJpYWJsZSwgYmFzZWQgb24gdGhlCglvbGQgY29uZmlndXJlLmFjIGdjY190b29sZGlyIHNldHRpbmcuCgkocHJlZml4X3RvX2V4ZWNfcHJlZml4KTogTmV3IHZhcmlhYmxlLgoJKERSSVZFUl9ERUZJTkVTKTogVXNlICQobGlic3ViZGlyX3RvX3ByZWZpeCkkKHByZWZpeF90b19leGVjX3ByZWZpeCkKCXJhdGhlciB0aGFuICQodW5saWJzdWJkaXIpLy4uLyB0byBkZXJpdmUgVE9PTERJUl9CQVNFX1BSRUZJWC4KCjIwMDctMDUtMTEgIFNpbHZpdXMgUnVzICA8cnVzQGdvb2dsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1jb21tb24pOiBBZGQgdHJlZS1zc2EtYWxpYXMtd2FybmluZ3Muby4KCSogYy1jb21tb24uYyAoc3RyaWN0X2FsaWFzaW5nX3dhcm5pbmcpOiBNb2RpZnkgLVdzdHJpY3QtYWxpYXNpbmcgbG9naWMuCgkqIGMtY29tbW9uLmggKHN0cmljdF9hbGlhc2luZ193YXJuaW5nKTogQ2hhbmdlIHJldHVybiB0eXBlLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IEFkZCBjYWxsIHRvIHNldF9Xc3RyaWN0X2FsaWFzaW5nLgoJKiBjLXR5cGVjay5jIChidWlsZF9pbmRpcmVjdF9yZWYpOiBBZGQgY2FsbCB0byBzdHJpY3RfYWxpYXNpbmdfd2FybmluZy4KCShidWlsZF9jX2Nhc3QpOiBDb25kaXRpb24gY2FsbCB0byBzdHJpY3RfYWxpYXNpbmdfd2FybmluZy4KCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgZGVzY3JpcHRpb24gb2YgLVdzdHJpY3QtYWxpYXNpbmdbPW5dLgoJKiBmbGFncy5oIChzZXRfV3N0cmljdF9hbGlhc2luZyk6IERlY2xhcmUuCgkqIG9wdHMuYyAoc2V0X1dzdHJpY3RfYWxpc2luZyk6IERlZmluZSwgYWRkIGNhbGwgdG8uCgkqIHRyZWUtZmxvdy5oIChzdHJpY3RfYWxpYXNpbmdfd2FybmluZ19iYWNrZW5kKTogRGVjbGFyZS4KCSogdHJlZS1zc2EtYWxpYXMtd2FybmluZ3MuYzogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfbWF5X2FsaWFzZXMpOiBBZGQgY2FsbCB0bwoJc3RyaWN0X2FsaWFzaW5nX3dhcm5pbmdfYmFja2VuZC4KCjIwMDctMDUtMTEgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLWxvb3AtbGluZWFyLmMgKGdhdGhlcl9pbnRlcmNoYW5nZV9zdGF0cywgdHJ5X2ludGVyY2hhbmdlX2xvb3BzKToKCVVzZSBsb29wX2RlcHRoIGFuZCBsb29wX291dGVyIGFjY2Vzc29yIGZ1bmN0aW9ucy4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChvdXRlcm1vc3RfaW52YXJpYW50X2xvb3AsIHNldF9sZXZlbCwKCWRldGVybWluZV9pbnZhcmlhbnRuZXNzX3N0bXQsIG1vdmVfY29tcHV0YXRpb25zX3N0bXQpOiBEaXR0by4KCSogY2ZnbG9vcG1hbmlwLmMgKGZpeF9iYl9wbGFjZW1lbnQsIGZpeF9sb29wX3BsYWNlbWVudCwgcmVtb3ZlX3BhdGgsCglhZGRfbG9vcCwgbG9vcGlmeSwgdW5sb29wLCBmaXhfbG9vcF9zdHJ1Y3R1cmUpOiBEaXR0by4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChmaW5kX3VzZXNfdG9fcmVuYW1lX3VzZSk6IERpdHRvLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoaW50ZXJwcmV0X2xvb3BfcGhpLAoJY29tcHV0ZV9zY2FsYXJfZXZvbHV0aW9uX2luX2xvb3AsIGFuYWx5emVfc2NhbGFyX2V2b2x1dGlvbl9pbl9sb29wLAoJaW5zdGFudGlhdGVfcGFyYW1ldGVyc18xLCBzY2V2X2NvbnN0X3Byb3ApOiBEaXR0by4KCSogY2ZnaG9va3MuYyAobWFrZV9mb3J3YXJkZXJfYmxvY2spOiBEaXR0by4KCSogY2ZnbG9vcGFuYWwuYyAobWFya19pcnJlZHVjaWJsZV9sb29wcywgbWFya19sb29wX2V4aXRfZWRnZXMpOiBEaXR0by4KCSogbW9kdWxvLXNjaGVkLmMgKGxvb3BfY2Fub25fcCk6IERpdHRvLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRnZV9jZmcsCglzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3ApOiBEaXR0by4KCSogbGFtYmRhLWNvZGUuYyAoaW52YXJpYW50X2luX2xvb3BfYW5kX291dGVyX2xvb3BzKTogRGl0dG8uCgkqIHRyZWUtY2ZnLmMgKHRyZWVfZHVwbGljYXRlX3Nlc2VfcmVnaW9uKTogRGl0dG8uCgkqIGNmZ2xvb3AuYyAoZmxvd19sb29wX2R1bXAsIGZsb3dfbG9vcF9ub2Rlc19maW5kLCByZXNjYW5fbG9vcF9leGl0LAoJY2FuY2VsX2xvb3AsIHZlcmlmeV9sb29wX3N0cnVjdHVyZSk6IERpdHRvLgoJKGZsb3dfbG9vcF9uZXN0ZWRfcCwgc3VwZXJsb29wX2F0X2RlcHRoLCBmbG93X2xvb3BfZnJlZSwKCWFkZF9iYl90b19sb29wLCByZW1vdmVfYmJfZnJvbV9sb29wcywgZmluZF9jb21tb25fbG9vcCk6IFVzZSB0aGUKCXN1cGVybG9vcHMgdmVjdG9yIGluc3RlYWQgb2YgInByZWQiIGFycmF5LgoJKGVzdGFibGlzaF9wcmVkcyk6IFRha2UgZmF0aGVyIGxvb3AgYXMgYW4gYXJndW1lbnQuICBJbml0aWFsaXplIHRoZQoJc3VwZXJsb29wcyB2ZWN0b3IuCgkoZmxvd19sb29wX3RyZWVfbm9kZV9hZGQpOiBQYXNzIGZhdGhlciBsb29wIHRvIGVzdGFibGlzaF9wcmVkcy4KCURvIG5vdCBpbml0aWFsaXplIGxvb3AtPm91dGVyLgoJKGZsb3dfbG9vcF90cmVlX25vZGVfcmVtb3ZlKTogVHJ1bmNhdGUgdGhlIHN1cGVybG9vcHMgdmVjdG9yLgoJKiBjZmdsb29wLmggKHN0cnVjdCBsb29wKTogUmVtb3ZlZCBmaWVsZCAib3V0ZXIiLCBmaWVsZHMgImRlcHRoIiBhbmQKCSJwcmVkIiBtZXJnZWQgdG8gInN1cGVybG9vcHMiIHZlY3Rvci4KCShsb29wX2RlcHRoLCBsb29wX291dGVyKTogTmV3LgoJKGZlbF9pbml0KTogVXNlIGxvb3Bfb3V0ZXIuCgoyMDA3LTA1LTExICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmM6IEluY2x1ZGUgZ3QtY2dyYXBodW5pdC5oCgkoc3RhdGljX2N0b3JzLCBzdGF0aWNfZHRvcnMpOiBOZXcgc3RhdGljIHZhcnMuCgkocmVjb3JkX2NkdG9yX2ZuLCBidWlsZF9jZHRvciwgY2dyYXBoX2J1aWxkX2NkdG9yX2Zucyk6IE5ldyBmdW5jdGlvbnMsCgliYXNlZCBvbiBpbXBsZW1lbnRhdGlvbiBpbiBjLWNvbW1vbi5jCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogQ2FsbCByZWNvcmRfY2R0b3JfZm4uCgkoY2dyYXBoX29wdGltaXplKTogQ2FsbCBjZ3JhcGhfYnVpbGRfY2R0b3JfZm5zLgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IERvIG5vdCBjYWxsIGNfcmVjb3JkX2NkdG9yX2ZuLgoJKGNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IERvIG5vdCBjYWxsIGNfYnVpbGRfY2R0b3JfZm5zLgoJKiBjLWNvbW1vbi5jIChzdGF0aWNfY3RvcnMsIHN0YXRpY19kdG9ycywgY19yZWNvcmRfY2R0b3JfZm4sCglidWlsZF9jZHRvciwgY19idWlsZF9jZHRvcl9mbnMpOiBSZW1vdmUuCgkqIGMtY29tbW9uLmggKHN0YXRpY19jdG9ycywgc3RhdGljX2R0b3JzLCBjX3JlY29yZF9jZHRvcl9mbiwKCWNfYnVpbGRfY2R0b3JfZm5zKTogUmVtb3ZlIHByb3RvdHlwZS4KCjIwMDctMDUtMTEgIFBhb2xvIENhcmxpbmkgIDxwY2FybGluaUBzdXNlLmRlPgoKCVBSIG90aGVyLzMxODUyCgkqIGJ1aWx0aW4tdHlwZXMuZGVmOiBBZGQgQlRfRk5fUFRSX0NPTlNUX1BUUl9JTlRfU0laRS4KCSogYnVpbHRpbnMuZGVmOiBBZGQgQlVJTFRfSU5fTUVNQ0hSLCB1c2UgdGhlIGxhdHRlci4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX21lbWNocik6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9tZW1jaHIpOiBDYWxsIHRoZSBsYXR0ZXIuCgkoZXhwYW5kX2J1aWx0aW4sIGZvbGRfYnVpbHRpbl8zKTogRGVhbCB3aXRoIEJVSUxUX0lOX01FTUNIUi4KCSogZG9jL2V4dGVuZC50ZXhpIChbT3RoZXIgYnVpbHQtaW4gZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IEdDQ10pOgoJRG9jdW1lbnQgbWVtY2hyLgoKMjAwNy0wNS0xMSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKEdQUjBfUkVHTlVNLCBGUFIwX1JFR05VTSwgRlBSMl9SRUdOVU0sCglQRlBPX0NPTlZFUlQsIFBGUE9fT1BfVFlQRV9TRiwgUEZQT19PUF9UWVBFX0RGLCBQRlBPX09QX1RZUEVfVEYsCglQRlBPX09QX1RZUEVfU0QsIFBGUE9fT1BfVFlQRV9ERCwgUEZQT19PUF9UWVBFX1RELCBQRlBPX09QMF9UWVBFX1NISUZULAoJUEZQT19PUDFfVFlQRV9TSElGVCk6IENvbnN0YW50cyBhZGRlZC4KCShERlBfQUxMKTogTW9kZSBtYWNybyBkZWZpbmVkLgoJKCIqdHJ1bmM8QkZQOm1vZGU+PERGUF9BTEw6bW9kZT4yIiwgIip0cnVuYzxERlBfQUxMOm1vZGU+PEJGUDptb2RlPjIiLAoJIipleHRlbmQ8QkZQOm1vZGU+PERGUF9BTEw6bW9kZT4yIiwgIipleHRlbmQ8REZQX0FMTDptb2RlPjxCRlA6bW9kZT4yIik6CglJbnNuIGRlZmluaXRpb25zIGFkZGVkLgoJKCJ0cnVuYzxCRlA6bW9kZT48REZQX0FMTDptb2RlPjIiLCAidHJ1bmM8REZQX0FMTDptb2RlPjxCRlA6bW9kZT4yIiwKCSJleHRlbmQ8QkZQOm1vZGU+PERGUF9BTEw6bW9kZT4yIiwgImV4dGVuZDxERlBfQUxMOm1vZGU+PEJGUDptb2RlPjIiKToKCUV4cGFuZGVycyBhZGRlZC4KCjIwMDctMDUtMTAgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE4ODUKCSogdHJlZS1jaHJlYy5jIChjaHJlY19jb250YWluc191bmRldGVybWluZWQpOiBEbyBub3QgY29uc2lkZXIKCU5VTExfVFJFRSB0byBiZSB1bmRldGVybWluZWQuCgkoYXV0b21hdGljYWxseV9nZW5lcmF0ZWRfY2hyZWNfcCk6IFJldHVybiBmYWxzZSBmb3IgTlVMTC4KCjIwMDctMDUtMDggIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmggKE1PVkVfUkFUSU8pOiBEZWZpbmUuCgoyMDA3LTA1LTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHNwYXJjLXdycy12eHdvcmtzKTogTmV3IHRhcmdldC4KCSogY29uZmlnL3NwYXJjL3Z4d29ya3MuaCwgY29uZmlnL3NwYXJjL3Qtdnh3b3JrczogTmV3IGZpbGVzLgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKHNwYXJjX2VtaXRfY2FsbF9pbnNuKTogRGVjbGFyZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IEluY2x1ZGUgdnh3b3Jrcy1kdW1teS5oLgoJKFBSSU5UX09QRVJBTkRfQUREUkVTUyk6IEV4dGVuZCBTWU1CT0xfUkVGIGhhbmRsaW5nIHRvCglpbmNsdWRlIExBQkVMX1JFRnMgdG9vLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZXhwYW5kX21vdmUpOiBEb24ndCBhc3N1bWUgdGhhdAoJX0dMT0JBTF9PRkZTRVRfVEFCTEVfIC0gbGFiZWxfcmVmIGlzIGEgbGluay10aW1lIGNvbnN0YW50IG9uCglWeFdvcmtzLgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBIYW5kbGUgTEFCRUxfUkVGcyBsaWtlIFNZTUJPTF9SRUZzCglvbiBWeFdvcmtzLgoJKGxvYWRfcGljX3JlZ2lzdGVyKTogVXNlIGdlbl92eHdvcmtzX2xvYWRfZ290IGZvciBWeFdvcmtzLgoJKHNwYXJjX2VtaXRfY2FsbF9pbnNuKTogTmV3IGZ1bmN0aW9uLgoJKHNwYXJjX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogUmVzdHJpY3Qgc2liY2FsbHMgdG8gbG9jYWxseS1iaW5kaW5nCglmdW5jdGlvbnMgd2hlbiBnZW5lcmF0aW5nIFZ4V29ya3MgUElDLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHZ4d29ya3NfbG9hZF9nb3QpOiBOZXcgcGF0dGVybi4KCShjYWxsLCBjYWxsX3ZhbHVlKTogVXNlIHNwYXJjX2VtaXRfY2FsbF9pbnNuIGluc3RlYWQgb2YKCWVtaXRfY2FsbF9pbnNuLgoKMjAwNy0wNS0wOSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9vdXRwdXRfbGl0ZXJhbCk6IERvbid0IHVzZSAjaWYuCgoyMDA3LTA1LTA5ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoeHRlbnNhX291dHB1dF9saXRlcmFsKTogTWFzayBvdXQgaGlnaCBiaXRzCglmb3IgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGlmIEhPU1RfQklUU19QRVJfTE9ORyA+IDMyLiAgVXNlCglzcGxpdF9kb3VibGUgaW5zdGVhZCBvZiBvcGVyYW5kX3N1YndvcmQuCgoyMDA3LTA1LTA4ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vYmZpbi5oIChMT0NBTF9BTElHTk1FTlQpOiBEZWZpbmUuCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoYmZpbl9sb2NhbF9hbGlnbm1lbnQpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9iZmluL2JmaW4tcHJvdG9zLmggKGJmaW5fbG9jYWxfYWxpZ25tZW50KTogRGVjbGFyZSBpdC4KCjIwMDctMDUtMDggIENoYW8teWluZyBGdSAgPGZ1QG1pcHMuY29tPgoKCSogZG9jL21kLnRleGkgKG1zdWJAdmFye219QHZhcntufTQsIHVzdWJAdmFye219QHZhcntufTQpOiBEb2N1bWVudC4KCSogb3B0YWJzLmggKE9USV9zbXN1Yl93aWRlbiwgT1RJX3Vtc3ViX3dpZGVuKTogTmV3IG9wdGFiX2luZGV4ZXMuCgkoc21zdWJfd2lkZW5fb3B0YWIsIHVtc3ViX3dpZGVuX29wdGFiKTogRGVmaW5lLgoJKiBvcHRhYnMuYyAoaW5pdF9vcHRhYnMpOiBJbml0aWFsaXplIHNtc3ViX3dpZGVuX29wdGFiIGFuZAoJdW1zdWJfd2lkZW5fb3B0YWIuCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBGaWxsIGluIHNtc3ViX3dpZGVuX29wdGFiIGFuZAoJdW1zdWJfd2lkZW5fb3B0YWIuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogVHJ5IHRvIHVzZSBzbXN1Yl93aWRlbl9vcHRhYgoJYW5kIHVtc3ViX3dpZGVuX29wdGFiIHRvIGltcGxlbWVudCBtdWx0aXBseS1zdWJ0cmFjdCBzZXF1ZW5jZXMuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCptc2FjPHU+X2RpKTogUmVuYW1lIHRvLi4uCgkoPHU+bXN1YnNpZGk0KTogLi4udGhpcy4gIEV4dGVuZCBjb25kaXRpb24gdG8gaW5jbHVkZQoJR0VORVJBVEVfTUFERF9NU1VCIGFuZCBUQVJHRVRfRFNQUjIuICBDaGFuZ2UgdGhlIGNvbnN0cmFpbnQKCW9mIG9wZXJhbmQgMCB0byAia2EiIGFuZCB1c2UgdGhlIHRocmVlLW9wZXJhbmQgZm9ybSBvZiBtc3ViPHU+Cglmb3IgVEFSR0VUX0RTUFIyLgoJKiBjb25maWcvbWlwcy9taXBzLWRzcHIyLm1kIChtaXBzX21zdWIsIG1pcHNfbXN1YnUpOiBDb252ZXJ0Cgl0byBkZWZpbmVfZXhwYW5kcy4KCjIwMDctMDUtMDggIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjgwMTEKCSogcmVsb2FkLmMgKHB1c2hfcmVsb2FkKTogU2V0IGRvbnRfc2hhcmUgaWYgSU4gYXBwZWFycyBpbiBPVVQKCWFsc28gd2hlbiBJTiBpcyBhIFBMVVMgcnR4LgoJKHJlZ19vdmVybGFwX21lbnRpb25lZF9mb3JfcmVsb2FkX3ApOiBSZXR1cm4gdHJ1ZSBpZiBYIGFuZCBJTgoJYXJlIHNhbWUgUExVUyBydHguCgoyMDA3LTA1LTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVtaXQtcnRsLmMgKHVuc2hhcmVfYWxsX3J0bF8xKTogRG9uJ3QgY29weSBERUNMX1JUTC4gIERvbid0CgljYWxsIHVuc2hhcmVfYWxsX2RlY2xzLgoJKHVuc2hhcmVfYWxsX3J0bCk6IEFkanVzdCB0aGUgY2FsbCB0byB1bnNoYXJlX2FsbF9ydGxfMS4KCSh1bnNoYXJlX2FsbF9kZWNscyk6IFJlbW92ZS4KCjIwMDctMDUtMDggIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiAzMTg0NwoJKiB0cmVlLWR1bXAuYyAoZHVtcF9vcHRpb25zKTogRG9uJ3QgdXNlIFRERl9ESUFHTk9TVElDIGluICIqLWFsbCIgdHJlZQoJZHVtcHMuCgoyMDA3LTA1LTA4ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTmlnZWwgU3RlcGhlbnMgIDxuaWdlbEBtaXBzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTUFYX0ZQUlNfUEVSX0ZNVCk6IFJlbmFtZWQgZnJvbSBGUF9JTkMuCglVcGRhdGUgY29tbWVudHMgYW5kIGFsbCB1c2VzLgoJKE1JTl9GUFJTX1BFUl9GTVQpOiBEZWZpbmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZnVuY3Rpb25fYXJnKTogRml4IHRvIGNvcnJlY3RseSBoYW5kbGUKCXRoZSAtbWlwczMycjIgLW1mcDY0IC1tYWJpPTMyIGNhc2UuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEVuYWJsZSB1c2Ugb2Ygb2RkLW51bWJlcmVkIHJlZ2lzdGVycyBmb3IKCVNGbW9kZSB2YWx1ZXMgb24gTUlQUzMyLgoJKG1pcHNfc2F2ZV9yZWdfcCk6IFNhdmUgd2hvbGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIgcGFpciBpZgoJZWl0aGVyIGhhbGYgaXMgdXNlZC4KCShjb21wdXRlX2ZyYW1lX3NpemUpOiBGaXggY29tbWVudC4KCjIwMDctMDUtMDggIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vYmZpbi1wcm90b3MuaCAoYmZpbl9leHBhbmRfZXBpbG9ndWUpOiBBZGQgYSB0aGlyZAoJYXJndW1lbnQgb2YgdHlwZSBib29sLgoJKiBjb25maWcvYmZpbi9iZmluLmMgKGFkZF90b19yZWcpOiBBZGQgZXBpbG9ndWVfcCBhcyBhIGZvdXJ0aAoJYXJndW1lbnQuIFNhZmVseSBzZWxlY3QgdGVtcG9yYXJ5IFAgcmVnaXN0ZXIgYWNjb3JkaW5nIHRvIGl0LgoJKGRvX2xpbmspOiBDaGFuZ2UgY2FsbCBzaXRlIG9mIGFkZF90b19yZWcgYWNjb3JkaW5nbHkuCgkoZG9fdW5saW5rKTogQWRkIGVwaWxvZ3VlX3AgYXMgYSBmb3VydGggYXJndW1lbnQgYW5kIHBhc3MgaXQKCXRvIGFkZF90b19yZWcuCgkoZXhwYW5kX2ludGVycnVwdF9oYW5kbGVyX2VwaWxvZ3VlKTogQ2hhbmdlIGNhbGwgb2YgZG9fdW5saW5rCglhY2NvcmRpbmdseS4KCShiZmluX2V4cGFuZF9wcm9sb2d1ZSk6IEFkZCBhIHRoaXJkIGFyZ3VtZW50IHNpYmNhbGxfcC4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAoZXBpbG9ndWUpOiBDaGFuZ2UgY2FsbCBvZgoJYmZpbl9leHBhbmRfZXBpbG9ndWUgYWNjb3JkaW5nbHkuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGVoX3JldHVybl9pbnRlcm5hbCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2JmaW4vYmZpbi1wcm90b3MuaCAoZW51bSBiZmluX2NwdSk6IEFkZAoJQkZJTl9DUFVfQkY1MzQsIEJGSU5fQ1BVX0JGNTM2IGFuZCBCRklOX0NQVV9CRjU2MS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUKCS1tY3B1PWJmNTM0LCAtbWNwdT1iZjUzNiBhbmQgLW1jcHU9YmY1NjEuCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOgoJU3VwcG9ydCBiZjUzNCwgYmY1MzYgYW5kIGJmNTYxLgoJKiBkb2MvaW52b2tlLnRleGkgKEJsYWNrZmluIE9wdGlvbnMpOiBEb2N1bWVudCAtbWNwdSBhbmQgLW1zaW0uCgoyMDA3LTA1LTA4ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMTg1NAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZnVuY3Rpb25fcmVncGFybSk6IFByb2Nlc3MgbG9jYWwKCWZ1bmN0aW9ucyBvbmx5IHdoZW4gVFJFRV9DT0RFIChkZWNsKSBlcXVhbHMgRlVOQ1RJT05fREVDTC4KCjIwMDctMDUtMDcgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBEb2N1bWVudCB0aGF0IC1XZW1wdHktYm9keQoJYWxzbyBjaGVja3MgZm9yIGFuZCB3aGlsZSBzdGF0ZW1lbnRzIGluIEMrKy4KCjIwMDctMDUtMDcgIE5hdGhhbiBGcm95ZCAgPGZyb3lkbmpAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjYy5jIChhdF9maWxlX3N1cHBsaWVkKTogTmV3IHZhcmlhYmxlLgoJKG1haW4pOiBTZXQgaXQgaWYgd2UgZXhwYW5kZWQgYXJndi4KCShkb19zcGVjXzEpOiBQYXNzIGFuIEAtZmlsZSB0byB0aGUgbGlua2VyIGlmIHdlIHdlcmUgY2FsbGVkIHdpdGgKCWFuIEAtZmlsZSBhcmd1bWVudCBhbmQgSEFWRV9HTlVfTEQuCgkqIGNvbGxlY3QyLmMgKGF0X2ZpbGVfc3VwcGxpZWQpOiBOZXcgdmFyaWFibGUuCgkocmVzcG9uc2VfZmlsZSk6IE5ldyB2YXJpYWJsZS4KCShjb2xsZWN0X2V4aXQpOiBVbmxpbmsgcmVzcG9uc2VfZmlsZSBpZiBuZWNlc3NhcnkuCgkoaGFuZGxlcik6IExpa2V3aXNlLgoJKGRvX3dhaXQpOiBMaWtld2lzZS4KCShtYWluKTogU2V0IGF0X2ZpbGVfc3VwcGxpZWQgaWYgd2UgZXhwYW5kZWQgYXJndi4KCShjb2xsZWN0X2V4ZWN1dGUpOiBQYXNzIGFuIEAtZmlsZSB0byBzdWJwcm9jZXNzZXMgaWYgd2Ugd2VyZSBjYWxsZWQKCXdpdGggYW4gQC1maWxlIGFyZ3VtZW50LgoJKiBjb25maWd1cmUuYWM6IEFkZCBkZWZpbmUgZm9yIEhBVkVfR05VX0xELgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCjIwMDctMDUtMDcgIE5hdmVlbi5ILlMgIDxuYXZlZW4uaHNAa3BpdGN1bW1pbnMuY29tPgoKCSogY29uZmlnL20zMmMvbXVsZGl2Lm1kIChtdWxoaXNpM19jKTogTGltaXQgdGhlIG1vZGUgb2YgdGhlIDJuZAoJb3BlcmFuZCB0byBISSBtb2RlLgoJKG11bHNpMyk6IE5ldy4KCShkaXZzaTMpOiBOZXcuCgkodWRpdnNpMyk6IE5ldy4KCjIwMDctMDUtMDcgIEpheWFudCBTb25hciAgPGpheWFudHNAa3BpdGN1bW1pbnMuY29tPgoKCSogY29uZmlnL20zMmMvbTMyYy5jIChTWU1CT0xfRkxBR19GVU5DVkVDX0ZVTkNUSU9OKTogRGVmaW5lLgoJKFRBUkdFVF9FTkNPREVfU0VDVElPTl9JTkZPKTogUmUtZGVmaW5lLgoJKG0zMmNfZW5jb2RlX3NlY3Rpb25faW5mbyk6IE5ldwoJKGZ1bmN0aW9uX3ZlY3Rvcl9oYW5kbGVyKTogTmV3CgkoY3VycmVudF9mdW5jdGlvbl9zcGVjaWFsX3BhZ2VfdmVjdG9yKTogTmV3CgkobTMyY19zcGVjaWFsX3BhZ2VfdmVjdG9yX3ApOiBOZXcuCgkqIGNvbmZpZy9tMzJjL20zMmMtcHJvdG9zLmggKG0zMmNfc3BlY2lhbF9wYWdlX3ZlY3Rvcl9wKToKCVByb3RvdHlwZS4KCSogY29uZmlnL20zMmMvanVtcC5tZDogQWRkZWQgaW5zdHJ1Y3Rpb24gSlNSUyBmb3IgZnVuY3Rpb25zCgl3aXRoIGF0dHJpYnV0ZSAiZnVuY3Rpb25fdmVjdG9yIi4KCSogZG9jL2V4dGVuZC50ZXhpIChmdW5jdGlvbl92ZWN0b3IpOiBBZGRlZCBkZXNjcmlwdGlvbgoJZm9yIE0xNkMsIE0zMkMgdGFyZ2V0cy4KCjIwMDctMDUtMDcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCVBSIDMxNzk0CgkqIGNvbmZpZy9tMzJjL3NoaWZ0Lm1kIChhc2hscHNpM19pLCBhc2hycHNpM19pLCBhc2hscHNpMywKCWFzaHJwc2kzLCBsc2hycHNpMyk6IFVwZGF0ZSBzaGlmdCBjb3VudCBjb25zdHJhaW50LgoKMjAwNy0wNS0wNyAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCSAgICBOYXRoYW4gRnJveWQgIDxmcm95ZG5qQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMjIxMzMKCSogYy1pbmNwYXRoLmMgKGFkZF9wYXRoKTogU3RyaXAgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzLgoKMjAwNy0wNS0wNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jICh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBSZXNldCBjZmdfYWx0ZXJlZC4KCUZyZWUgZG9taW5hbmNlIGluZm8gYmVmb3JlIHB1cmdpbmcgRUggZWRnZXMuCgkoZWxpbWluYXRlX2RlZ2VuZXJhdGVfcGhpcyk6IExpa2V3aXNlLgoJKHByb3BhZ2F0ZV9yaHNfaW50b19saHMpOiBTZXQgY2ZnX2FsdGVyZWQgdG8gdHJ1ZSBpbnN0ZWFkIG9mIDEuCgoyMDA3LTA1LTA3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9leHByKTogRG8gbm90IGNyYXNoIHdoZW4gZm9sZGluZwoJKHZvaWQgKikoaW50KSZhICsgNC4KCjIwMDctMDUtMDcgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Znhjb3VkZXJ0QGdjYy5nbnUub3JnPgoKCVBSIGRyaXZlci8zMTY5NAoJKiBjLW9wdHMuYyAobGFuZ19mb3J0cmFuKTogTWFrZSBpdCBub24gc3RhdGljLgoJKiBjLWNvbW1vbi5oIChsYW5nX2ZvcnRyYW4pOiBOZXcgcHJvdG90eXBlLgoJKiBjLWNwcGJ1aWx0aW4uYyAoY19jcHBfYnVpbHRpbnMpOiBDcmVhdGUgYSBfX0dGT1JUUkFOX18gaWYgdGhlCgktbGFuZy1mb3J0cmFuIG9wdGlvbiB3YXMgcGFzc2VkIGJ5IHRoZSBkcml2ZXIuCgoyMDA3LTA1LTA2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdGltZXZhci5jICh0aW1ldmFyX3ByaW50KTogVGVzdCBFTkFCTEVfQVNTRVJUX0NIRUNLSU5HIGluc3RlYWQKCW9mIEFTU0VSVF9DSEVDS0lORy4gIFR3ZWFrIG1lc3NhZ2UuCgoyMDA3LTA1LTA2ICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJUFIgMzA5NTcKCSogbG9vcC11bnJvbGwuYyAoaW5zZXJ0X3Zhcl9leHBhbnNpb25faW5pdGlhbGl6YXRpb24pOgoJSW5pdGlhbGl6ZSB0aGUgZXhwYW5zaW9ucyB3aXRoIC16ZXJvIGluc3RlYWQgb2YgK3plcm8uCgoyMDA3LTA1LTA1ICBBdXJlbGllbiBKYXJubyAgPGF1cmVsaWVuQGF1cmVsMzIubmV0PgoKCSogY29uZmlnL3BhL3BhLm1kOiBTcGxpdCB0Z2RfbG9hZCwgdGxkX2xvYWQgYW5kIHRpZV9sb2FkCglpbnRvIHBpYyBhbmQgbm9uLXBpYyB2ZXJzaW9ucy4gTWFyayByMTkgYXMgdXNlZCBmb3IKCXRnZF9sb2FkX3BpYywgdGxkX2xvYWRfcGljIGFuZCB0aWVfbG9hZF9waWMuIE1hcmsgcjI3IGFzIHVzZWQKCWZvciB0Z2RfbG9hZCwgdGxkX2xvYWQgYW5kIHRpZV9sb2FkIC4KCSogY29uZmlnL3BhL3BhLmMgKGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MpOiBFbWl0IHBpYyBvciBub24tcGljCgl2ZXJzaW9uIG9mIHRnZF9sb2FkLCB0bGRfbG9hZCBhbmQgdGllX2xvYWQgZGVwZW5kaW5nIG9uIHRoZQoJdmFsdWUgb2YgZmxhZ19waWMuCgoyMDA3LTA1LTA0ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNydHN0dWZmLmMgKEhJRERFTl9EVE9SX0xJU1RfRU5EKTogTmV3IG1hY3JvLgoJKF9fZG9fZ2xvYmFsX2R0b3JzX2F1eCk6IFVzZSBtb3JlIHBhcmFub2lkIGxvb3AgdG8gcnVuCglkZXN0cnVjdG9ycyBpZiBISURERU5fRFRPUl9MSVNUX0VORC4KCShfX0RUT1JfRU5EX18pOiBFeHBvcnQgYXMgYSBoaWRkZW4gc3ltYm9sIHdoZW4gSElEREVOX0RUT1JfTElTVF9FTkQuCgoyMDA3LTA1LTA0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChhbGlnbl92YXJpYWJsZSk6IERvbid0IGluY3JlYXNlIGFsaWdubWVudCBmb3IKCURFQ0xfVEhSRUFEX0xPQ0FMX1AgdmFyaWFibGVzIGFib3ZlIEJJVFNfUEVSX1dPUkQgdGhyb3VnaAoJREFUQV9BTElHTk1FTlQgb3IgQ09OU1RBTlRfQUxJR05NRU5ULgoKMjAwNy0wNS0wNCAgSm9zaCBDb25uZXIgIDxqY29ubmVyQGFwcGxlLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKGNkaV9kaXJlY3Rpb24pOiBBc3NpZ24gdmFsdWVzIHRvIGFsbCBlbnVtZXJhdGlvbgoJY29uc3RhbnRzLgoJKGRvbV9jb21wdXRlZCk6IFJlbW92ZS4KCShkb21faW5mb19zdGF0ZSk6IE5ldy4KCShzZXRfZG9tX2luZm9fYXZhaWxhYmlsaXR5KTogTmV3LgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKGRldGVybWluZV9pbnZhcmlhbnRuZXNzKTogSW5pdGlhbGl6ZQoJd2Fsa19kYXRhLmRvbV9kaXJlY3Rpb24uCgkqIGNmZ2hvb2tzLmMgKGRlbGV0ZV9iYXNpY19ibG9jayk6IFVzZSBkb21faW5mb19hdmFpbGFibGVfcCgpCglpbnN0ZWFkIG9mIGRvbV9jb21wdXRlZFtdLgoJKHNwbGl0X2VkZ2UpOiBMaWtld2lzZS4KCShjcmVhdGVfYmFzaWNfYmxvY2spOiBMaWtld2lzZS4KCShtZXJnZV9ibG9ja3MpOiBMaWtld2lzZS4KCSogaWZjdnQuYyAoZmluZF9pZl9oZWFkZXIpOiBMaWtld2lzZS4KCSogdHJlZS1jZmdjbGVhbnVwLmMgKGNsZWFudXBfdHJlZV9jZmcpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZGNlLmMgKHJlbW92ZV9kZWFkX3N0bXQpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EuYyAodmVyaWZ5X3NzYSk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jICh0cmVlX3ZlcmlmeV9mbG93X2luZm8pOiBMaWtld2lzZS4KCShyZW1vdmVfZWRnZV9hbmRfZG9taW5hdGVkX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKiBkb21pbmFuY2UuYyAoZG9tX2NvbXB1dGVkKTogTWFrZSBzdGF0aWMuCgkoY2FsY19kZnNfdHJlZV9ub25yZWMpOiBDaGFuZ2UgdGhpcmQgcGFyYW0gdG8gYSBib29sLgoJKGNhbGNfZGZzX3RyZWUpOiBDaGFuZ2Ugc2Vjb25kIHBhcmFtIHRvIGEgYm9vbC4KCShjYWxjX2lkaW9tcyk6IENoYW5nZSBzZWNvbmQgcGFyYW0gdG8gYSBib29sLiAgVXNlCglkb21fY29udmVydF9kaXJfdG9faWR4LgoJKGluaXRfZG9tX2luZm8pOiBWYWxpZGF0ZSBkaXIgYmVmb3JlIHVzaW5nLgoJKGRvbV9jb252ZXJ0X2Rpcl90b19pZHgpOiBOZXcuCgkoY2FsY3VsYXRlX2RvbWluYW5jZV9pbmZvKTogVXNlIGRvbV9jb252ZXJ0X2Rpcl90b19pZHguICBOZXcKCXZhcmlhYmxlICdyZXZlcnNlJyB1c2VkIGZvciBjYWxsaW5nIGNhbGNfZGZzX3RyZWUgYW5kIGNhbGNfaWRvbXMuCgkoZnJlZV9kb21pbmFuY2VfaW5mbyk6IFVzZSBkb21fY29udmVydF9kaXJfdG9faWR4LgoJKGdldF9pbW1lZGlhdGVfZG9taW5hdG9yKTogTGlrZXdpc2UuCgkoc2V0X2ltbWVkaWF0ZV9kb21pbmF0b3IpOiBMaWtld2lzZS4KCShnZXRfZG9taW5hdGVkX2J5KTogTGlrZXdpc2UuCgkocmVkaXJlY3RfaW1tZWRpYXRlX2RvbWluYXRvcnMpOiBMaWtld2lzZS4KCShuZWFyZXN0X2NvbW1vbl9kZW5vbWluYXRvcik6IExpa2V3aXNlLgoJKGRvbWluYXRlZF9ieV9wKTogTGlrZXdpc2UuCgkoYmJfZG9tX2Rmc19pbik6IExpa2V3aXNlLgoJKGJiX2RvbV9kZnNfb3V0KTogTGlrZXdpc2UuCgkocmVjb3VudF9kb21pbmF0b3IpOiBMaWtld2lzZS4KCShpdGVyYXRlX2ZpeF9kb21pbmF0b3JzKTogTGlrZXdpc2UuCgkoYWRkX3RvX2RvbWluYW5jZV9pbmZvKTogTGlrZXdpc2UuCgkoZGVsZXRlX2Zyb21fZG9taW5hbmNlX2luZm8pOiBMaWtld2lzZS4KCShmaXJzdF9kb21fc29uKTogTGlrZXdpc2UuCgkobmV4dF9kb21fc29uKTogTGlrZXdpc2UuCgkoZG9tX2luZm9fYXZhaWxhYmxlX3ApOiBMaWtld2lzZS4KCShkb21faW5mb19zdGF0ZSk6IE5ldy4KCShzZXRfZG9tX2luZm9fYXZhaWxhYmlsaXR5KTogTmV3LgoKMjAwNy0wNS0wNCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJmaXhfdHJ1bmM8bW9kZT5kaTIiLCAiZml4X3RydW5jPG1vZGU+c2kyIik6CglFeHBhbmRlciByZW1vdmVkLgoJKCJmaXhfdHJ1bmM8RFNGOm1vZGU+PEdQUjptb2RlPjIiKTogRXhwYW5kZXIgYWRkZWQuCgoyMDA3LTA1LTA0ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EubWQgKGFkZGRpMywgYWRkZGlfY2FycnkpOiBEZWxldGUuCgkoc3ViZGkzLCBzdWJkaV9jYXJyeSk6IERlbGV0ZS4KCjIwMDctMDUtMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSAgICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogRG8gbm90IGZpZGRsZSB3aXRoIGlubGluaW5nCglwYXJhbWV0ZXJzIGluIGNhc2Ugb2Ygb3B0aW1pemluZyBmb3Igc2l6ZS4KCSogaXBhLWlubGluZS5jIChjZ3JhcGhfZGVjaWRlX3JlY3Vyc2l2ZV9pbmxpbmluZyk6IFdoZW4gb3B0aW1pemluZwoJZm9yIHNpemUgZG8gbm90aGluZy4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nX29mX3NtYWxsX2Z1bmN0aW9uKTogV2hlbiBvcHRpbWl6aW5nIGZvcgoJc2l6ZSBuZXZlciBpbmxpbmUgZnVuY3Rpb25zIGluY3JlYXNpbmcgY2FsbGVyIHNpemUuCgkoY2dyYXBoX2Vhcmx5X2lubGluaW5nKTogSW5saW5lIGZvciBzaXplIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4KCjIwMDctMDUtMDQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLm1kICg8b3B0YWI+ZGkzKTogTm93IGEgZGVmaW5lX2V4cGFuZCB3aGljaCBleHBhbmRzCglsb2dpY2FsIG9wZXJhdGlvbnMgcGllY2V3aXNlLgoJKDxvcHRhYj5kaV96ZXNpZGlfZGksIDxvcHRhYj5kaV9zZXNpZGlfZGksIG5lZ2RpMiwgb25lX2NtcGxkaTIsCgl6ZXJvX2V4dGVuZHNpZGkyLCBzdWJkaV9kaV96ZXNpZGksIHN1YmRpX3plc2lkaV9kaSwgc3ViZGlfZGlfc2VzaWRpLAoJc3ViZGlfc2VzaWRpX2RpKTogRGVsZXRlLgoJKGFkZF93aXRoX2NhcnJ5KTogUHJvZHVjZSBjYXJyeSBpbiBDQyBpbnN0ZWFkIG9mIGEgRFJFRyB0byBzaG9ydGVuCgl0aGUgZ2VuZXJhdGVkIHNlcXVlbmNlLiAgQWxsb3cgdGhyZWUtcmVnIGFkZCBpbiBjb25zdHJhaW50cy4gIFJld3JpdGUKCXRoZSBydGwgZXhwcmVzc2lvbiBmb3IgY2FycnkgdG8gYXZvaWQgemVyb19leHRlbmQgb2YgYSBjb25zdGFudC4KCShzdWJfd2l0aF9jYXJyeSk6IE5ldyBwYXR0ZXJuLgoJKGFkZGRpMywgc3ViZGkzKTogQ2hhbmdlIGludG8gZGVmaW5lX2V4cGFuZC4gIEZvciBzdWJ0cmFjdCwgZ2VuZXJhdGUgYQoJZGlmZmVyZW50IHNlcXVlbmNlIG5vdCBpbnZvbHZpbmcganVtcHMuCgkobm90YmkpOiBOb3cgYSBuYW1lZCBwYXR0ZXJuLgoKMjAwNy0wNS0wNCAgQnJhZGxleSBMdWNpZXIgIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpIChpMzg2IGFuZCB4ODYtNjQgT3B0aW9ucykgWy1tcGMzMiwgLW1wYzY0LCAtbXBjODBdOgoJQWRkIHRoZSBub3RlIGFib3V0IGEgc2lnbmlmaWNhbnQgbG9zcyBvZiBhY2N1cmFjeSBvZiBzb21lCgltYXRoZW1hdGljYWwgcm91dGluZXMgd2hlbiB0aGVzZSBvcHRpb25zIGFyZSB1c2VkLgoKMjAwNy0wNS0wNCAgTWF4aW0gS3V2eXJrb3YgIDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCSogaGFpZmEtc2NoZWQuYyAocnR4X3ZlY190KTogTmV3IHR5cGVkZWYuCgkoY29udHJpYnV0ZXNfdG9fcHJpb3JpdHlfcCk6IEV4dHJhY3QgcGllY2Ugb2YgcHJpb3JpdHkgKCkgaW50byBuZXcKCXN0YXRpYyBmdW5jdGlvbi4KCShwcmlvcml0eSk6IFVzZSB0aGUgZnVuY3Rpb24uICBBZGQgYXNzZXJ0aW9uLgoJKHJhbmtfZm9yX3NjaGVkdWxlLCBzZXRfcHJpb3JpdGllcyk6IEFkZCBhc3NlcnRpb24gdG8gY2hlY2sgdGhhdAoJaW5zbidzIHByaW9yaXR5IGlzIGluaXRpYWxpemVkLgoJKGNsZWFyX3ByaW9yaXRpZXMsIGNhbGNfcHJpb3JpdGllcyk6IENoYW5nZSBzaWduYXR1cmUuICBNYWtlIGl0IHVwZGF0ZQoJYWxsIHJlbGV2YW50IGluc25zLiAgVXBkYXRlIGFsbCBjYWxsZXJzICgnYWRkX3RvX3NwZWN1bGF0aXZlX2Jsb2NrICgpJwoJYW5kICdjcmVhdGVfYmxvY2tfY2hlY2tfdHdpbiAoKScpLgoJKiBzY2hlZC1pbnQuaCAoc3RydWN0IGhhaWZhX2luc25fZGF0YSk6IFJlbW92ZSBmaWVsZCAncHJpb3JpdHlfa25vd24nLgoJQWRkIG5ldyBmaWVsZCAncHJpb3JpdHlfc3RhdHVzJy4KCShJTlNOX1BSSU9SSVRZX1NUQVRVUyk6IE5ldyBtYWNyby4KCShJTlNOX1BSSU9SSVRZX0tOT1dOKTogQ2hhbmdlIHRvIHVzZSBJTlNOX1BSSU9SSVRZX1NUQVRVUy4KCjIwMDctMDUtMDQgIE1heGltIEt1dnlya292ICA8bWt1dnlya292QGlzcHJhcy5ydT4KCgkqIHNjaGVkLWViYi5jIChkZWJ1Z19lYmJfZGVwZW5kZW5jaWVzKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShpbml0X3JlYWR5X2xpc3QpOiBVc2UgaXQuCgoJKiBzY2hlZC1yZ24uYyAoZGVidWdfZGVwZW5kZW5jaWVzKTogU3BsaXQgaW50byAnZGVidWdfZGVwZW5kZW5jaWVzICgpJwoJd2l0aCBjaGFuZ2VkIHNpZ25hdHVyZSBhbmQgJ2RlYnVnX3Jnbl9kZXBlbmRlbmNpZXMgKCknLgoJKGRlYnVnX3Jnbl9kZXBlbmRlbmNpZXMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGluaXRfcmVhZHlfbGlzdCk6IFVzZSBpdC4KCgkqIHNjaGVkLWludC5oIChkZWJ1Z19kZXBlbmRlbmNpZXMpOiBEZWNsYXJlLgoKMjAwNy0wNS0wNCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGxpYmdjYy1zdGQudmVyIChfX2Zmc3NpMik6IEFkZGVkIHRvIEdDQ180LjMuMCBzZWN0aW9uLgoKMjAwNy0wNS0wNCAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCgkqIGMub3B0KFdtYWluLGZmcmVlc3RhbmRpbmcpOiBFbmFibGUgZm9yIEMrKyxPYmpDKysuCgoyMDA3LTA1LTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfdW5hcnkpOiBDb252ZXJ0IChUMSkoWCBvcCBZKSBpbnRvCgkoKFQxKVggb3AgKFQxKVkpLCBmb3IgcG9pbnRlciB0eXBlIGluIG1vcmUgY2FzZXMgdGhhbiBiZWZvcmUuCgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9leHByKTogRm9sZCAodm9pZCAqKSZhICsgNC4KCgkqIHRyZWUtb2JqZWN0LXNpemUuYyAocGx1c19leHByX29iamVjdF9zaXplKTogV2hlbiBvcGVyYW5kIHNpemUgaXMKCXVua25vd24sIHJldHVybiB1bmtub3duLgoKMjAwNy0wNS0wMyAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCgkqIGRvYy9pbnZva2UudGV4aSAoLW0zODYsLW00ODYsLW1wZW50aXVtLC1tcGVudGl1bXBybyk6IFJlbW92ZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoQ0MxX0NQVV9TUEVDKTogUmVtb3ZlIGhhbmRsaW5nIGZvciBkZXByZWNhdGVkCglvcHRpb25zLgoKCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG0zODYsbTQ4NixtcGVudGl1bSxtcGVudGl1bXBybyk6IFJlbW92ZS4KCjIwMDctMDUtMDMgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKFRlc3QgRGlyZWN0aXZlcykgQ2xhcmlmeSBkZy1leGNlc3MtZXJyb3JzLgoKMjAwNy0wNS0wMyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc29mdC1mcC9kb3VibGUuaCwgY29uZmlnL3NvZnQtZnAvZXh0ZW5kZWQuaCwKCWNvbmZpZy9zb2Z0LWZwL2Zsb2F0dW5kaWRmLmMsIGNvbmZpZy9zb2Z0LWZwL2Zsb2F0dW5kaXNmLmMsCgljb25maWcvc29mdC1mcC9mbG9hdHVuc2lkZi5jLCBjb25maWcvc29mdC1mcC9mbG9hdHVuc2lzZi5jLAoJY29uZmlnL3NvZnQtZnAvb3AtMi5oLCBjb25maWcvc29mdC1mcC9vcC00LmgsCgljb25maWcvc29mdC1mcC9vcC1jb21tb24uaCwgY29uZmlnL3NvZnQtZnAvcXVhZC5oOiBVcGRhdGUgZnJvbQoJZ2xpYmMgQ1ZTLgoKMjAwNy0wNS0wMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogRG9uJ3Qgc2V0CglNQVNLX1BQQ19HRlhPUFQgZm9yIDg1NDAgb3IgODU0OC4KCjIwMDctMDUtMDMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfdXBkYXRlX2luaXRzX29mX2Rycyk6IFVzZQoJdmVjdF9wcmludF9kdW1wX2luZm8oKSB0byBvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24uCgoyMDA3LTA1LTAzICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMTc2OAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByaW50X29wZXJhbmQpIFsneiddOiBPdXRwdXQgJ3cnIGZvcgoJb3BlcmFuZHMgb2Ygc2l6ZSAyIHdoZW4gb3BlcmFuZCBpcyBub3QgTUVNX1AuCgoyMDA3LTA1LTAzICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMwNTY1CgkqIGxhbWJkYS1jb2RlLmMgKHBlcmZlY3RfbmVzdGlmeSk6IEZpeCB1cGRhdGluZyBvZiBkb21pbmF0b3JzLgoKMjAwNy0wNS0wMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKGFkZHBkaTMsIHVzX3RydW5jcGRpc2kyKTogTmV3IHBhdHRlcm5zLgoJKHVtdWxzaTNfaGlnaHBhcnQpOiBVc2UgdGhlbS4KCSogY29uZmlnL2JmaW4vbGliMWZ1bmNzLmFzbSAoX191bXVsc2kzX2hpZ2hwYXJ0KTogVXNlIHVuc2lnbmVkIG1vdmUKCWZvciBmaW5hbCBhY2N1bXVsYXRvciB0byBEIHJlZ2lzc3RlciB0cmFuZnNlci4KCjIwMDctMDUtMDMgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE2OTkKCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF91cGRhdGVfbWlzYWxpZ25tZW50X2Zvcl9wZWVsKTogUmVtb3ZlCgl3cm9uZyBjb2RlLgoJKHZlY3RfZW5oYW5jZV9kYXRhX3JlZnNfYWxpZ25tZW50KTogQ29tcHV0ZSBwZWVsIGFtb3VudCB1c2luZwoJVFlQRV9WRUNUT1JfU1VCUEFSVFMgaW5zdGVhZCBvZiB2Zi4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogTGlrZXdpc2UuCgoyMDA3LTA1LTAyICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBib290c3RyYXAvMzE3NzYKCSogc3lzdGVtLmg6IFJlbW92ZSBpbmNsdXNpb24gb2YgZG91YmxlLWludC5oCgkqIHRyZWUuaDogSW5jbHVkZSBkb3VibGUtaW50LmgKCSogZ2VuZ3R5cGUuYzogTGlrZXdpc2UKCSogY2ZnbG9vcC5oOiBMaWtld2lzZQoJKiBNYWtlZmlsZS5pbjogQWRqdXN0IGRlcGVuZGVuY2llcyBvbiBkb3VibGUtaW50LmgKCjIwMDctMDUtMDIgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9PUFRJT05fVFJBTlNMQVRFX1RBQkxFKTogVHJhbnNsYXRlCgktc2hhcmVkIHRvIC1aZHluYW1pY2xpYi4KCjIwMDctMDUtMDIgIFNlb25nYmFlIFBhcmsgIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCglQUiBjKysvMzE2NjMKCSogYy1jb21tb24uYyAoc3RyaXBfcG9pbnRlcl9vcl9hcnJheV90eXBlcyk6IE5ldyBmdW5jdGlvbi4KCSogYy1jb21tb24uaCAoc3RyaXBfcG9pbnRlcl9vcl9hcnJheV90eXBlcyk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCjIwMDctMDUtMDMgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE3NzEKCSogdHJlZS1jZmcuYyAobW92ZV9ibG9ja190b19mbik6IEFzc2lnbiBiYiB0byB0aGUgY29ycmVjdCBpbmRleC4KCjIwMDctMDUtMDIgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2JwYWJpLlMgKGFlYWJpX2xjbXApOiBGaXggcmVzdWx0IG9uIG92ZXJmbG93LgoKMjAwNy0wNS0wMiAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yOTcxNQoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfY29tcGFyaXNpb24pOiBSZW1vdmUgdGhlICJmb28rKyA9PSBDT05TVCIKCXRyYW5zZm9ybWF0aW9uLgoKMjAwNy0wNS0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvcHJlZGljYXRlcy5tZCAoc3ltYm9saWNfb3BlcmFuZCk6IEFjY2VwdCBDT05TVHMuCgoyMDA3LTA1LTAyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzExNDYKCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAoZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByXzEpOiBOZXcKCWFyZ3VtZW50LCBzaW5nbGVfdXNlX3AuICBJZiB3ZSBoYXZlIGEgc2luZ2xlIHVzZSB0aGF0IGlzCglhIGNvbnZlcnNpb24gdG8gdGhlIGRlZmluaXRpb24gcmhzIHR5cGUsIHByb3BhZ2F0ZSB0aGF0IHJocy4KCShmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2V4cHIpOiBQYXNzIHNpbmdsZV91c2VfcCBhcmd1bWVudAoJdG8gZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByXzEuCgoyMDA3LTA1LTAxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3NzZV9jb21pKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGUuCgoyMDA3LTA1LTAxICBEd2FyYWthbmF0aCBSYWphZ29wYWwgPGR3YXJhay5yYWphZ29wYWxAYW1kLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRml4IHR5cG8sICdBTUQgRmFtaWx5IDEwaCBjb3JlJyBpbnN0ZWFkIG9mCgknQU1EIEZhbWlseSAxMCBjb3JlJy4KCjIwMDctMDUtMDEgIER3YXJha2FuYXRoIFJhamFnb3BhbCA8ZHdhcmFrLnJhamFnb3BhbEBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogQWNjZXB0IGs4LXNzZTMsIG9wdGVyb24tc3NlMwoJYW5kIGF0aGxvbjY0LXNzZTMgYXMgaW1wcm92ZWQgdmVyc2lvbnMgb2YgazgsIG9wdGVyb24gYW5kIGF0aGxvbjY0Cgl3aXRoIFNTRTMgaW5zdHJ1Y3Rpb24gc2V0IHN1cHBvcnQuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgoyMDA3LTA1LTAxICBEd2FyYWthbmF0aCBSYWphZ29wYWwgPGR3YXJhay5yYWphZ29wYWxAYW1kLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFR1bmluZyAzMi1ieXRlIGxvb3AKCWFsaWdubWVudCBmb3IgYW1kZmFtMTAgYXJjaGl0ZWN0dXJlLiBJbmNyZWFzaW5nIHRoZSBtYXggbG9vcAoJYWxpZ25tZW50IHRvIDI0IGJ5dGVzLgoKMjAwNy0wNS0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9jb25zdHJhaW50cy5tZDogTmV3LgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFJFR19DTEFTU19GUk9NX0xFVFRFUiwKCUNPTlNUX09LX0ZPUl9MRVRURVJfUCwgQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCwKCUVYVFJBX0NPTlNUUkFJTlQpOiBSZW1vdmUuCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IEluY2x1ZGUgY29uc3RyYWludHMubWQuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogQ29weSBERUNMX1JUTCBiZWZvcmUgdXNpbmcgaXQuCgoyMDA3LTA1LTAxICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxNzM5CgkqIHRyZWUtdnJwLmMgKHZycF92YWxfaXNfbWF4KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCSh2cnBfdmFsX2lzX21pbik6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoc2V0X3ZhbHVlX3JhbmdlX3RvX3ZhbHVlKTogVXNlIFRZUEVfe01BWCxNSU59X1ZBTFVFIHJhdGhlciB0aGFuCgljb3B5aW5nIHRoZSBub2RlLgoJKHNldF92YWx1ZV9yYW5nZSk6IFVzZSB2cnBfdmFsX2lzX3ttYXgsbWlufS4KCShleHRyYWN0X3JhbmdlX2Zyb21fYXNzZXJ0KTogTGlrZXdpc2UuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2JpbmFyeV9leHByKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX3VuYXJ5X2V4cHIpOiBMaWtld2lzZS4KCShkdW1wX3ZhbHVlX3JhbmdlLCB2cnBfbWVldCk6IExpa2V3aXNlLgoJKHZycF92aXNpdF9waGlfbm9kZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2Rpc3RpbmN0X3R5cGVfY29weSk6IFJldmVydCBjaGFuZ2Ugb2YgMjAwNy0wNC0yNy4KCjIwMDctMDUtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni9nbW9uLXNvbDIuYyAoc2l6ZV90KTogTmV3IHR5cGUuCgkoaW50cHRyX3QpOiBMaWtld2lzZS4KCShzX3RleHRzaXplKTogRGVjbGFyZSBhcyBzaXplX3QuCgkoc2Jyayk6IERlY2xhcmUuCgkobW9uc3RhcnR1cCk6IFVzZSBzaXplX3QgZm9yIHNpemVzLgoJKF9tY291bnQpOiBTYXZlIGFuZCByZXN0b3JlIHJlZ2lzdGVycy4KCShpbnRlcm5hbF9tY291bnQpOiBQYXNzIDAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vbnN0YXJ0dXAKCWluIDY0LWJpdCBtb2RlLgoJKG1vbmNvbnRyb2wpOiBDb252ZXJ0IHBvaW50ZXIgdG8gYXBwcm9wcmlhdGVseSBzaXplZCBpbnRlZ2VyCgliZWZvcmUgcGFzc2luZyB0byBwcm9maWwuCgoyMDA3LTA1LTAxICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWxkb3VibGUuYyAoX19nY2NfcXVub3JkKTogRGVmaW5lIGlmCglfX05PX0ZQUlNfXywgbm90IGp1c3QgaWYgX1NPRlRfRE9VQkxFLgoJKiBjb25maWcvcnM2MDAwL2xpYmdjYy1wcGMtZ2xpYmMudmVyIChfX2djY19xdW5vcmQpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2luaXRfbGliZnVuY3MpOiBVc2UgX19nY2NfcXVub3JkCglhbHNvIGZvciBFNTAwIGRvdWJsZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGJ1bmVxLCBidW5nZSwgYnVuZ3QsIGJ1bmxlLCBidW5sdCwKCXN1bmVxLCBzdW5nZSwgc3VuZ3QsIHN1bmxlLCBzdW5sdCk6IERpc2FibGUgZm9yIChUQVJHRVRfSEFSRF9GTE9BVAoJJiYgIVRBUkdFVF9GUFJTKS4KCjIwMDctMDUtMDEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAoaXBfbm9ybWFsX3Bvcyk6IENoZWNrIGlmIGxhc3Qgc3RtdAoJaXMgTlVMTC4KCjIwMDctMDUtMDEgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9saWJnY2MtcHBjLWdsaWJjLnZlciAoX19nY2NfcWd0KTogRml4IHR5cG8uCgoyMDA3LTA1LTAxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXZlY3Rvcml6ZS5jICh2ZWN0X2lzX3NpbXBsZV91c2UpOiBnaW1wbGVfbWluX2ludmFyaWFudCBpcwoJaW52YXJpYW50LgoKMjAwNy0wNS0wMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS5oIChtYXliZV9mb2xkX29mZnNldF90b19jb21wb25lbnRfcmVmKTogUmVtb3ZlLgoJKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX3JlZmVyZW5jZSk6IERlY2xhcmUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF91bmFyeSk6IERvIG5vdCBmb2xkCgkodHlwZSAqKSZBIGludG8gJkEtPmZpZWxkX29mX3R5cGVfYW5kX29mZnNldF8wCgkqIHRyZWUtc3NhLWNjcC5jIChtYXliZV9mb2xkX29mZnNldF90b19hcnJheV9yZWYpOiBXaGVuIGJhc2UgdHlwZQoJc2l6ZSBpcyB1bmtub3duLCBnaXZlIHVwLgoJKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2NvbXBvbmVudF9yZWYpOiBJZ25vcmUgZmlyZWxkcyB3aXRoIHVua25vd24KCW9mZnNldHMuCgkobWF5YmVfZm9sZF9vZmZzZXRfdG9fcmVmZXJlbmNlKTogTmV3LgoJKG1heWJlX2ZvbGRfc3RtdF9pbmRpcmVjdCk6IFVzZSBpdC4KCShmb2xkX3N0bXRfcik6IEZvbGQgKHR5cGUgKikmQStvZmZzZXQgaW50byBBLT5maWVsZF9pZl90eXBlX2FuZF9vZmZzZXQuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NvbnZlcnNpb24pOiBDYW5vbmljYWxpemUgY29udmVyc2lvbnMgdG8KCWZpZWxkIHJlZmVyZW5jZXMuCgkoZ2ltcGxpZnlfZXhwcik6IExpa2V3aXNlIGZvciBwbHVzX2V4cHIuCgoyMDA3LTA1LTAxICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAocmV3cml0ZV91c2Vfbm9ubGluZWFyX2V4cHIpOiBVc2UKCWJzaV9hZnRlcl9sYWJlbHMuICBBbHdheXMgaW5zZXJ0IHN0YXRlbWVudHMgYmVmb3JlIGJzaS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2NyZWF0ZV9lcGlsb2dfZm9yX3JlZHVjdGlvbik6IERpdHRvLgoJKiBwcmVkaWN0LmMgKGFwcGx5X3JldHVybl9wcmVkaWN0aW9uKTogQ2hlY2sgZm9yIGVtcHR5IGJsb2Nrcy4KCSogY2ZnZXhwYW5kLmMgKGxhYl9ydHhfZm9yX2JiKTogTmV3IHZhcmlhYmxlLgoJKGxhYmVsX3J0eF9mb3JfYmIpOiBEbyBub3QgY3JlYXRlIG5ldyB0cmVlIGxhYmVscy4KCShleHBhbmRfZ2ltcGxlX2Jhc2ljX2Jsb2NrKTogQWRkIGxhYmVscyByZWNvcmRlZCBpbiBsYWJfcnR4X2Zvcl9iYi4KCSh0cmVlX2V4cGFuZF9jZmcpOiBJbml0aWFsaXplIGxhYl9ydHhfZm9yX2JiLgoJKiB0cmVlLWNmZy5jIChidWlsZF90cmVlX2NmZyk6IENhbGwgY2xlYW51cF9kZWFkX2xhYmVscyBhZnRlcgoJY3JlYXRpbmcgZWRnZXMuCgkobGFiZWxfZm9yX2JiKTogQWRkIGZpZWxkIHVzZWQuCgkodXBkYXRlX2VoX2xhYmVsLCBtYWluX2Jsb2NrX2xhYmVsKTogTWFyayB0aGUgbGFiZWwgdXNlZC4KCShjbGVhbnVwX2RlYWRfbGFiZWxzKTogUmVtb3ZlIHVudXNlZCBsYWJlbHMuCgoyMDA3LTA1LTAxICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXZycC5jIChzZXRfdmFsdWVfcmFuZ2UpOiBEbyBub3QgYWxsb2NhdGUgZXF1aXYgYml0bWFwCglpZiBpdCBpcyBub3QgYWJvdXQgdG8gYmUgc2V0LgoJKGdldF92YWx1ZV9yYW5nZSk6IERvIG5vdCBwcmUtYWxsb2NhdGUgZXF1aXYgYml0bWFwLgoJKHVwZGF0ZV92YWx1ZV9yYW5nZSk6IE5vIG5lZWQgdG8gY2xlYXIgZXF1aXYgZmllbGQuCgkoYWRkX2VxdWl2YWxlbmNlKTogQ2hhbmdlIHByb3RvdHlwZSB0byBnZXQgYml0bWFwIHBvaW50ZXIuCglBbGxvY2F0ZSBiaXRtYXAgaGVyZSBpZiBpdCBpcyBub3QgYWxyZWFkeS4KCShleHRyYWN0X3JhbmdlX2Zyb21fYXNzZXJ0KTogRG8gbm90IGFsbG9jYXRlIGJpdG1hcCBoZXJlLgoJVXBkYXRlIGNhbGxlcnMgdG8gYWRkX2VxdWl2YWxlbmNlLgoJKGV4dHJhY3RfcmFuZ2VfZnJvbV9zc2FfbmFtZSk6IExpa2V3aXNlLgoJKGdldF92cl9mb3JfY29tcGFyaXNvbik6IE5ldyBzdGF0aWMgaGVscGVyLgoJKGNvbXBhcmVfbmFtZV93aXRoX3ZhbHVlKTogSGFuZGxlIE5VTEwgZXF1aXYgYml0bWFwIGJ5CglwZWVsaW5nIHRoZSBmaXJzdCBpdGVyYXRpb24gb2YgdGhlIGNvbXBhcmlzb24gbG9vcC4KCVVzZSBnZXRfdnJfZm9yX2NvbXBhcmlzb24uCgkoY29tcGFyZV9uYW1lcyk6IEhhbmRsZSBOVUxMIGVxdWl2IGJpdG1hcHMgYnkgdXNpbmcgZmFrZQoJb25lcy4gIFVzZSBnZXRfdnJfZm9yX2NvbXBhcmlzb24uCgoyMDA3LTA0LTMwICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvdWJsZS1pbnQuYyAobXB6X3NldF9kb3VibGVfaW50KTogTW92ZWQgZnJvbQoJdHJlZS1zc2EtbG9vcC1uaXRlci5jLgoJKG1wel9nZXRfZG91YmxlX2ludCk6IExpa2V3aXNlOyBhbHNvLCBhZGQgb3B0aW9uIHRvIHdyYXAKCW91dC1vZi1yYW5nZSBpbnRlZ2Vycy4KCSogZG91YmxlLWludC5oOiBOZXcgcHJvdG90eXBlcyBmb3IgYWJvdmUuCgkqIHRyZWUuYyAoZ2V0X3N0YXRpY190eXBlX2JvdW5kcyk6IE1vdmVkIGZyb20KCXRyZWUtc3NhLWxvb3Atbml0ZXIuYzsgbm93IHJldHVybnMgVFlQRV9NSU5fVkFMVUUgYW5kCglUWVBFX01BWF9WQUxVRSBpZiB0aGV5IGV4aXN0Li4KCSogdHJlZS5oOiBOZXcgcHJvdG90eXBlIGZvciBhYm92ZS4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jOiBBZGp1c3QgbXB6X3RvX2RvdWJsZV9pbnQgYW5kCglnZXRfdHlwZV9ib3VuZHMgY2FsbHMuCgkobXB6X3NldF9kb3VibGVfaW50KTogTW92ZSB0byBkb3VibGUtaW50LmMuCgkoZ2V0X3R5cGVfYm91bmRzKTogTW92ZSB0byB0cmVlLmMsIHJlbmFtZSB0bwoJZ2V0X3N0YXRpY190eXBlX2JvdW5kcy4KCShtcHpfdG9fZG91YmxlX2ludCk6IE1vdmUgdG8gZG91YmxlLWludC5jLCByZW5hbWUgdG8KCW1wel9nZXRfZG91YmxlX2ludC4KCjIwMDctMDQtMzAgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2xpYjFmdW5jcy5hc20gKF9fdW1vZHNpMywgX19tb2RzaTMpOiBSZWFycmFuZ2Ugc28gdGhhdAoJRElWMCBleGNlcHRpb24gY2FuIGZhbGwgdGhyb3VnaCB0byBhIG5vcm1hbCByZXR1cm4uCgoyMDA3LTA0LTMwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzIyMTU2CglUZW1wb3JhcmlseSByZXZlcnQ6CgkyMDA3LTA0LTA2ICBBbmRyZWFzIFRvYmxlciAgPGEudG9ibGVyQHNjaHdlaXoub3JnPgoJKiB0cmVlLXNyYS5jIChzcmFfYnVpbGRfZWx0X2Fzc2lnbm1lbnQpOiBJbml0aWFsaXplIG1pbi9tYXhzaGlmdC4KCTIwMDctMDQtMDUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiB0cmVlLXNyYS5jICh0cnlfaW5zdGFudGlhdGVfbXVsdGlwbGVfZmllbGRzKTogTmVlZGxlc3NseQoJaW5pdGlhbGl6ZSBhbGlnbiB0byBzaWxlbmNlIGJvZ3VzIHdhcm5pbmcuCgkyMDA3LTA0LTA1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogdHJlZS1zcmEuYyAoc3RydWN0IHNyYV9lbHQpOiBBZGQgaW5fYml0ZmxkX2Jsb2NrLiAgUmVtb3ZlCglhbGxfbm9fd2FybmluZy4KCShzdHJ1Y3Qgc3JhX3dhbGtfZm5zKTogUmVtb3ZlIHVzZV9hbGwgcGFyYW1ldGVyIGZyb20gdXNlLgoJKHNyYV9oYXNoX3RyZWUpOiBIYW5kbGUgQklUX0ZJRUxEX1JFRnMuCgkoc3JhX2VsdF9oYXNoKTogRG9uJ3QgaGFzaCBiaXRmbGQgYmxvY2tzLgoJKHNyYV9lbHRfZXEpOiBTa2lwIHRoZW0gaW4gcGFyZW50IGNvbXBhcmVzIGFzIHdlbGwuICBIYW5kbGUKCUJJVF9GSUVMRF9SRUZzLgoJKHNyYV93YWxrX2V4cHIpOiBEb24ndCBtYWludGFpbiBvciBwYXNzIGRvd24gdXNlX2FsbF9wLgoJKHNjYW5fdXNlKTogUmVtb3ZlIHVzZV9hbGwgcGFyYW1ldGVyLgoJKHNjYWxhcml6ZV91c2UpOiBMaWtld2lzZS4gIFJlLWV4cGFuZCBhc3NpZ25tZW50IHRvCglCSVRfRklFTERfUkVGIG9mIGdpbXBsZV9yZWcuICBEZS1zY2FsYXJpemUgYmVmb3JlIGlucHV0IG9yCglvdXRwdXQsIGFuZCByZS1zY2FsYXJpemUgYWZ0ZXIgb3V0cHV0LiAgRG9uJ3QgbWFyayBhbnl0aGluZwoJZm9yIG5vIHdhcm5pbmcuCgkoc2NhbGFyaXplX2xkc3QpOiBBZGp1c3QuCgkoc2NhbGFyaXplX3dhbGtfZ2ltcGxlX21vZGlmeV9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShidWlsZF9lbGVtZW50X25hbWVfMSk6IEhhbmRsZSBCSVRfRklFTERfUkVGcy4KCShpbnN0YW50aWF0ZV9lbGVtZW50KTogRG9uJ3Qgd2FybiBmb3IgYW55IGVsZW1lbnQgd2hvc2UgcGFyZW50CglpcyB1c2VkIGFzIGEgd2hvbGUuCgkoaW5zdGFudGlhdGVfbWlzc2luZ19lbGVtZW50c18xKTogUmV0dXJuIHRoZSBzcmFfZWx0LgoJKGNhbm9uX3R5cGVfZm9yX2ZpZWxkKTogTmV3LgoJKHRyeV9pbnN0YW50aWF0ZV9tdWx0aXBsZV9maWVsZHMpOiBOZXcuCgkoaW5zdGFudGlhdGVfbWlzc2luZ19lbGVtbnRzKTogVXNlIHRoZW0uCgkobWFya19ub193YXJuaW5nKTogUmVtb3ZlZC4KCShnZW5lcmF0ZV9vbmVfZWxlbWVudF9yZWYpOiBIYW5kbGUgQklUX0ZJRUxEX1JFRnMuCgkoUkVQTERVUCwgc3JhX2J1aWxkX2VsdF9hc3NpZ25tZW50KTogTmV3LgoJKGdlbmVyYXRlX2NvcHlfaW5vdXQpOiBVc2UgdGhlbS4KCShnZW5lcmF0ZV9lbGVtZW50X2NvcHkpOiBMaWtld2lzZS4gIEhhbmRsZSBiaXRmbGQgZGlmZmVyZW5jZXMuCgkoZ2VuZXJhdGVfZWxlbWVudF96ZXJvKTogRG9uJ3QgcmVjdXJzZSBmb3IgYmxvY2tzLiAgVXNlCglzcmFfYnVpbGRfZWx0X2Fzc2lnbm1lbnQuCgkoZ2VuZXJhdGVfb25lX2VsZW1lbnRfaW50KTogVGFrZSBlbHQgaW5zdGVhZCBvZiB2YXIuICBVc2UKCXNyYV9idWlsZF9lbHRfYXNzaWdubWVudC4KCShnZW5lcmF0ZV9lbGVtZW50X2luaXRfMSk6IEFkanVzdC4KCShzY2FsYXJpemVfdXNlLCBzY2FsYXJpemVfY29weSk6IFVzZSBSRVBMRFVQLgoJKHNjYWxhcml6ZV9sZHN0KTogTW92ZSBhc3NlcnQgYmVmb3JlIGRlcmVmZXJlbmNlLgoJKGR1bXBfc3JhX2VsdF9uYW1lKTogSGFuZGxlIEJJVF9GSUVMRF9SRUZzLgoKMjAwNy0wNC0zMCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgQysrLzMxNzIxCgkqIHRyZWUuYyAocmVjb25zdHJ1Y3RfY29tcGxleF90eXBlKTogUmVjb25zdHJ1Y3QgYSByZWZlcmVuY2UKCWNvcnJlY3RseS4KCUFsc28gdXNlIHRoZSBzYW1lIG1vZGUgZm9yIHRoZSBwb2ludGVyIGFzIHRoZSBvbGQgcG9pbnRlciB0eXBlLgoKMjAwNy0wNC0zMCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCSogZG9jL3Ryb3VibGUudGV4aSAoSW50ZXJvcGVyYXRpb24pOiBSZW1vdmUgbm90ZSBhYm91dCBVbHRyaXgKCUZvcnRyYW4gY29tcGlsZXIuCgoyMDA3LTA0LTI5ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzE2NzYKCSogZGYtc2Nhbi5jIChyZWNvcmRfbm9ubG9jYWxfZ290b19yZWNlaXZlcl9kZWZzKTogTmV3IGZ1bmN0aW9uLgoJKGRmX3JlZnNfcmVjb3JkKTogQ2FsbCBpdC4KCjIwMDctMDQtMjkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBydGwuZGVmIChTU19BQlMpOiBOZXcgY29kZS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChwcmludF9vcGVyYW5kKTogTmV3IG1vZGlmaWVyICd2Jy4KCShlbnVtIGJmaW5fYnVpbHRpbnMpOiBBZGQgQkZJTl9CVUlMVElOX1NVTV8yWDE2LCBCRklOX0JVSUxUSU5fQUJTXzF4MzIsCglCRklOX0JVSUxUSU5fUk9VTkRfMXgzMiwgQkZJTl9CVUlMVElOX01VTFRfMXgzMngzMiwKCUJGSU5fQlVJTFRJTl9NVUxUXzF4MzJ4MzJOUywgQkZJTl9CVUlMVElOX1NTQVNISUZUXzF4MzIuCgkoYmZpbl9pbml0X2J1aWx0aW5zKTogRGVmaW5lIHRoZW0uCgkoYmRlc2NfMWFyZywgYmRlc2NfMmFyZyk6IEFkZCBzb21lIG9mIHRoZW0gaGVyZSwgLi4uCgkoYmZpbl9leHBhbmRfYnVpbHRpbik6IC4uLiBhbmQgaGFuZGxlIHRoZSBvdGhlcnMgaGVyZS4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAoc3NhYnNzaTIsIHNzcm91bmRzaTIsIHNzYXNoaWZ0c2kzLAoJZmxhZ19tdWxfbWFjdjJoaV9wYXJ0c19hY2Nvbmx5X2FuZGNjMCk6IE5ldyBwYXR0ZXJucy4KCShzc19hYnN2MmhpMik6IFJlbmFtZWQgZnJvbSBhYnN2MmhpOyB1c2Ugc3NfYWJzIGNvZGUuCgkoc3Nhc2hpZnR2MmhpMywgc3Nhc2hpZnRoaTMsIGxzaGlmdHYyaGkzLCBsc2hpZnRoaTMpOiBTaGlmdCBjb3VudAoJb3BlcmFuZCBpcyBvbmx5IEhJbW9kZS4KCjIwMDctMDQtMjkgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIHJlZ2NsYXNzLmMgKHNjYW5fb25lX2luc24pOiBSZW1vdmUgc3BsaXR0aW5nIG9mCgl0d28gYWRkcmVzcyBpbnNucy4KCjIwMDctMDQtMjggIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOaWdlbCBTdGVwaGVucyAgPG5pZ2VsQG1pcHMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChTTE9XX0JZVEVfQUNDRVNTKTogVHVybiBvZmYgZm9yIE1JUFMxNi4KCjIwMDctMDQtMjggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9vdXRwdXRfbWlfdGh1bmtfb3NmKTogVXNlCglpbnNuX2xvY2F0b3JzX2FsbG9jIGluc3RlYWQgb2YgaW5zbl9sb2NhdG9yc19pbml0aWFsaXplOwoJY2FsbCByZXNldF9ibG9ja19jaGFuZ2VzLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzcGFyY19vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL2lzNjQvaWE2NC5jIChpYTY0X291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zY29yZS9zY29yZS5jICh0aF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjZmdseWFvdXQuYyAoc2V0X2N1cnJfaW5zbl9zb3VyY2VfbG9jYXRpb24sIHNldF9jdXJyX2luc25fYmxvY2spOgoJdG9sZXJhdGUgdW5pbml0aWFsaXplZCBsb2NhdG9yIGluZm8uCgoJUmUtYXBwbHk6CgkqIGZ1bmN0aW9uLmMgKGluaXRfZnVuY3Rpb25fc3RhcnQpOiBEb24ndCBpbml0IGxpbmUgbnVtYmVyIGluZm8uCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IFVwZGF0ZS4KCShyZXNldF9ibG9ja19jaGFuZ2VzLCByZWNvcmRfYmxvY2tfY2hhbmdlLCBmaW5hbGl6ZV9ibG9ja19jaGFuZ2VzLAoJY2hlY2tfYmxvY2tfY2hhbmdlLCBmcmVlX2Jsb2NrX2NoYW5nZXMpOiBLaWxsLgoJKiBmdW5jdGlvbi5oIChyZXNldF9ibG9ja19jaGFuZ2VzLCByZWNvcmRfYmxvY2tfY2hhbmdlLAoJZmluYWxpemVfYmxvY2tfY2hhbmdlcywgY2hlY2tfYmxvY2tfY2hhbmdlLCBmcmVlX2Jsb2NrX2NoYW5nZXMpOgoJUmVtb3ZlIHByb3RvdHlwZXMuCgkoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIGliX2JvdW5kYXJpZXNfYmxvY2suCgkqIGVtaXQtcnRsLmMgKG1ha2VfaW5zbl9yYXcsIG1ha2VfanVtcF9pbnNuX3JhdywgbWFrZV9jYWxsX2luc25fcmF3KToKCVVzZSBjdXJyX2luc25fbG9jYXRvciB0byBpbml0aWFsaXplIGxvY2F0b3IuCgkoZW1pdF9saW5lX25vdGUpOiBSZW1vdmUuCgkqIGNmZ2V4cGFuZC5jIChleHBhbmRfZ2ltcGxlX2NvbmRfZXhwcik6IFVwZGF0ZS4KCShjb25zdHJ1Y3RfZXhpdF9ibG9jayk6IExpa2V3aXNlLgoJKHRyZWVfZXhwYW5kX2NmZyk6IEluaXRpYWxpemUvZmluYWxpemUgbG9jYXRvcnMuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbCk6IFVwZGF0ZS4KCSogY2ZnbGF5b3V0LmMgKGxpbmVfbG9jYXRvcnNfbG9jcywgbGluZV9sb2NhdG9yc19saW5lcywKCWZpbGVfbG9jYXRvcnNfbG9jcywgZmlsZV9sb2NhdG9yc19maWxlcyk6IFJlbW92ZS4KCShzZXRfYmxvY2tfbGV2ZWxzKTogTW92ZSB0byBjZmdleHBhbmQuYy4KCShpbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBSZW1vdmUuCgkocGFzc19pbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBSZW1vdmUuCgkobG9jYXRpb25zX2xvY2F0b3JzX2xvY3MsIGxvY2F0aW9uc19sb2NhdG9yc192YWxzKTogTmV3IHN0YXRpYyB2YXJzLgoJKGN1cnJfbG9jYXRpb24sIGxhc3RfbG9jYXRpb24sIGN1cnJfYmxvY2ssIGxhc3RfYmxvY2ssIGN1cnJfcnRsX2xvYyk6CglMaWtld2lzZS4KCShpbnNuX2xvY2F0b3JzX2FsbG9jLCBpbnNuX2xvY2F0b3JzX2ZpbmFsaXplLAoJc2V0X2N1cnJfaW5zbl9zb3VyY2VfbG9jYXRpb24sIHNldF9jdXJyX2luc25fYmxvY2ssIGN1cnJfaW5zbl9sb2NhdG9yKToKCU5ldyBmdW5jdGlvbnMuCgkobG9jYXRvcl9sb2NhdGlvbik6IE5ldy4KCShsb2NhdG9yX2xpbmUsIGxvY2F0b3JfZmlsZSk6IFJld3JpdGUuCgkqIHJ0bC5oIChlbWl0X2xpbmVfbm90ZSk6IEtpbGwuCgkoaW5zbl9sb2NhdG9yc19hbGxvYywgaW5zbl9sb2NhdG9yc19maW5hbGl6ZSwKCXNldF9jdXJyX2luc25fc291cmNlX2xvY2F0aW9uLCBzZXRfY3Vycl9pbnNuX2Jsb2NrLCBjdXJyX2luc25fbG9jYXRvcik6CglEZWNsYXJlLgoJKiB0cmVlLWlubGluZS5jIChpbml0aWFsaXplX2NmdW4pOiBEbyBub3QgaW5pdGlhbGl6ZQoJaWJfYm91bmRhcmllc19ibG9jay4KCSogcGFzc2VzLmMgKHBhc3NfaW5zbl9sb2NhdG9yc19pbml0aWFsaXplKTogUmVtb3ZlLgoKMjAwNy0wNC0yOCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtY2ZnLmMgKG1vdmVfYmxvY2tfdG9fZm4pOiBSZWxlYXNlIGJiIGZyb20gZG9taW5hbmNlCglpbmZvLiAgVXBkYXRlIGxhc3RfYmFzaWNfYmxvY2sgY29ycmVjdGx5LgoKMjAwNy0wNC0yNyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgdGFyZ2V0LzMxNzAxCgkqIGNvbmZpZy9zaC9zaC5jIChvdXRwdXRfc3RhY2tfYWRqdXN0KTogQXZvaWQgdXNpbmcgdGhlIGZyYW1lCglyZWdpc3RlciBpdHNlbGYgdG8gaG9sZCB0aGUgb2Zmc2V0IGNvbnN0YW50LiAgVGVsbCBmbG93IHRoZSB1c2UKCW9mIHI0IGFuZCByNSB3aGVuIHRoZXkgYXJlIHVzZWQuCgoyMDA3LTA0LTI3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChmb3J3YXJkX3Byb3BhZ2F0ZV9pbnRvX2NvbmQpOiBLZWVwIHRyYWNrCglpZiB3ZSBzaW1wbGlmaWVkIGFueXRoaW5nLgoJKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IERlZmVyIG92ZXJmbG93Cgl3YXJuaW5ncyB1bnRpbCB3ZSBkaWQgYSBzaW1wbGlmaWNhdGlvbiBhbmQgdGhlIHN0bXQgd2FzIG5vdAoJbWFya2VkIGFzIFRSRUVfTk9fV0FSTklORy4KCjIwMDctMDQtMjcgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoQUxXQVlTX1BVU0hfQ09OU1RTX1VTSU5HX1JFR1NfUCk6IFJlbW92ZS4KCjIwMDctMDQtMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMTcxMAoJKiB0cmVlLmMgKGJ1aWxkX2Rpc3RpbmN0X3R5cGVfY29weSk6IElmIFRZUEVfTUlOX1ZBTFVFIG9yCglUWVBFX01BWF9WQUxVRSBleGlzdCwgY29udmVydCB0aGVtIHRvIHRoZSBuZXcgdHlwZS4KCjIwMDctMDQtMjcgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLWNmZ2NsZWFudXAuYyAoY2xlYW51cF90cmVlX2NmZyk6IFZlcmlmeSBkb21pbmFuY2UgaW5mbwoJaWYgaXQgY2xhaW1zIHRvIGJlIGF2YWlsYWJsZS4KCSogdHJlZS1zc2EtZGNlLmMgKHJlbW92ZV9kZWFkX3N0bXQpOiBNYXJrIGNmZyBhcyBhbHRlcmVkIHdoZW4KCWVkZ2UgaXMgcmVkaXJlY3RlZC4KCShwZXJmb3JtX3RyZWVfc3NhX2RjZSk6IEFsd2F5cyBmcmVlIHBvc3Rkb21pbmF0b3JzLgoKMjAwNy0wNC0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9wcmVkaWNhdGVzLm1kIChhbGlnbmVkX21lbW9yeV9vcGVyYW5kKTogTWFyawoJYXMgZGVmaW5lX3NwZWNpYWxfcHJlZGljYXRlLgoJKHVuYWxpZ25lZF9tZW1vcnlfb3BlcmFuZCwgbm9ybWFsX21lbW9yeV9vcGVyYW5kKTogTGlrZXdpc2UuCgkocmVnX29yX3VuYWxpZ25lZF9tZW1fb3BlcmFuZCk6IFJlbW92ZS4KCShhbnlfbWVtb3J5X29wZXJhbmQpOiBNYXRjaCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgY2hlY2sgZm9yCglub24tcmVudW1iZXJlZCBwc2V1ZG9zIGR1cmluZyByZWxvYWQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zZWNvbmRhcnlfcmVsb2FkKTogUmVuYW1lIGZyb20KCWFscGhhX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MsIHVwZGF0ZSB0byBuZXcgaW50ZXJmYWNlLCBtYWtlIHN0YXRpYy4KCUhhbmRsZSBDUUltb2RlIGxpa2UgSEltb2RlLiAgUmVtb3ZlIEZQIHN1YnJlZyBjaGVjay4KCShhbHBoYV9leHBhbmRfbW92KTogVXNlIHJlcGxhY2VfZXF1aXZfYWRkcmVzcy4KCShhbHBoYV9leHBhbmRfbW92X25vYnd4KTogVXNlIGFueV9tZW1vcnlfb3BlcmFuZC4KCShUQVJHRVRfU0VDT05EQVJZX1JFTE9BRCk6IE5ldy4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKFNFQ09OREFSWV9JTlBVVF9SRUxPQURfQ0xBU1MpOiBSZW1vdmUuCgkoU0VDT05EQVJZX09VVFBVVF9SRUxPQURfQ0xBU1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9hbHBoYS9zeW5jLm1kIChJMTJNT0RFLCBJNDhNT0RFLCBtb2Rlc3VmZml4KTogTW92ZSAuLi4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kOiAuLi4gaGVyZS4KCShSRUxPQUQxMiwgcmVsb2FkbW9kZSk6IE5ldy4KCShtb3ZjcWkpOiBOZXcuCgkocmVsb2FkX2luPFJFTE9BRDEyPik6IE1hY3JvLWl6ZSBmcm9tIHJlbG9hZF9pbnFpLCByZWxvYWRfaW5oaS4KCURvbid0IGhhbmRsZSB0aGUgYWxpZ25lZCBjYXNlIGhlcmUuCgkocmVsb2FkX291dDxSRUxPQUQxMj4pOiBNYWNyby1pemUgZnJvbSByZWxvYWRfb3V0cWksIHJlbG9hZF9vdXRoaS4KCShyZWxvYWRfaW48STEyTU9ERT5fYWxpZ25lZCk6IE1hY3JvLWl6ZSBmcm9tIHJlbG9hZF9pbnFpX2hlbHAsCglyZWxvYWRfaW5oaV9oZWxwLiAgRG9uJ3QgZXhwZWN0IGEgc2NyYXRjaCByZWdpc3Rlci4KCShyZWxvYWRfb3V0PEkxMk1PREU+X2FsaWduZWQpOiBNYWNyby1pemUgZnJvbSByZWxvYWRfb3V0cWlfaGVscCwKCXJlbG9hZF9vdXRoaV9oZWxwLgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmggKGFscGhhX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBSZW1vdmUuCgoyMDA3LTA0LTI3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChnZXRfcHJvcF9kZXN0X3N0bXQpOiBGaXggY29tbWVudCB0eXBvLgoKMjAwNy0wNC0yNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMwOTY1CglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDk3OAoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2EtZm9yd3Byb3Aubyk6IERlcGVuZCBvbiAkKEZMQUdTX0gpLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChmb3J3YXJkX3Byb3BhZ2F0ZV9pbnRvX2NvbmRfMSk6IFJlbW92ZS4KCShmaW5kX2VxdWl2YWxlbnRfZXF1YWxpdHlfY29tcGFyaXNvbik6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X2NvbmQpOiBMaWtld2lzZS4KCShnZXRfcHJvcF9zb3VyY2Vfc3RtdCk6IE5ldyBoZWxwZXIuCgkoZ2V0X3Byb3BfZGVzdF9zdG10KTogTGlrZXdpc2UuCgkoY2FuX3Byb3BhZ2F0ZV9mcm9tKTogTGlrZXdpc2UuCgkocmVtb3ZlX3Byb3Bfc291cmNlX2Zyb21fdXNlKTogTGlrZXdpc2UuCgkoY29tYmluZV9jb25kX2V4cHJfY29uZCk6IExpa2V3aXNlLgoJKGZvcndhcmRfcHJvcGFnYXRlX2NvbXBhcmlzb24pOiBOZXcgZnVuY3Rpb24uCgkoZm9yd2FyZF9wcm9wYWdhdGVfaW50b19jb25kKTogUmV3cml0ZSB0byB1c2UgZm9sZCBmb3IKCXRyZWUgY29tYmluaW5nLgoJKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IENhbGwKCWZvcndhcmRfcHJvcGFnYXRlX2NvbXBhcmlzb24gdG8gcHJvcGFnYXRlIGNvbXBhcmlzb25zLgoKMjAwNy0wNC0yNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxNzE1CgkqIHRyZWUtc3NhLWNjcC5jIChtYXliZV9mb2xkX29mZnNldF90b19hcnJheV9yZWYpOiBNYWtlCglzdXJlIHRvIGRvIGNvbXB1dGF0aW9uIG9uIHRoZSBvZmZzZXQgaW4gYW4gYXBwcm9wcmlhdGUKCXNpZ25lZCB0eXBlLgoKMjAwNy0wNC0yNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiByZWxvYWQuaCAoZWxpbWluYXRpb25fdGFyZ2V0X3JlZ19wKTogRGVjbGFyZS4KCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IERvbid0IGFwcGx5IHRoZSByZWdfcnR4IG1vdmUKCW9wdGltaXphdGlvbiBpZiB0aGUgU0VUX0RFU1Qgc2F0aXNmaWVzIGVsaW1pbmF0aW9uX3RhcmdldF9yZWdfcC4KCSogcmVsb2FkMS5jIChlbGltaW5hdGlvbl90YXJnZXRfcmVnX3ApOiBOZXcgZnVuY3Rpb24uCgkoZ2VuX3JlbG9hZCk6IEluIHRoZSBtb3ZlL2FkZDIgZmFsbGJhY2ssIG1ha2Ugc3VyZSB0aGF0IG9wMAoJZG9lcyBub3Qgb3ZlcmxhcCB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIuCgoyMDA3LTA0LTI3ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1pbS5jIChkZXRlcm1pbmVfaW52YXJpYW50bmVzc19zdG10KTogQXR0ZW1wdCB0bwoJdHJhbnNmb3JtIG9ubHkgR0lNUExFX01PRElGWV9TVE1Ucy4KCSogdHJlZS1jb21wbGV4LmMgKGV4cGFuZF9jb21wbGV4X29wZXJhdGlvbnNfMSk6IERpdHRvLgoJKGV4cGFuZF9jb21wbGV4X2Rpdl93aWRlKTogRG8gbm90IGNyZWF0ZSBnb3RvcyBpbiBDT05EX0VYUFIgYnJhbmNoZXMuCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAoYnVpbGRfaWZfc3RtdCk6IFJlbW92ZWQuCgkodHJlZV90cmFuc2Zvcm1fYW5kX3Vucm9sbF9sb29wKTogRG8gbm90IGNyZWF0ZSBnb3RvcyBpbiBDT05EX0VYUFIKCWJyYW5jaGVzLgoJKiB2YWx1ZS1wcm9mLmMgKHRyZWVfZGl2bW9kX2ZpeGVkX3ZhbHVlLCB0cmVlX21vZF9wb3cyLAoJdHJlZV9tb2Rfc3VidHJhY3QsIHRyZWVfaWMsIHRyZWVfc3RyaW5nb3BfZml4ZWRfdmFsdWUpOiBEaXR0by4KCSogb21wLWxvdy5jIChleHBhbmRfcGFyYWxsZWxfY2FsbCwgZXhwYW5kX29tcF9mb3JfZ2VuZXJpYywKCWV4cGFuZF9vbXBfZm9yX3N0YXRpY19jaHVuaywgZXhwYW5kX29tcF9mb3Jfc3RhdGljX25vY2h1bmspOiBEaXR0by4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHNscGVlbF9tYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMsCglzbHBlZWxfYWRkX2xvb3BfZ3VhcmQpOiBEaXR0by4KCSogdHJlZS1tdWRmbGFwLmMgKG1mX2J1aWxkX2NoZWNrX3N0YXRlbWVudF9mb3IpOiBEaXR0by4KCSogbGFtYmRhLWNvZGUuYyAocGVyZmVjdF9uZXN0aWZ5KTogRGl0dG8uCgkqIHRyZWUtaXRlcmF0b3IuYyAodHNpX3NwbGl0X3N0YXRlbWVudF9saXN0X2JlZm9yZSk6IEZpeCBzcGxpdHRpbmcKCWJlZm9yZSB0aGUgZmlyc3Qgc3RhdGVtZW50LgoJKiB0cmVlLW9wdGltaXplLmMgKGV4ZWN1dGVfZnJlZV9kYXRhc3RydWN0dXJlcyk6IEZpeCBjb21tZW50cy4KCShleGVjdXRlX2ZyZWVfY2ZnX2Fubm90YXRpb25zKTogRG8gbm90IGNhbGwgZGlzYmFuZF9pbXBsaWNpdF9lZGdlcy4KCSogdHJlZS1mbG93LmggKGRpc2JhbmRfaW1wbGljaXRfZWRnZXMpOiBEZWNsYXJhdGlvbiByZW1vdmVkLgoJKiB0cmVlLWNmZy5jIChtYWtlX2NvbmRfZXhwcl9lZGdlcyk6IFJlbW92ZSBnb3RvcyBmcm9tIENPTkRfRVhQUgoJYnJhbmNoZXMuCgkoY2xlYW51cF9kZWFkX2xhYmVscywgdHJlZV9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiBIYW5kbGUKCUNPTkRfRVhQUnMgd2l0aG91dCBnb3Rvcy4KCShkaXNiYW5kX2ltcGxpY2l0X2VkZ2VzLCBoYXNfbGFiZWxfcCk6IFJlbW92ZWQuCgkodHJlZV92ZXJpZnlfZmxvd19pbmZvKTogVmVyaWZ5IHRoYXQgQ09ORF9FWFBSIGJyYW5jaGVzIGFyZSBlbXB0eS4KCSh0cmVlX2x2X2FkZF9jb25kaXRpb25fdG9fYmIpOiBEbyBub3QgY3JlYXRlIGdvdG9zIGluIENPTkRfRVhQUgoJYnJhbmNoZXMuCgkqIHRyZWUuYyAoYnVpbGQzX3N0YXQpOiBNYXJrIENPTkRfRVhQUnMgdXNlZCBhcyBzdGF0ZW1lbnRzIGFzIGhhdmluZwoJc2lkZSBlZmZlY3RzLgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2ltcGxpY2l0X2VkZ2VzKTogRHVtcCBpbXBsaWNpdCBlZGdlcwoJYWxzbyBmb3IgQ09ORF9FWFBScy4KCSogY2ZnZXhwYW5kLmMgKGxhYmVsX3J0eF9mb3JfYmIpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2dpbXBsZV9jb25kX2V4cHIpOiBEbyBub3QgZXhwZWN0IGdvdG9zIGluIENPTkRfRVhQUiBicmFuY2hlcy4KCVVzZSBsYWJlbF9ydHhfZm9yX2JiIHRvIGZpbmQgdGhlIGxhYmVscy4KCShleHBhbmRfZ2ltcGxlX2Jhc2ljX2Jsb2NrKTogUmVtb3ZlIFJFVFVSTl9FWFBSIGF0IHRoZSBlbmQgb2YgdGhlCglsYXN0IGJsb2NrLiAgRGV0ZWN0IGZhbGx0aHJ1IGVkZ2VzLgoKMjAwNy0wNC0yNiAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCglQUiB0YXJnZXQvMjg2NzUKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19zdWJyZWdfYWRkcmVzcyk6IElmIHRoZSBhZGRyZXNzIHdhcyB2YWxpZAoJaW4gdGhlIG9yaWdpbmFsIG1vZGUgYnV0IG5vdCBpbiB0aGUgbmV3IG1vZGUsIHJlbG9hZCB0aGUgd2hvbGUKCWFkZHJlc3MuCgoyMDA3LTA0LTI3ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1jZmdjbGVhbnVwLmMgKGNmZ2NsZWFudXBfYWx0ZXJlZF9iYnMpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKHJlbW92ZV9mYWxsdGhydV9lZGdlKTogVXNlIHJlbW92ZV9lZGdlX2FuZF9kb21pbmF0ZWRfYmxvY2tzLgoJKGNsZWFudXBfY29udHJvbF9leHByX2dyYXBoKTogRG8gbm90IGludmFsaWRhdGUgZG9taW5hbmNlIGluZm8uCglSZWNvcmQgYWx0ZXJlZCBibG9ja3MuCgkoY2xlYW51cF9jb250cm9sX2Zsb3csIGNsZWFudXBfZm9yd2FyZGVyX2Jsb2Nrcyk6IFJlbW92ZWQuCgkoY2xlYW51cF9jb250cm9sX2Zsb3dfYmIsIHNwbGl0X2Jic19vbl9ub3JldHVybl9jYWxscywKCWNsZWFudXBfdHJlZV9jZmdfYmIpOiBOZXcgZnVuY3Rpb25zLgoJKHJlbW92ZV9mb3J3YXJkZXJfYmxvY2spOiBEbyBub3QgbWFpbnRhaW4gdGhlIHdvcmtsaXN0IG9mIGJsb2Nrcy4KCVJlY29yZCBhbHRlcmVkIGJsb2Nrcy4KCShjbGVhbnVwX3RyZWVfY2ZnXzEpOiBJdGVyYXRlIG92ZXIgY2ZnY2xlYW51cF9hbHRlcmVkX2JicywKCW5vdCBvdmVyIHdob2xlIGNmZy4KCShjbGVhbnVwX3RyZWVfY2ZnKTogRG8gbm90IGl0ZXJhdGUgY2xlYW51cF90cmVlX2NmZ18xLiAgT25seSBjYWxsCglkZWxldGVfdW5yZWFjaGFibGVfYmxvY2tzIGlmIGRvbWluYXRvcnMgYXJlIG5vdCBhdmFpbGFibGUuCgkqIHRyZWUtaW5saW5lLmMgKG9wdGltaXplX2lubGluZV9jYWxscyk6IEZyZWUgZG9taW5hbmNlIGluZm9ybWF0aW9uCgllYXJsaWVyLgoJKiB0cmVlLWZsb3cuaCAocmVtb3ZlX2VkZ2VfYW5kX2RvbWluYXRlZF9ibG9ja3MsCgljZmdjbGVhbnVwX2FsdGVyZWRfYmJzKTogQWx0ZXJlZC4KCSogdHJlZS1jZmcuYyAocmVwbGFjZV91c2VzX2J5LCB0cmVlX21lcmdlX2Jsb2Nrcyk6IFJlY29yZCBhbHRlcmVkCglibG9ja3MuCgkoZ2V0X2FsbF9kb21pbmF0ZWRfYmxvY2tzLCByZW1vdmVfZWRnZV9hbmRfZG9taW5hdGVkX2Jsb2Nrcyk6IE5ldwoJZnVuY3Rpb25zLgoJKHRyZWVfcHVyZ2VfZGVhZF9laF9lZGdlcyk6IFVzZSByZW1vdmVfZWRnZV9hbmRfZG9taW5hdGVkX2Jsb2NrcywKCWRvIG5vdCBpbnZhbGlkYXRlIGRvbWluYXRvcnMuCgoyMDA3LTA0LTI2ICBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbWN1X3R5cGVzKTogQWRkIHN1cHBvcnQgZm9yIEFUbWVnYThIVkEgYW5kCglBVG1lZ2ExNkhWQSBkZXZpY2VzLiBNb3ZlIEFUOTBVU0I4MiBkZXZpY2UgdG8gJ2F2cjUnIGFyY2hpdGVjdHVyZS4KCSogY29uZmlnL2F2ci9hdnIuaCAoTElOS19TUEVDLCBDUlRfQklOVVRJTFNfU1BFQ1MpOiAoRGl0dG8uKS4KCSogY29uZmlnL2F2ci90LWF2ciAoTVVMVElMSUJfTUFUQ0hFUyk6IChEaXR0by4pLgoKMjAwNy0wNC0yNiAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChpcF92YWx1ZSk6IEZpeCBpdGFuaXVtX2NsYXNzIGF0dHJpYnV0ZS4KCjIwMDctMDQtMjYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTcwMwoJKiB0cmVlLXNzYS1sb29wLWltLmMgKHJld3JpdGVfYml0dGVzdCk6IE1ha2Ugc3VyZSB0byB1c2UKCXRoZSByaWdodCB0eXBlIGZvciB0aGUgdGFyZ2V0IG9mIHRoZSBiaXR0ZXN0LgoKMjAwNy0wNC0yNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni92eC1jb21tb24uaCAoUkVUVVJOX0lOX01FTU9SWSk6IFVzZQoJaXg4Nl9zb2wxMF9yZXR1cm5faW5fbWVtb3J5LgoKMjAwNy0wNC0yNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfc29sMTBfcmV0dXJuX2luX21lbW9yeSk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcy4KCjIwMDctMDQtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMTU5OAoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfcik6IERvbid0IHRvdWNoIFRSRUVfVFlQRSBvZiBPTVBfQ0xBVVNFLgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMwNTU4CgkqIHRyZWUtZWguYyAobG93ZXJfZWhfZmlsdGVyKTogSWYgRUhfRklMVEVSX01VU1RfTk9UX1RIUk9XCgljbGVhciB0aGlzX3N0YXRlLnByZXZfdHJ5LgoKMjAwNy0wNC0yNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfc29sMTBfcmV0dXJuX2luX21lbW9yeSk6IERlY2xhcmUuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9zb2wxMF9yZXR1cm5faW5fbWVtb3J5KTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvaTM4Ni9zb2wyLTEwLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBVc2UgaXQuCgoyMDA3LTA0LTI2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkcml2ZXIvMzExMDcKCSogZG9jL2ludm9rZS50ZXhpICglOnByaW50LWFzbS1oZWFkZXIpOiBEb2N1bWVudC4KCSogZ2NjLmMgKGFzbV9vcHRpb25zKTogVXNlICU6cHJpbnQtYXNtLWhlYWRlcigpIGZvciAtLXRhcmdldC1oZWxwCglhbmQgLWZ0YXJnZXQtaGVscC4KCShzdGF0aWNfc3BlY19mdW5jdGlvbnMpOiBBZGQgcHJpbnQtYXNtLWhlYWRlci4KCShtYWluKTogUHJpbnQgYSBiYW5uZXIgYmVmb3JlIHRoZSAtLXRhcmdldC1oZWxwIGxpbmtlciBvcHRpb25zLgoJKHByaW50X2FzbV9oZWFkZXJfc3BlY19mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCjIwMDctMDQtMjUgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8zMTQwMwoJKiBjb25maWcvc2gvc2gubWQgKG1vdnNpX2llKTogRml4IGxlbmd0aCBmb3IgVEFSR0VUX1NIMkEuCgkobW92c2ZfaWUpOiBMaWtld2lzZS4KCjIwMDctMDQtMjUgIFBhb2xvIENhcmxpbmkgIDxwY2FybGluaUBzdXNlLmRlPgoKCSogZG9jL2V4dGVuZC50ZXhpIChbVHlwZSBUcmFpdHNdKTogQWRqdXN0IHBlciBOMjI1NS4KCjIwMDctMDQtMjUgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2xpYjFmdW5jcy5hc20gKF9fdWRpdnNpMywgX19kaXZzaTMpOiBUaHJvdyBhbgoJZXhjZXB0aW9uIGZvciBkaXZpZGUtYnktemVyby4KCShfX3Vtb2RzaTMsIF9fbW9kc2kzKTogTGlrZXdpc2UuCgoyMDA3LTA0LTI1ICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCSogYy10eXBlY2suYyAoYnVpbGRfY29tcG91bmRfZXhwcik6IEFubm90YXRlIHdhcm5pbmcoKQoJY2FsbCB3aXRoIE9QVF9XdW51c2VkX3ZhbHVlLgoJKiB0cmVlLXNzYS5jICh3YXJuX3VuaW5pdCk6IEFubm90YXRlIHdhcm5pbmcgd2l0aAoJT1BUX1d1bmludGlhbGl6ZWQuCgkqIGMtY29tbW9uLmMgKGhhbmRsZV9zZW50aW5lbF9hdHRyaWJ1dGUpOiBBbm5vdGF0ZSB3YXJuaW5nCgljYWxsIHdpdGggT1BUX1dhdHRyaWJ1dGVzLgoKMjAwNy0wNC0yNSAgVGhpZW1vIFNldWZlciAgPHRoc0BtaXBzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMub3B0IChtZG14LCBtbXQsIG1uby1tZG14KTogTmV3IG9wdGlvbnMuCgkobWlwczE2KTogRml4IHR5cG8uCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVNNX1NQRUMpOiBQYXNzIC1tbXQvLW1uby1tdCBhbmQgLW1kbXgvLW1uby1tZG14CglvbiB0byB0aGUgYXNzZW1ibGVyLiAgSW1wcm92ZSBoYW5kbGluZyBvZiAtbW5vLW1pcHMxNi4gIEFkZCBoYW5kbGluZwoJb2YgLW1uby1taXBzM2QsIC1tbm8tZHNwLCAtbW5vLWRzcHIyLgoJKiBkb2MvaW52b2tlLnRleGkgKE1JUFMgT3B0aW9ucyk6IFdoaXRlc3BhY2UgY2xlYW51cC4gIEZpeCB3cm9uZyB1c2UKCW9mIEBpdGVteC4gIERvY3VtZW50IC1tbm8tZHNwLCAtbW5vLWRzcHIyLCAtbW5vLXBhaXJlZC1zaW5nbGUsIC1tZG14LAoJLW1uby1tZG14LCAtbW5vLW1pcHMzZCwgLW1tdCBhbmQgLW1uby1tdC4KCjIwMDctMDQtMjUgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aC51c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgdGFyZ2V0LzMxNjgwCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGkzODZfcGVfZmlsZV9lbmQpOiBTdHJpcCBvbmx5CglVU0VSX0xBQkVMX1BSRUZJWCB3aGVuIHdyaXRpbmcgZXhwb3J0IG5hbWUuCgoyMDA3LTA0LTI1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHNoLXdycy12eHdvcmtzKTogRG9uJ3QgaW5jbHVkZSBkYnhlbGYuaC4gIEluY2x1ZGUKCXNoL2VsZi5oLCB2eC1jb21tb24uaCBhbmQgdnh3b3Jrcy5oLgoJKiBjb25maWcvc2gvc2guaDogSW5jbHVkZSBjb25maWcvdnh3b3Jrcy1kdW1teS5oLgoJKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogRGVmaW5lLgoJKE9WRVJSSURFX09QVElPTlMpOiBVc2UgaXQuCgkqIGNvbmZpZy9zaC9zaC5tZCAoR09UYWRkcjJwaWNyZWcpOiBBZGQgc3Vwb3J0IGZvciBWeFdvcmtzIFJUUHMuCgkodnh3b3Jrc19waWNyZWcpOiBOZXcgcGF0dGVybi4KCSogY29uZmlnL3NoL3Z4d29ya3MuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFVzZQoJVlhXT1JLU19PU19DUFBfQlVJTFRJTlMuCgkoTElCX1NQRUMsIExJTktfU1BFQywgU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IFJlZGVmaW5lCgl0byB0aGVpciBWWFdPUktTXyogZXF1aXZhbGVudHMuCgkoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMsIFNVQlRBUkdFVF9DUFBfU1BFQyk6IERlZmluZS4KCShTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCwgRlVOQ1RJT05fUFJPRklMRVIpOiBEZWZpbmUuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChOT19GUFNDUl9WQUxVRVMpOiBEZWZpbmUgZm9yIFZ4V29ya3MgUElDLgoJKHNldF9mcHNjciwgaWNfaW52YWxpZGF0ZSk6IEFkZCBWeFdvcmtzIFBJQyBzZXF1ZW5jZXMuCgkqIGNvbmZpZy9zaC90LXZ4d29ya3MgKE1VTFRJTElCX09QVElPTlMpOiBBZGQgbTRhLCAtbXJ0cCBhbmQKCS1tcnRwLy1mUElDIG11bHRpbGlicy4KCShNVUxUSUxJQl9FWENFUFRJT05TKTogR2VuZXJhbGl6ZSBnbG9icyBhY2NvcmRpbmdseS4KCShNVUxUSUxJQl9NQVRDSEVTLCBFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IERlZmluZS4KCShNVUxUSUxJQl9PU0RJUk5BTUVTKTogRGVsZXRlLgoKMjAwNy0wNC0yNSAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCVBSIHRhcmdldC8xODk4OQogCSogY29uZmlnL2F2ci9hdnIuaCAoQVNNX09VVFBVVF9BTElHTik6IFJlZGVmaW5lLgoKMjAwNy0wNC0yNCAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiByZWFsLmMgKG1wZnJfZnJvbV9yZWFsKTogSGFuZGxlIEluZiBhbmQgTmFOLCBhbmQgYWxsb3cgdGhlCglyb3VuZGluZyBtb2RlIHRvIGJlIHNwZWNpZmllZCBieSB0aGUgY2FsbGVyLgoJKHJlYWxfdG9fbXBmcikgTGlrZXdpc2UuCgkqIHJlYWwuaDogVXBkYXRlIG1wZnJfZnJvbV9yZWFsLCBtcGZyX3RvX3JlYWwgcHJvdG90eXBlcyB0bwoJaW5jbHVkZSBuZXcgYXJndW1lbnRzLgoJKiBidWlsdGlucy5jOiBVcGRhdGUgbXBmcl9mcm9tX3JlYWwsIG1wZnJfdG9fcmVhbCBjYWxscy4KCjIwMDctMDQtMjQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE2MDUKCSogdHJlZS12cnAuYyAoc2V0X3ZhbHVlX3JhbmdlKTogQ2hlY2sgdGhhdCBtaW4gYW5kIG1heCBhcmUgbm90Cglib3RoIG92ZXJmbG93IGluZmluaXRpZXMuCgkoc2V0X3ZhbHVlX3JhbmdlX3RvX3ZhbHVlKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShleHRyYWN0X3JhbmdlX2Zyb21fYmluYXJ5X2V4cHIpOiBDYWxsIHNldF92YWx1ZV9yYW5nZV90b192YWx1ZS4KCShleHRyYWN0X3JhbmdlX2Zyb21fY29uZF9leHByKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2V4cHIpOiBMaWtld2lzZS4KCShleHRyYWN0X3JhbmdlX2Zyb21fdW5hcnlfZXhwcik6IExpa2V3aXNlLiAgRG9uJ3QgY3JlYXRlIGEgcmFuZ2UKCXdoaWNoIG92ZXJmbG93cyBvbiBib3RoIHNpZGVzLgoJKHZycF9tZWV0KTogQ2hlY2sgZm9yIGEgdXNlbGVzcyByYW5nZS4KCSh2cnBfdmlzaXRfcGhpX25vZGUpOiBJZiB3ZSBzZWUgYSBjb25zdGFudCB3aGljaCBsb29rcyBsaWtlIGFuCglvdmVyZmxvdyBpbmZpbml0eSwgdHVybiBvZmYgdGhlIFRSRUVfT1ZFUkZMT1cgZmxhZy4KCjIwMDctMDQtMjQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBmbG93LmMgKGVsaW1fcmVnX2NvbmQpOiBIYW5kbGUgYSBjb21wYXJpc29uIG9mIGEgc3VicmVnLgoKMjAwNy0wNC0yNCAgU2ltb24gTWFydGluICA8c2ltYXJ0aW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGRpYWdub3N0aWMvMjU5MjMKCSogdHJlZS1wYXNzLmggKFRERl9ESUFHTk9TVElDKTogTmV3IGR1bXAgY29udHJvbCB0byBzcGVjaWZ5IHRoYXQgYQoJZGlhZ25vc3RpYyBtZXNzYWdlIGlzIGJlaW5nIGJ1aWx0LgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IE9ubHkgd3JpdGUgdGhlCglmb3JtYXR0ZWQgdGV4dCBpbnRvIEJVRkZFUidzIHN0cmVhbSBpZiB3ZSBhcmUgbm90IGJ1aWxkaW5nIGEKCWRpYWdub3N0aWMgbWVzc2FnZS4KCSogdG9wbGV2LmMgKGRlZmF1bHRfdHJlZV9wcmludGVyKTogUGFzcyBUREZfRElBR05PU1RJQyB0bwoJZHVtcF9nZW5lcmljX25vZGUuCgkqIE1ha2VmaWxlLmluICh0b3BsZXYubyk6IERlcGVuZCBvbiB0cmVlLXBhc3MuaC4KCjIwMDctMDQtMjQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE2MDIKCSogdHJlZS1zc2EtbG9vcC1jaC5jIChjb3B5X2xvb3BfaGVhZGVycyk6IFNldCBUUkVFX05PX1dBUk5JTkcgZm9yCgljb25kaXRpb25hbHMgaW4gdGhlIGNvcGllZCBsb29wIGhlYWRlci4KCSogdHJlZS1jZmcuYyAoZm9sZF9jb25kX2V4cHJfY29uZCk6IERvbid0IGlzc3VlIHVuZGVmaW5lZCBvdmVyZmxvdwoJd2FybmluZ3MgaWYgVFJFRV9OT19XQVJOSU5HIGlzIHNldC4KCSogZG9jL2ludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBDbGFyaWZ5IHRoYXQKCS1Xc3RyaWN0LW92ZXJmbG93IGRvZXMgbm90IHdhcm4gYWJvdXQgbG9vcHMuCgoyMDA3LTA0LTI0ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogRm9yIDMyLWJpdCBFTEYgQUJJLAoJZXhwYW5kIG9uIHRoZSBjb21tZW50IGFib3V0IF9EZWNpbWFsMTI4IGFyZ3VtZW50cyBhbmQgY2hlY2sgdGhlCglpbnRlZ2VyIHJlc3VsdCBvZiB0aGUgbW9kdWx1cyBvcGVyYXRpb247IGZvciA2NC1iaXQgRUxGIEFCSSwgZW5zdXJlCgl0aGF0IF9EZWNpbWFsMTI4IGFyZ3VtZW50IHVzZXMgZXZlbi9vZGQgcmVnaXN0ZXIgcGFpci4KCShmdW5jdGlvbl9hcmcpOiBEaXR0by4KCjIwMDctMDQtMjQgIEh1aS1NYXkgQ2hhbmcgPGhtLmNoYW5nQGFwcGxlLmNvbT4KCgkqIHJlbG9hZDEuYyAobWVyZ2VfYXNzaWduZWRfcmVsb2FkcykgOiBEbyBub3QgbWVyZ2UgYSBSRUxPQURfT1RIRVIKCWluc3RydWN0aW9uIHdpdGggYSBSRUxPQURfRk9SX09QRVJBTkRfQUREUkVTUyBpbnN0cnVjdGlvbi4KCjIwMDctMDQtMjQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCSAgICBPbGdhIEdvbG92YW5ldnNreSAgPG9sZ2FAaWwuaWJtLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobXVsdGlwbGVfb2ZfcCk6IENoZWNrIGZvciBib3R0b20KCXRvIGJlIHplcm8uCgoyMDA3LTA0LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogbGliZ2NjMi5oIChBVk9JRF9GUF9UWVBFX0NPTlZFUlNJT04pOiBSZW5hbWUgZnJvbQoJSVNfSUJNX0VYVEVOREVELiAgQWxzbyBkZWZpbmUgaW4gdGVybXMgb2YgV0lERVNUX0hBUkRXQVJFX0ZQX1NJWkUuCgkqIGxpYmdjYzIuYyAoX19mbG9hdGRpc2YpOiBBdm9pZCBkb3VibGUtd29yZCBhcml0aG1ldGljIHdoZW4KCWxvb2tpbmcgZm9yIG5vbi16ZXJvIGJpdHMgc2hpZnRlZCBvdXQuICBBdm9pZCBhIHJlY3Vyc2l2ZSBjYWxsCgl3aGVuIGNvbnN0cnVjdGluZyB0aGUgc2NhbGFyLgoJKF9fZmxvYXR1bmRpc2YpOiBMaWtld2lzZS4KCjIwMDctMDQtMjQgIE5hdGhhbiBGcm95ZCAgPGZyb3lkbmpAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR3YXJmMm91dC5jIChmaWVsZF9ieXRlX29mZnNldCk6IE1vdmUgdGhlIGV4aXN0aW5nIGxvZ2ljCgl1bmRlciB0aGUgY29udHJvbCBvZiBQQ0NfQklURklFTERfVFlQRV9NQVRURVJTIGFuZCBqdXN0IHVzZQoJdGhlIGJpdCBvZmZzZXQgb2YgdGhlIGZpZWxkIGlmICFQQ0NfQklURklFTERfVFlQRV9NQVRURVJTLgoKMjAwNy0wNC0yNCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMzE2NDEKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2V4cGFuZF9zZXRtZW0pOiBEb24ndCBJQ0UgZm9yIGNvbnN0YW50CglsZW5ndGggYXJndW1lbnQgb2YgMCBmb3IgbWVtc2V0LgoJKHMzOTBfZXhwYW5kX21vdm1lbSwgczM5MF9leHBhbmRfc2V0bWVtLCBzMzkwX2V4cGFuZF9jbXBtZW0pOiBVc2UKCXVuc2lnbmVkIHNoaWZ0IGluc3RlYWQgb2YgdGhlIHNpZ25lZCB2YXJpYW50LgoKMjAwNy0wNC0yNCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqY21wPG1vZGU+X2Njc18wX2libSIsICIqY21wPG1vZGU+X2Njc19pYm0iLAoJImZpeF90cnVuYzxCRlA6bW9kZT48R1BSOm1vZGU+Ml9pZWVlIiwgImZpeF90cnVuY2Rmc2kyX2libSIsCgkiZmxvYXRzaWRmMl9pYm0iLCAiZmxvYXRzaXNmMiIsICJ0cnVuY2Rmc2YyX2llZWUiLCAidHJ1bmNkZnNmMl9pYm0iLAoJIip0cnVuY3RmZGYyX2llZWUiLCAiKnRydW5jdGZkZjJfaWJtIiwgIip0cnVuY3Rmc2YyX2llZWUiLAoJIip0cnVuY3Rmc2YyX2libSIsICJleHRlbmRzZmRmMl9pZWVlIiwgImV4dGVuZHNmZGYyX2libSIsCgkiKmV4dGVuZGRmdGYyX2llZWUiLCAiKmV4dGVuZGRmdGYyX2libSIsICIqZXh0ZW5kc2Z0ZjJfaWVlZSIsCgkiKmV4dGVuZHNmdGYyX2libSIsICIqYWRkPG1vZGU+MyIsICIqYWRkPG1vZGU+M19pYm0iLCAiKnN1Yjxtb2RlPjNfaWJtIiwKCSIqbXVsPG1vZGU+MyIsICIqbXVsPG1vZGU+M19pYm0iLCAiKmRpdjxtb2RlPjMiLCAiKmRpdjxtb2RlPjNfaWJtIiwKCSIqbmVnPG1vZGU+Ml9pYm0iLCAiKmFiczxtb2RlPjJfaWJtIik6IEluc24gZGVmaW5pdGlvbnMgcmVtb3ZlZC4KCSgiZml4X3RydW5jPEJGUDptb2RlPjxHUFI6bW9kZT4yX2JmcCIsICJmbG9hdHNpPG1vZGU+MiIsCgkidHJ1bmNkZnNmMiIsICJ0cnVuY3RmPG1vZGU+MiIsICJhZGQ8bW9kZT4zIiwgInN1Yjxtb2RlPjMiLAoJIm11bDxtb2RlPjMiLCAiZGl2PG1vZGU+MyIpOiBJbnNuIGRlZmluaXRpb25zIGFkZGVkLgoJKCJmaXh1bnNfdHJ1bmM8QkZQOm1vZGU+PEdQUjptb2RlPjIiLCAiZml4X3RydW5jPG1vZGU+ZGkyIiwKCSJmaXhfdHJ1bmM8bW9kZT5zaTIiKTogZ2VuX2ZpeF90cnVuYzxCRlA6bW9kZT48R1BSOm1vZGU+Ml9pZWVlIHJlbmFtZWQKCXRvIGdlbl9maXhfdHJ1bmM8QkZQOm1vZGU+PEdQUjptb2RlPjJfYmZwLgoJKCJmaXhfdHJ1bmNkZnNpMiIsICJmbG9hdHNpdGYyIiwgInRydW5jZGZzZjIiLCAidHJ1bmN0ZmRmMiIsCgkidHJ1bmN0ZnNmMiIsICJleHRlbmRzZmRmMiIsICJleHRlbmRkZnRmMiIsICJleHRlbmRzZnRmMiIsICJhZGQ8bW9kZT4zIiwKCSJzdWI8bW9kZT4zIiwgIm11bDxtb2RlPjMiLCAiZGl2PG1vZGU+MyIpOiBFeHBhbmRlciByZW1vdmVkLgoJKCJmaXhfdHJ1bmM8bW9kZT5zaTIiLCAiZXh0ZW5kPERTRjptb2RlPjxCRlA6bW9kZT4yIik6IEV4cGFuZGVyIGFkZGVkLgoJKiBjb25maWcvczM5MC9zMzkwLmggKFRBUkdFVF9JQk1fRkxPQVQsIFRBUkdFVF9JRUVFX0ZMT0FULAoJVEFSR0VUX0ZMT0FUX0ZPUk1BVCk6IE1hY3JvIGRlZmluaXRpb25zIHJlbW92ZWQuCgkoRlBfUkVHTk9fUCk6IE5vIHNwZWNpYWwgY2FzZSBmb3IgIVRBUkdFVF9JRUVFX0ZMT0FUIGFueW1vcmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoc3RydWN0IHByb2Nlc3Nvcl9jb3N0cywgejkwMF9jb3N0LCB6OTkwX2Nvc3QsCgl6OV8xMDlfY29zdCk6IFJlbW92ZSBmaWVsZHMgZm9yIGhleGZsb2F0IGluc3RydWN0aW9uczogZHhyLCBkZHIgYW5kIGRlci4KCShzMzkwX3J0eF9jb3N0cyk6IFJlbW92ZSAhVEFSR0VUX0lFRUVfRkxPQVQgc3BlY2lhbCBicmFuY2hlcy4KCShzMzkwX2dlbl9ydHhfY29uc3RfREkpOiBGdW5jdGlvbiByZW1vdmVkLgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2dlbl9ydHhfY29uc3RfREkpOiBQcm90b3R5cGUgcmVtb3ZlZC4KCjIwMDctMDQtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0YWJzLmMgKHNldF9jb252X2xpYmZ1bmMpOiBQcmVmZXIgbGliZ2NjMidzIF9fZmZzTU0yIGZ1bmN0aW9ucwoJb3ZlciBhbiBleHRlcm5hbCBmZnMgZnVuY3Rpb24uCgoyMDA3LTA0LTI0ICBDaGFvLXlpbmcgRnUgIDxmdUBtaXBzLmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAbmlsZHJhbS5jby51az4KCgkqIGRvYy9tZC50ZXhpIChtYWRkQHZhcnttfUB2YXJ7bn00LCB1bWFkZEB2YXJ7bX1AdmFye259NCk6IERvY3VtZW50LgoJKiBvcHRhYnMuaCAoT1RJX3NtYWRkX3dpZGVuLCBPVElfdW1hZGRfd2lkZW4pOiBOZXcgb3B0YWJfaW5kZXhlcy4KCShzbWFkZF93aWRlbl9vcHRhYiwgdW1hZGRfd2lkZW5fb3B0YWIpOiBEZWZpbmUuCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgc21hZGRfd2lkZW5fb3B0YWIgYW5kCgl1bWFkZF93aWRlbl9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEZpbGwgaW4gc21hZGRfd2lkZW5fb3B0YWIgYW5kCgl1bWFkZF93aWRlbl9vcHRhYi4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBUcnkgdG8gdXNlIHNtYWRkX3dpZGVuX29wdGFiCglhbmQgdW1hZGRfd2lkZW5fb3B0YWIgdG8gaW1wbGVtZW50IG11bHRpcGx5LWFkZCBzZXF1ZW5jZXMuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCo8c3U+bXVsX2FjY19kaSk6IFJlbmFtZSB0by4uLgoJKDx1Pm1hZGRzaWRpNCk6IC4uLnRoaXMuICBFeHRlbmQgY29uZGl0aW9uIHRvIGluY2x1ZGUKCUdFTkVSQVRFX01BRERfTVNVQiBhbmQgVEFSR0VUX0RTUFIyLiAgQ2hhbmdlIHRoZSBjb25zdHJhaW50CglvZiBvcGVyYW5kIDAgdG8gImthIiBhbmQgdXNlIHRoZSB0aHJlZS1vcGVyYW5kIGZvcm0gb2YgbWFkZDx1PgoJZm9yIFRBUkdFVF9EU1BSMi4KCSogY29uZmlnL21pcHMvbWlwcy1kc3ByMi5tZCAobWlwc19tYWRkLCBtaXBzX21hZGR1KTogQ29udmVydAoJdG8gZGVmaW5lX2V4cGFuZHMuCgkqIGNvbmZpZy9taXBzL2NvbnN0cmFpbnRzLm1kIChrYSk6IE5ldyByZWdpc3RlciBjb25zdHJhaW50LgoKMjAwNy0wNC0yNCAgSmFuIEh1Ymlja2EgIDxqQHN1c2UuY3o+CgoJUmV2ZXJ0OgoKCTIwMDctMDQtMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSogZnVuY3Rpb24uYyAoaW5pdF9mdW5jdGlvbl9zdGFydCk6IERvbid0IGluaXQgbGluZSBudW1iZXIgaW5mby4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogVXBkYXRlLgoJKHJlc2V0X2Jsb2NrX2NoYW5nZXMsIHJlY29yZF9ibG9ja19jaGFuZ2UsIGZpbmFsaXplX2Jsb2NrX2NoYW5nZXMsCgljaGVja19ibG9ja19jaGFuZ2UsIGZyZWVfYmxvY2tfY2hhbmdlcyk6IEtpbGwuCgkqIGZ1bmN0aW9uLmggKHJlc2V0X2Jsb2NrX2NoYW5nZXMsIHJlY29yZF9ibG9ja19jaGFuZ2UsCglmaW5hbGl6ZV9ibG9ja19jaGFuZ2VzLCBjaGVja19ibG9ja19jaGFuZ2UsIGZyZWVfYmxvY2tfY2hhbmdlcyk6CglSZW1vdmUgcHJvdG90eXBlcy4KCShzdHJ1Y3QgZnVuY3Rpb24pOiBSZW1vdmUgaWJfYm91bmRhcmllc19ibG9jay4KCSogZW1pdC1ydGwuYyAobWFrZV9pbnNuX3JhdywgbWFrZV9qdW1wX2luc25fcmF3LCBtYWtlX2NhbGxfaW5zbl9yYXcpOgoJVXNlIGN1cnJfaW5zbl9sb2NhdG9yIHRvIGluaXRpYWxpemUgbG9jYXRvci4KCShlbWl0X2xpbmVfbm90ZSk6IFJlbW92ZS4KCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfY29uZF9leHByKTogVXBkYXRlLgoJKGNvbnN0cnVjdF9leGl0X2Jsb2NrKTogTGlrZXdpc2UuCgkodHJlZV9leHBhbmRfY2ZnKTogSW5pdGlhbGl6ZS9maW5hbGl6ZSBsb2NhdG9ycy4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsKTogVXBkYXRlLgoJKiBjZmdsYXlvdXQuYyAobGluZV9sb2NhdG9yc19sb2NzLCBsaW5lX2xvY2F0b3JzX2xpbmVzLAoJZmlsZV9sb2NhdG9yc19sb2NzLCBmaWxlX2xvY2F0b3JzX2ZpbGVzKTogUmVtb3ZlLgoJKHNldF9ibG9ja19sZXZlbHMpOiBNb3ZlIHRvIGNmZ2V4cGFuZC5jLgoJKGluc25fbG9jYXRvcnNfaW5pdGlhbGl6ZSk6IFJlbW92ZS4KCShwYXNzX2luc25fbG9jYXRvcnNfaW5pdGlhbGl6ZSk6IFJlbW92ZS4KCShsb2NhdGlvbnNfbG9jYXRvcnNfbG9jcywgbG9jYXRpb25zX2xvY2F0b3JzX3ZhbHMpOiBOZXcgc3RhdGljIHZhcnMuCgkoY3Vycl9sb2NhdGlvbiwgbGFzdF9sb2NhdGlvbiwgY3Vycl9ibG9jaywgbGFzdF9ibG9jaywgY3Vycl9ydGxfbG9jKToKCUxpa2V3aXNlLgoJKGluc25fbG9jYXRvcnNfYWxsb2MsIGluc25fbG9jYXRvcnNfZmluYWxpemUsCglzZXRfY3Vycl9pbnNuX3NvdXJjZV9sb2NhdGlvbiwgc2V0X2N1cnJfaW5zbl9ibG9jaywgY3Vycl9pbnNuX2xvY2F0b3IpOgoJTmV3IGZ1bmN0aW9ucy4KCShsb2NhdG9yX2xvY2F0aW9uKTogTmV3LgoJKGxvY2F0b3JfbGluZSwgbG9jYXRvcl9maWxlKTogUmV3cml0ZS4KCSogcnRsLmggKGVtaXRfbGluZV9ub3RlKTogS2lsbC4KCShpbnNuX2xvY2F0b3JzX2FsbG9jLCBpbnNuX2xvY2F0b3JzX2ZpbmFsaXplLAoJc2V0X2N1cnJfaW5zbl9zb3VyY2VfbG9jYXRpb24sIHNldF9jdXJyX2luc25fYmxvY2ssIGN1cnJfaW5zbl9sb2NhdG9yKToKCURlY2xhcmUuCgkqIHRyZWUtaW5saW5lLmMgKGluaXRpYWxpemVfY2Z1bik6IERvIG5vdCBpbml0aWFsaXplCglpYl9ib3VuZGFyaWVzX2Jsb2NrLgoJKiBwYXNzZXMuYyAocGFzc19pbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBSZW1vdmUuCgoyMDA3LTA0LTI0ICBEYW5pZWwgRnJhbmtlICA8ZnJhbmtlLmRhbmllbEBnbWFpbC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZWQgbGVhZGluZyAnLScgZnJvbSBvcHRpb24gaW5kZXggZW50cmllcy4KCjIwMDctMDQtMjMgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXBoaW5vZGVzLmMgKHJlc2VydmVfcGhpX2FyZ3NfZm9yX25ld19lZGdlLCByZW1vdmVfcGhpX25vZGUpOgoJVXNlIHBoaV9ub2Rlc19wdHIuCgkoY3JlYXRlX3BoaV9ub2RlKTogVXNlIHNldF9waGlfbm9kZXMuCgkqIG9tcC1sb3cuYyAoZXhwYW5kX29tcF9wYXJhbGxlbCk6IFVzZSBiYl9zdG10X2xpc3QuCgkqIHRyZWUtaWYtY29udi5jIChwcm9jZXNzX3BoaV9ub2Rlcyk6IFVzZSBzZXRfcGhpX25vZGVzLgoJKGNvbWJpbmVfYmxvY2tzKTogVXNlIGJiX3N0bXRfbGlzdCBhbmQgc2V0X2JiX3N0bXRfbGlzdC4KCSogdHJlZS1mbG93LWlubGluZS5oIChwaGlfbm9kZXMsIHNldF9waGlfbm9kZXMsCgkoYnNpX3N0YXJ0LCBic2lfbGFzdCk6IFVzZSBiYl9zdG10X2xpc3QuCgkocGhpX25vZGVzX3B0ciwgYmJfc3RtdF9saXN0LCBzZXRfYmJfc3RtdF9saXN0KTogTmV3IGZ1bmN0aW9ucy4KCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfYmFzaWNfYmxvY2spOiBVc2UgYmJfc3RtdF9saXN0LgoJVHJhdmVyc2UgdGhlIHN0YXRlbWVudHMgdXNpbmcgdHNpIGl0ZXJhdG9yLgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgYmFzaWNfYmxvY2tfZGVmKTogRmllbGRzIHN0bXRfbGlzdAoJYW5kIHBoaV9ub2RlcyBtb3ZlZCB0byAuLi4KCShzdHJ1Y3QgdHJlZV9iYl9pbmZvKTogLi4uIG5ldyBzdHJ1Y3R1cmUuCgkqIHRyZWUtY2ZnLmMgKGNyZWF0ZV9iYik6IEFsbG9jYXRlIGlsLnRyZWUuICBVc2Ugc2V0X2JiX3N0bXRfbGlzdC4KCSh0cmVlX21lcmdlX2Jsb2Nrcyk6IFVzZSBiYl9zdG10X2xpc3QgYW5kIHNldF9iYl9zdG10X2xpc3QuCgkocmVtb3ZlX2JiKTogSGFuZGxlIGJsb2NrcyB3aXRoIE5VTEwgc3RtdCBsaXN0LiAgQ2xlYXIgaWwudHJlZSBmaWVsZC4KCSh0cmVlX3ZlcmlmeV9mbG93X2luZm8pOiBWZXJpZnkgdGhhdCBpbC50cmVlIGlzIG5vdCBzZXQgZm9yCgllbnRyeSBhbmQgZXhpdCBibG9jay4KCSh0cmVlX3NwbGl0X2Jsb2NrKTogVXNlIHNldF9iYl9zdG10X2xpc3QuCgoyMDA3LTA0LTIzICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl90dW5lX2ZlYXR1cmVzCglbWDg2X1RVTkVfREVFUF9CUkFOQ0hfUFJFRElDVElPTl06IFByZWZlciBjYWxsIG92ZXIgdGh1bmtzIG9uCglub2NvbmEgYW5kIGNvcmUyLgoKMjAwNy0wNC0yMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAocHJlZml4X2V4dHJhKTogTmV3IGF0dHJpYnV0ZS4KCShsZW5ndGgpOiBBZGQgcHJlZml4X2V4dHJhLgoKCSogb25maWcvaTM4Ni9zc2UubWQgKHNzZTJfbW92ZHF1KTogU2V0IHByZWZpeF9kYXRhMTYuCgkoc3NlMl9tb3ZudHYyZGkpOiBMaWtld2lzZS4KCShzc2UyX2N2dHBzMmRxKTogTGlrZXdpc2UuCgkoc3NlMl9jdnRwZDJwaSk6IExpa2V3aXNlLgoJKHNzZTJfY3Z0dHBkMnBpKTogTGlrZXdpc2UuCgkoKnNzZTJfY3Z0cGQycHMpOiBMaWtld2lzZS4KCSgqYWRkPG1vZGU+Myk6IExpa2V3aXNlLgoJKHNzZTJfc3NhZGQ8bW9kZT4zKTogTGlrZXdpc2UuCgkoc3NlMl91c2FkZDxtb2RlPjMpOiBMaWtld2lzZS4KCSgqc3ViPG1vZGU+Myk6IExpa2V3aXNlLgoJKHNzZTJfc3NzdWI8bW9kZT4zKTogTGlrZXdpc2UuCgkoc3NlMl91c3N1Yjxtb2RlPjMpOiBMaWtld2lzZS4KCSgqbXVsdjhoaTMpOiBMaWtld2lzZS4KCSgqc211bHY4aGkzX2hpZ2hwYXJ0KTogTGlrZXdpc2UuCgkoKnVtdWx2OGhpM19oaWdocGFydCk6IExpa2V3aXNlLgoJKHNzZTJfdW11bHYyc2l2MmRpMyk6IExpa2V3aXNlLgoJKHNzZTJfcG1hZGR3ZCk6IExpa2V3aXNlLgoJKGFzaHI8bW9kZT4zKTogTGlrZXdpc2UuCgkobHNocjxtb2RlPjMpOiBMaWtld2lzZS4KCShhc2hsPG1vZGU+Myk6IExpa2V3aXNlLgoJKHNzZTJfYXNobHRpMyk6IExpa2V3aXNlLgoJKHNzZTJfbHNocnRpMyk6IExpa2V3aXNlLgoJKCp1bWF4djE2cWkzKTogTGlrZXdpc2UuCgkoKnNtYXh2OGhpMyk6IExpa2V3aXNlLgoJKCp1bWludjE2cWkzKTogTGlrZXdpc2UuCgkoKnNtaW52OGhpMyk6IExpa2V3aXNlLgoJKHNzZTJfZXE8bW9kZT4zKTogTGlrZXdpc2UuCgkoc3NlMl9ndDxtb2RlPjMpOiBMaWtld2lzZS4KCSgqYW5kPG1vZGU+Myk6IExpa2V3aXNlLgoJKHNzZTJfbmFuZDxtb2RlPjMpOiBMaWtld2lzZS4KCSgqaW9yPG1vZGU+Myk6IExpa2V3aXNlLgoJKCp4b3I8bW9kZT4zKTogTGlrZXdpc2UuCgkoc3NlMl9wYWNrc3N3Yik6IExpa2V3aXNlLgoJKHNzZTJfcGFja3NzZHcpOiBMaWtld2lzZS4KCShzc2UyX3BhY2t1c3diKTogTGlrZXdpc2UuCgkoc3NlMl9wdW5wY2toYncpOiBMaWtld2lzZS4KCShzc2UyX3B1bnBja2xidyk6IExpa2V3aXNlLgoJKHNzZTJfcHVucGNraHdkKTogTGlrZXdpc2UuCgkoc3NlMl9wdW5wY2tsd2QpOiBMaWtld2lzZS4KCShzc2UyX3B1bnBja2hkcSk6IExpa2V3aXNlLgoJKHNzZTJfcHVucGNrbGRxKTogTGlrZXdpc2UuCgkoc3NlMl9wdW5wY2tocWRxKTogTGlrZXdpc2UuCgkoc3NlMl9wdW5wY2tscWRxKTogTGlrZXdpc2UuCgkoKnNzZTJfcGluc3J3KTogTGlrZXdpc2UuCgkoKnNzZTJfcGV4dHJ3KTogTGlrZXdpc2UuCgkoc3NlMl9wc2h1ZmRfMSk6IExpa2V3aXNlLgoJKHNzZTJfdWF2Z3YxNnFpMyk6IExpa2V3aXNlLgoJKHNzZTJfdWF2Z3Y4aGkzKTogTGlrZXdpc2UuCgkoc3NlMl9wc2FkYncpOiBMaWtld2lzZS4KCShzc2UyX3Btb3Ztc2tiKTogTGlrZXdpc2UuCgkoKnNzZTJfbWFza21vdmRxdSk6IExpa2V3aXNlLgoJKCpzc2UyX21hc2ttb3ZkcXVfcmV4NjQpOiBMaWtld2lzZS4KCShzc2U0YV9leHRycWkpOiBMaWtld2lzZS4KCShzc2U0YV9leHRycSk6IExpa2V3aXNlLgoJKHNzZTNfbGRkcXUpOiBTZXQgcHJlZml4X3JlcC4KCShzc2UzX2FkZHN1YnY0c2YzKTogTGlrZXdpc2UuCgkoc3NlM19oYWRkdjRzZjMpOiBMaWtld2lzZS4KCShzc2UzX2hzdWJ2NHNmMyk6IExpa2V3aXNlLgoJKHNzZV9jdnRzczJzaSk6IExpa2V3aXNlLgoJKHNzZV9jdnRzczJzaV8yKTogTGlrZXdpc2UuCgkoc3NlX2N2dHNzMnNpcSk6IExpa2V3aXNlLgoJKHNzZV9jdnRzczJzaXFfMik6IExpa2V3aXNlLgoJKHNzZV9jdnR0c3Myc2kpOiBMaWtld2lzZS4KCShzc2VfY3Z0dHNzMnNpcSk6IExpa2V3aXNlLgoJKHNzZTJfY3Z0dHBzMmRxKTogTGlrZXdpc2UuCgkoc3NlM19tb3ZzaGR1cCk6IExpa2V3aXNlLgoJKHNzZTNfbW92c2xkdXApOiBMaWtld2lzZS4KCShzc2UyX2N2dHNkMnNpKTogTGlrZXdpc2UuCgkoc3NlMl9jdnRzZDJzaV8yKTogTGlrZXdpc2UuCgkoc3NlMl9jdnRzZDJzaXEpOiBMaWtld2lzZS4KCShzc2UyX2N2dHNkMnNpcV8yKTogTGlrZXdpc2UuCgkoc3NlMl9jdnR0c2Qyc2kpOiBMaWtld2lzZS4KCShzc2UyX2N2dHRzZDJzaXEpOiBMaWtld2lzZS4KCSgqc3NlMl9jdnRwZDJkcSk6IExpa2V3aXNlLgoJKCpzc2UyX2N2dHRwZDJkcSk6IExpa2V3aXNlLgoJKHNzZTJfcHNodWZsd18xKTogTGlrZXdpc2UuCgkoc3NlMl9wc2h1Zmh3XzEpOiBMaWtld2lzZS4KCShzc2U0YV9pbnNlcnRxaSk6IExpa2V3aXNlLgoJKHNzZTRhX2luc2VydHEpOiBMaWtld2lzZS4KCShzc3NlM19waGFkZHd2OGhpMyk6IFNldCBwcmVmaXhfZGF0YTE2IGFuZCBwcmVmaXhfZXh0cmEuCgkoc3NzZTNfcGhhZGRkdjRzaTMpOiBMaWtld2lzZS4KCShzc3NlM19waGFkZHN3djhoaTMpOiBMaWtld2lzZS4KCShzc3NlM19waHN1Ynd2OGhpMyk6IExpa2V3aXNlLgoJKHNzc2UzX3Boc3ViZHY0c2kzKTogTGlrZXdpc2UuCgkoc3NzZTNfcGhzdWJzd3Y4aGkzKTogTGlrZXdpc2UuCgkoc3NzZTNfcG1hZGR1YnN3djhoaTMpOiBMaWtld2lzZS4KCShzc3NlM19wbXVsaHJzd3Y4aGkzKTogTGlrZXdpc2UuCgkoc3NzZTNfcHNodWZidjE2cWkzKTogTGlrZXdpc2UuCgkoc3NzZTNfcHNpZ248bW9kZT4zKTogTGlrZXdpc2UuCgkoc3NzZTNfcGFsaWducnRpKTogTGlrZXdpc2UuCgkoYWJzPG1vZGU+Mik6IExpa2V3aXNlLgoJKHNzc2UzX3BoYWRkd3Y0aGkzKTogU2V0IHByZWZpeF9leHRyYS4KCShzc3NlM19waGFkZGR2MnNpMyk6IExpa2V3aXNlLgoJKHNzc2UzX3BoYWRkc3d2NGhpMyk6IExpa2V3aXNlLgoJKHNzc2UzX3Boc3Vid3Y0aGkzKTogTGlrZXdpc2UuCgkoc3NzZTNfcGhzdWJkdjJzaTMpOiBMaWtld2lzZS4KCShzc3NlM19waHN1YnN3djRoaTMpOiBMaWtld2lzZS4KCShzc3NlM19wbWFkZHVic3d2NGhpMyk6IExpa2V3aXNlLgoJKHNzc2UzX3BtdWxocnN3djRoaTMpOiBMaWtld2lzZS4KCShzc3NlM19wc2h1ZmJ2OHFpMyk6IExpa2V3aXNlLgoJKHNzc2UzX3BzaWduPG1vZGU+Myk6IExpa2V3aXNlLgoJKHNzc2UzX3BhbGlnbnJkaSk6IExpa2V3aXNlLgoJKGFiczxtb2RlPjIpOiBMaWtld2lzZS4KCShzc2UyX2N2dGRxMnBzKTogU2V0IG1vZGUgdG8gVjRTRiBpbnN0ZWFkIG9mIFYyREYuCgkoKnZlY19kdXB2MmRmKTogU2V0IG1vZGUgdG8gVjJERiBpbnN0ZWFkIG9mIFY0U0YuCgkoc3NlMl9wbW92bXNrYik6IFNldCBtb2RlIHRvIFNJIGluc3RlYWQgb2YgVjJERi4KCjIwMDctMDQtMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBwYXJhbXMuZGVmOiBGaXggZm9ybWF0dGluZyBvZiBlbWFjcyBsb2NhbCB2YXJpYWJsZXMuCgoyMDA3LTA0LTIzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHNzZTJfc3RvcmVkKTogRG9uJ3Qgc3BsaXQgdG8gaW50ZXItdW5pdAoJbW92ZSBpZiBpbnRlci11bml0IG1vdmUgaXNuJ3QgYWxsb3dlZC4KCURvbid0IHNwbGl0IG1vdmluZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBWMkRJIHRvIERJIHRvIGludGVyLXVuaXQKCW1vdmUgaWYgaW50ZXItdW5pdCBtb3ZlIGlzbid0IGFsbG93ZWQuCgoyMDA3LTA0LTIzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1zaW5rLmMgKGV4ZWN1dGVfc2lua19jb2RlKTogQ2FsY3VsYXRlIENESV9ET01JTkFUT1JTCglhbmQgQ0RJX1BPU1RfRE9NSU5BVE9SUyBzZXBhcmF0ZWx5LgoKMjAwNy0wNC0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGMub3B0IChXZm9ybWF0LWNvbnRhaW5zLW51bCk6IEFkZCB3YXJuaW5nIGF0dHJpYnV0ZS4KCjIwMDctMDQtMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZ1bmN0aW9uLmMgKGluaXRfZnVuY3Rpb25fc3RhcnQpOiBEb24ndCBpbml0IGxpbmUgbnVtYmVyIGluZm8uCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IFVwZGF0ZS4KCShyZXNldF9ibG9ja19jaGFuZ2VzLCByZWNvcmRfYmxvY2tfY2hhbmdlLCBmaW5hbGl6ZV9ibG9ja19jaGFuZ2VzLAoJY2hlY2tfYmxvY2tfY2hhbmdlLCBmcmVlX2Jsb2NrX2NoYW5nZXMpOiBLaWxsLgoJKiBmdW5jdGlvbi5oIChyZXNldF9ibG9ja19jaGFuZ2VzLCByZWNvcmRfYmxvY2tfY2hhbmdlLAoJZmluYWxpemVfYmxvY2tfY2hhbmdlcywgY2hlY2tfYmxvY2tfY2hhbmdlLCBmcmVlX2Jsb2NrX2NoYW5nZXMpOgoJUmVtb3ZlIHByb3RvdHlwZXMuCgkoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIGliX2JvdW5kYXJpZXNfYmxvY2suCgkqIGVtaXQtcnRsLmMgKG1ha2VfaW5zbl9yYXcsIG1ha2VfanVtcF9pbnNuX3JhdywgbWFrZV9jYWxsX2luc25fcmF3KToKCVVzZSBjdXJyX2luc25fbG9jYXRvciB0byBpbml0aWFsaXplIGxvY2F0b3IuCgkoZW1pdF9saW5lX25vdGUpOiBSZW1vdmUuCgkqIGNmZ2V4cGFuZC5jIChleHBhbmRfZ2ltcGxlX2NvbmRfZXhwcik6IFVwZGF0ZS4KCShjb25zdHJ1Y3RfZXhpdF9ibG9jayk6IExpa2V3aXNlLgoJKHRyZWVfZXhwYW5kX2NmZyk6IEluaXRpYWxpemUvZmluYWxpemUgbG9jYXRvcnMuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbCk6IFVwZGF0ZS4KCSogY2ZnbGF5b3V0LmMgKGxpbmVfbG9jYXRvcnNfbG9jcywgbGluZV9sb2NhdG9yc19saW5lcywKCWZpbGVfbG9jYXRvcnNfbG9jcywgZmlsZV9sb2NhdG9yc19maWxlcyk6IFJlbW92ZS4KCShzZXRfYmxvY2tfbGV2ZWxzKTogTW92ZSB0byBjZmdleHBhbmQuYy4KCShpbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBSZW1vdmUuCgkocGFzc19pbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBSZW1vdmUuCgkobG9jYXRpb25zX2xvY2F0b3JzX2xvY3MsIGxvY2F0aW9uc19sb2NhdG9yc192YWxzKTogTmV3IHN0YXRpYyB2YXJzLgoJKGN1cnJfbG9jYXRpb24sIGxhc3RfbG9jYXRpb24sIGN1cnJfYmxvY2ssIGxhc3RfYmxvY2ssIGN1cnJfcnRsX2xvYyk6CglMaWtld2lzZS4KCShpbnNuX2xvY2F0b3JzX2FsbG9jLCBpbnNuX2xvY2F0b3JzX2ZpbmFsaXplLAoJc2V0X2N1cnJfaW5zbl9zb3VyY2VfbG9jYXRpb24sIHNldF9jdXJyX2luc25fYmxvY2ssIGN1cnJfaW5zbl9sb2NhdG9yKToKCU5ldyBmdW5jdGlvbnMuCgkobG9jYXRvcl9sb2NhdGlvbik6IE5ldy4KCShsb2NhdG9yX2xpbmUsIGxvY2F0b3JfZmlsZSk6IFJld3JpdGUuCgkqIHJ0bC5oIChlbWl0X2xpbmVfbm90ZSk6IEtpbGwuCgkoaW5zbl9sb2NhdG9yc19hbGxvYywgaW5zbl9sb2NhdG9yc19maW5hbGl6ZSwKCXNldF9jdXJyX2luc25fc291cmNlX2xvY2F0aW9uLCBzZXRfY3Vycl9pbnNuX2Jsb2NrLCBjdXJyX2luc25fbG9jYXRvcik6CglEZWNsYXJlLgoJKiB0cmVlLWlubGluZS5jIChpbml0aWFsaXplX2NmdW4pOiBEbyBub3QgaW5pdGlhbGl6ZQoJaWJfYm91bmRhcmllc19ibG9jay4KCSogcGFzc2VzLmMgKHBhc3NfaW5zbl9sb2NhdG9yc19pbml0aWFsaXplKTogUmVtb3ZlLgoKMjAwNy0wNC0yMiAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMTQ0OAoJKiBleHByLmMgKHJlZHVjZV90b19iaXRfZmllbGRfcHJlY2lzaW9uKTogSGFuZGxlCglDT05TVF9JTlQgcnR4J3MuCgoyMDA3LTA0LTIyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI0NjU5CgkqIG9wdGFicy5oIChlbnVtIG9wdGFiX2luZGV4KSBbT1RJX3ZlY191bnBhY2tzX2hpLAoJT1RJX3ZlY191bnBhY2tzX2xvXTogVXBkYXRlIGNvbW1lbnQgdG8gbWVudGlvbiBmbG9hdGluZyBwb2ludCBvcGVyYW5kcy4KCSh2ZWNfcGFja190cnVuY19vcHRhYik6IFJlbmFtZSBmcm9tIHZlY19wYWNrX21vZF9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IFJlbmFtZSB2ZWNfcGFja19tb2Rfb3B0YWIKCXRvIHZlY19wYWNrX3RydW5jX29wdGFiLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV90eXBlX2RlbW90aW9uKTogRG8gbm90IGZhaWwKCWVhcmx5IGZvciBzY2FsYXIgZmxvYXRpbmcgcG9pbnQgb3BlcmFuZHMgZm9yIE5PUF9FWFBSLgoJKHZlY3Rvcml6YWJsZV90eXBlX3Byb21vdGlvbik6IERpdHRvLgoJKiBvcHRhYnMuYyAob3B0YWJfZm9yX3RyZWVfY29kZSkgW1ZFQ19QQUNLX1RSVU5DX0VYUFJdOiBSZXR1cm4KCXZlY19wYWNrX3RydW5jX29wdGFiLgoJKGV4cGFuZF9iaW5vcCk6IFJlbmFtZSB2ZWNfZmxvYXRfdHJ1bmNfb3B0YWIgdG8gdmVjX3BhY2tfbW9kX29wdGFiLgoKCSogdHJlZS5kZWYgKFZFQ19QQUNLX1RSVU5DX0VYUFIpOiBSZW5hbWUgZnJvbSBWRUNfUEFDS19NT0RfRVhQUi4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpIFtWRUNfUEFDS19UUlVOQ19FWFBSXToKCVJlbmFtZSBmcm9tIFZFQ19QQUNLX01PRF9FWFBSLgoJKG9wX3ByaW8pIFtWRUNfUEFDS19UUlVOQ19FWFBSXTogRGl0dG8uCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogRGl0dG8uCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogRGl0dG8uCgkqIHRyZWUtdmVjdC1nZW5lcmljLmMgKGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uc18xKTogRGl0dG8uCgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHZlY191bnBhY2tzX2hpX3Y0c2YpOiBOZXcgZXhwYW5kZXIuCgkodmVjX3VucGFja3NfbG9fdjRzZik6IERpdHRvLgoJKHZlY19wYWNrX3RydW5jX3YyZGYpOiBEaXR0by4KCSh2ZWNfcGFja190cnVuY192OGhpKTogUmVuYW1lIGZyb20gdmVjX3BhY2tfbW9kX3Y4aGkuCgkodmVjX3BhY2tfdHJ1bmNfdjRzaSk6IFJlbmFtZSBmcm9tIHZlY19wYWNrX21vZF92NHNpLgoJKHZlY19wYWNrX3RydW5jX3YyZGkpOiBSZW5hbWUgZnJvbSB2ZWNfcGFja19tb2RfdjJkaS4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAodmVjX3BhY2tfdHJ1bmNfdjhoaSk6IFJlbmFtZSBmcm9tCgl2ZWNfcGFja19tb2RfdjhoaS4KCSh2ZWNfcGFja190cnVuY192NHNpKTogUmVuYW1lIGZyb20gdmVjX3BhY2tfbW9kX3Y0c2kuCgoJKiBkb2MvYy10cmVlLnRleGkgKEV4cHJlc3Npb24gdHJlZXMpIFtWRUNfUEFDS19UUlVOQ19FWFBSXToKCVJlbmFtZSBmcm9tIFZFQ19QQUNLX01PRF9FWFBSLiAgVGhpcyBleHByZXNzaW9uIGFsc28gcmVwcmVzZW50CglwYWNraW5nIG9mIGZsb2F0aW5nIHBvaW50IG9wZXJhbmRzLgoJW1ZFQ19VTlBBQ0tfSElfRVhQUiwgVkVDX1VOUEFDS19MT19FWFBSXTogVGhlc2UgZXhwcmVzc2lvbiBhbHNvCglyZXByZXNlbnQgdW5wYWNraW5nIG9mIGZsb2F0aW5nIHBvaW50IG9wZXJhbmRzLgoJKiBkb2MvbWQudGV4aSAoU3RhbmRhcmQgTmFtZXMpIFt2ZWNfcGFja190cnVuY106IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJW3ZlY191bnBhY2tzX2hpXTogRGl0dG8uCglbdmVjX3VucGFja3NfbG9dOiBEaXR0by4KCjIwMDctMDQtMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZpbmFsLmMgKHJlc3Rfb2ZfaGFuZGxlX2ZpbmFsKTogQ2FsbAoJdGFyZ2V0bS5hc21fb3V0LmNvbnN0cnVjdG9yL3RhcmdldG0uYXNtX291dC5kZXN0cnVjdG9yCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2J1aWxkX3N0YXRpY19jZHRvcik6IERvbid0IGRvIGl0IGhlcmU7IHNldAoJcHJvcGVyIHByaW9yaXR5IHZpYSBkZWNsXypfcHJpb3JpdHlfaW5zZXJ0LgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgoyMDA3LTA0LTIyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjk3ODkKCSogdHJlZS1zc2EtbG9vcC1pbS5jIChzdG10X2Nvc3QpOiBBZGp1c3QgY29zdCBvZiBzaGlmdHMuCgkocmV3cml0ZV9yZWNpcHJvY2FsKTogTmV3IGhlbHBlciBzcGxpdCBvdXQgZnJvbQoJZGV0ZXJtaW5lX2ludmFyaWFudG5lc3Nfc3RtdC4KCShyZXdyaXRlX2JpdHRlc3QpOiBMaWtld2lzZS4KCShkZXRlcm1pbmVfaW52YXJpYW50bmVzc19zdG10KTogUmV3cml0ZSAoQSA+PiBCKSAmIDEgdG8KCUEgJiAoMSA8PCBCKSBpZiAoMSA8PCBCKSBpcyBsb29wIGludmFyaWFudCBidXQgKEEgPj4gQikKCWlzIG5vdC4KCjIwMDctMDQtMjIgIFJldml0YWwgRXJlcyAgPGVyZXNAaWwuaWJtLmNvbT4KCgkqIGxvb3AtdW5yb2xsLmMgKHZhcl90b19leHBhbmQpOiBOZXcgZmllbGQgdG8gc3VwcG9ydCBhbHNvCglpbnNucyBvZiB0aGUgZm9ybSB4ID0gc29tZXRoaW5nICsgeC4KCShhbmFseXplX2luc25fdG9fZXhwYW5kX3Zhcik6IFVzZSBpdC4KCShleHBhbmRfdmFyX2R1cmluZ191bnJvbGxpbmcpOiBMaWtld2lzZS4KCjIwMDctMDQtMjEgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBwcmVkaWN0LmM6IEluY2x1ZGUgcG9pbnRlci1zZXQuaC4KCShiYl9wcmVkaWN0aW9ucyk6IE5ldyB2YXJpYWJsZS4KCSh0cmVlX3ByZWRpY3RlZF9ieV9wLCB0cmVlX3ByZWRpY3RfZWRnZSwKCXJlbW92ZV9wcmVkaWN0aW9uc19hc3NvY2lhdGVkX3dpdGhfZWRnZSk6IFVzZSBiYl9wcmVkaWN0aW9ucyBtYXAKCWluc3RlYWQgb2YgYmItPnByZWRpY3Rpb25zLgoJKGNsZWFyX2JiX3ByZWRpY3Rpb25zLCBhc3NlcnRfaXNfZW1wdHkpOiBOZXcgZnVuY3Rpb25zLgoJKGNvbWJpbmVfcHJlZGljdGlvbnNfZm9yX2JiKTogVXNlIGJiX3ByZWRpY3Rpb25zIG1hcC4gIENhbGwKCWNsZWFyX2JiX3ByZWRpY3Rpb25zLgoJKHRyZWVfZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBDcmVhdGUgYW5kIGZyZWUgYmJfcHJlZGljdGlvbnMgbWFwLgoJKiBNYWtlZmlsZS5pbiAocHJlZGljdC5vKTogQWRkIHBvaW50ZXItc2V0LmggZGVwZW5kZW5jeS4KCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGJhc2ljX2Jsb2NrX2RlZik6IFJlbW92ZSBwcmVkaWN0aW9ucwoJZmllbGQuCgkqIGNmZ3J0bC5jIChydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogRG8gbm90IGNoZWNrIGJiLT5wcmVkaWN0aW9ucy4KCjIwMDctMDQtMjEgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8zMTQ4MAoJKiBjb25maWcvc2gvc2gubWQgKGxlbmd0aCk6IENoZWNrIGlmIHByZXZfbm9ubm90ZV9pbnNuIChpbnNuKQoJaXMgbnVsbC4KCjIwMDctMDQtMjEgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCSogdGltZXZhci5jICh0aW1ldmFyX3ByaW50KTogQ2hhbmdlIHJlZmVyZW5jZSBvZiAtLWRpc2FibGUtY2hlY2tpbmcgdG8KCS0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UuICBBbHNvIHdhcm4gaWYgYXNzZXJ0IGNoZWNraW5nIGlzIGRpc2FibGVkLgoKMjAwNy0wNC0yMSAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgQy8zMDI2NQoJKiBjLWdpbXBsaWZpZXIuYyAoZ2ltcGxpZnlfY29tcG91bmRfbGl0ZXJhbF9leHByKTogTWFyayB0aGUKCWRlY2wgYXMgYWRkcmVzc2FibGUgaWYgdGhlIGNvbXBvdW5kIGxpdGVyYWwgd2FzIG1hcmtlZCBhcwoJYWRkcmVzc2FibGUuCglNYXJrIHRoZSBkZWNsIGFzIGEgZ2ltcGxlIHJlZ2lzdGVyIGlmIGl0IGlzIGEgY29tcGxleCBvcgoJdmVjdG9yIGRlY2wgYW5kIGRvZXMgbm90IGxpdmUgaW4gbWVtb3J5LgoKMjAwNy0wNC0yMSAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJKiB0cmVlLmggKEdJTVBMRV9UVVBMRV9QKTogQWxzbyB0cnVlIGZvciBQSElfTk9ERXMuCgkoR0VORVJJQ19ORVhUKTogTmV3IGZ1bmN0aW9uIG1hY3JvLgoJKFBISV9DSEFJTik6IFVzZSBwaGlfbm9kZSdzIG5ldyBjaGFpbiB2YXJpYWJsZS4KCSh0cmVlX3BoaV9ub2RlKTogQ2hhbmdlIHRyZWVfY29tbW9uIHRvIHRyZWVfYmFzZQoJYW5kIGFkZCB0aGUgY2hhaW4gZmllbGQuCgkqIHRyZWUtcGhpbm9kZXMuYyAobWFrZV9waGlfbm9kZSk6IERvbid0IHNldAoJVFJFRV9UWVBFIG9uIHRoZSBuZXcgbm9kZS4KCSogYy1kZWNsLmMgKGxhbmdfdHJlZV9ub2RlKTogVXNlIEdFTkVSSUNfTkVYVAoJaW5zdGVhZCBvZiBjaGVja2luZyBHSU1QTEVfVFVQTEVfUCBpbiBjaGFpbl9uZXh0LgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMKCShnZXRfaW5pdGlhbF9kZWZfZm9yX2luZHVjdGlvbik6IExvb2sgYXQKCVBISV9SRVNVTFRfVFJFRSBmb3IgdGhlIHR5cGUgb2YgdGhlIHBoaSBub2RlLgoJKHVwZGF0ZV92dXNlc190b19wcmVoZWFkZXIpOiBVc2UgUEhJX0NIQUlOCglpbnN0ZWFkIG9mIFRSRUVfQ0hBSU4gb24gdGhlIHBoaSBub2RlLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChjb21wdXRlX3BvaW50c190b19zZXRzKToKCUxpa2V3aXNlLgoJKGlwYV9wdGFfZXhlY3V0ZSk6IExpa2V3aXNlLgoKMjAwNy0wNC0yMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzExMzYKCSogZm9sZC1jb25zdC5jIChmb2xkX3VuYXJ5KTogQ2FsbCBmb2xkX2NvbnZlcnRfY29uc3Qgb24gdGhlCglvcmlnaW5hbCB0cmVlLgoKMjAwNy0wNC0yMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKHN0b3JlX2tpbGxlZF9pbl9pbnNuKTogSGFuZGxlIFBBUkFMTEVMcy4KCShzdG9yZV9raWxsZWRfaW5fcGF0KTogTmV3LgoKMjAwNy0wNC0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMzE2MjgKCSogY29uZmlnL2kzODYvaTM4Ni5jICh0eXBlX2hhc192YXJpYWRpY19hcmdzX3ApOiBMb29rIGZvciBhbnkKCVRSRUVfTElTVCB3aXRoIGEgdm9pZF90eXBlX25vZGUgdmFsdWUsIG5vdCB2b2lkX2xpc3Rfbm9kZSBleGFjdGx5LgoKMjAwNy0wNC0yMSAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJKiBkb2Mvc3RhbmRhcmRzLnRleGk6IFJlLWFycmFuZ2UgaW50byBsYW5ndWFnZS1zcGVjaWZpYwoJc3Vic2VjdGlvbnMuIEFkZCBhIEMrKyBzZWN0aW9uLCBkb2N1bWVudGluZyB3aGljaCBzdGFuZGFyZHMgd2UKCXN1cHBvcnQuCgoyMDA3LTA0LTIxICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZGVsZXRlX3BvaW50c190b19zZXRzKTogRnJlZSBncmFwaC0+Y29tcGxleC4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZmluYWxpemVfc3NhX3Z1c2Vfb3BzKTogRnJlZSBuZXdfb3BzLgoKMjAwNy0wNC0yMCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1RBUlRGSUxFX0RFRkFVTFRfU1BFQyk6IEluY2x1ZGUKCWVjcnRpLm8gYW5kIGNydGJlZ2luLm8uCgkoTElCX0RFRkFVTFRfU1BFQyk6IEluY2x1ZGUgLWxjLgoJKEVOREZJTEVfREVGQVVMVF9TUEVDKTogSW5jbHVkZSBjcnRlbmQubyBhbmQgZWNydG4uby4KCjIwMDctMDQtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzI4NjIzCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChnZXRfdW5hbGlnbmVkX2FkZHJlc3MpOiBSZW1vdmUgZXh0cmFfb2Zmc2V0Cglhcmd1bWVudDsgdXBkYXRlIGFsbCBjYWxsZXJzLgoJKGdldF91bmFsaWduZWRfb2Zmc2V0KTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGV4dGVuZHFpZGkyLCBleHRlbmRoaWRpMik6IERvbid0IHVzZQoJZ2V0X3VuYWxpZ25lZF9hZGRyZXNzLCBqdXN0IHBhc3Mgb24gdGhlIGFkZHJlc3MgZGlyZWN0bHkuCgkodW5hbGlnbmVkX2V4dGVuZHFpZGkpOiBVc2UgZ2VuX2xvd3BhcnQgaW5zdGVhZCBvZiBvcGVuLWNvZGluZwoJdGhlIHN1YnJlZyBpbiB0aGUgaGVscGVyIHBhdHRlcm5zLgoJKHVuYWxpZ25lZF9leHRlbmRxaWRpX2xlKTogVXNlIGdldF91bmFsaWduZWRfb2Zmc2V0LgoJKHVuYWxpZ25lZF9leHRlbmRxaWRpX2JlLCB1bmFsaWduZWRfZXh0ZW5kaGlkaV9sZSk6IExpa2V3aXNlLgoJKHVuYWxpZ25lZF9leHRlbmRoaWRpX2JlKTogTGlrZXdpc2UuCgkodW5hbGlnbmVkX2V4dGVuZGhpZGkpOiBUaWR5LgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IFVwZGF0ZS4KCjIwMDctMDQtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoQ1BQX1NQRUMsIENQUF9TVUJUQVJHRVRfU1BFQyk6IFJlbW92ZS4KCShFWFRSQV9TUEVDUywgU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoQ1BQX1NQRUMpOiBVbmRlZiBiZWZvcmUgcmVkZWZpbmUuCgkqIGNvbmZpZy9hbHBoYS9saW51eC1lbGYuaCAoRVhUUkFfU1BFQ1MpOiBSZW5hbWUgU1VCVEFSR0VUX0VYVFJBX1NQRUNTLgoJKiBjb25maWcvYWxwaGEvZnJlZWJzZC5oIChFWFRSQV9TUEVDUyk6IFJlbmFtZSBTVUJUQVJHRVRfRVhUUkFfU1BFQ1MuCgkoQ1BQX1NQRUMpOiBEb24ndCBpbmNsdWRlICUoY3BwX3N1YnRhcmdldCkuCgkqIGNvbmZpZy9hbHBoYS9uZXRic2QuaCAoQ1BQX1NQRUMpOiBSZW5hbWUgQ1BQX1NVQlRBUkdFVF9TUEVDLgoJKEVYVFJBX1NQRUNTKTogUmVuYW1lIFNVQlRBUkdFVF9FWFRSQV9TUEVDUy4KCSogY29uZmlnL2FscGhhL29zZi5oIChDUFBfU1BFQywgRVhUUkFfU1BFQ1MpOiBTaW1pbGFybHkuCgoyMDA3LTA0LTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoYmRlc2NfMmFyZyk6IFVzZSBPUkRFUkVEIHJhdGhlciB0aGFuIFVOT1JERVJFRAoJZm9yIF9fYnVpbHRpbl9pYTMyX2NtcG9yZHNzLgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxNjMyCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpOiBVc2Ugb3AwIGFuZCBvcDEgaW5zdGVhZCBvZiBhcmcwCglhbmQgYXJnMSBmb3Igb3B0aW1pemF0aW9ucyBvZiBjb21wYXJpc29uIGFnYWluc3QgbWluL21heCB2YWx1ZXMuCglGb2xkIGFyZzAgdG8gYXJnMSdzIHR5cGUgZm9yIG9wdGltaXphdGlvbnMgb2YgY29tcGFyaXNvbiBhZ2FpbnN0CgltaW4rMSBhbmQgbWF4LTEgdmFsdWVzLgoKMjAwNy0wNC0xOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIHJlbG9hZC5jIChjb21iaW5lX3JlbG9hZHMpOiBXaGVuIHRyeWluZyB0byB1c2UgYSBkeWluZyByZWdpc3RlciwKCWNoZWNrIHdoZXRoZXIgaXQncyB1bmluaXRpYWxpemVkIGFuZCBkb24ndCB1c2UgaWYgc28uCgoyMDA3LTA0LTE5ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZvbGQtY29uc3QuYzogUmVtb3ZlIHByb3RvdHlwZXMgZm9yIG5hdGl2ZV9lbmNvZGVfZXhwciBhbmQKCW5hdGl2ZV9pbnRlcnByZXRfZXhwci4KCShuYXRpdmVfZW5jb2RlX2V4cHIpOiBNYWtlIG5vbi1zdGF0aWMuCgkobmF0aXZlX2ludGVycHJldF9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUuaDogQWRkIHByb3RvdHlwZXMgZm9yIHRoZSBhYm92ZS4KCjIwMDctMDQtMTkgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCpmcm9iX3RmX3RpLCAqZnJvYl90aV90ZiwgKmZyb2JfdGlfdGZfMiwKCSptb3Zfc2k8bW9kZT5fZTUwMF9zdWJyZWcwLCAqbW92X3NpPG1vZGU+X2U1MDBfc3VicmVnMF8yLAoJKm1vdl9zaXRmX2U1MDBfc3VicmVnOCwgKm1vdl9zaXRmX2U1MDBfc3VicmVnOF8yLCBzcGVfZXh0ZW5kZGZ0ZjIsCglzcGVfZml4X3RydW5jdGZzaTJfaW50ZXJuYWwsIHNwZV9uZWd0ZjJfaW50ZXJuYWwsIGNtcHRmZXFfZ3ByLAoJdHN0dGZlcV9ncHIsIGNtcHRmZ3RfZ3ByLCB0c3R0Zmd0X2dwciwgY21wdGZsdF9ncHIsIHRzdHRmbHRfZ3ByKToKCUFkZCBsZW5ndGggYXR0cmlidXRlcy4KCjIwMDctMDQtMTkgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZ2luY2x1ZGUvZmxvYXQuaDogQ2hlY2sgdGhhdCBfX1NURENfV0FOVF9ERUNfRlBfXyBpcyBkZWZpbmVkLAoJbm90IHRoYXQgaXQgaXMgMS4KCgkqIGMtY3BwYnVpbHRpbi5jIChjX2NwcF9idWlsdGlucyk6IFJlbW92ZSBkZWZpbml0aW9uIG9mCglfX1NURENfV0FOVF9ERUNfRlBfXy4KCjIwMDctMDQtMTkgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjOiBBbGxvdyBib3RoIHBvd2VycGMqLSotbGludXgqIGFuZCBwb3dlcnBjKi0qLWdudSoKCWZvciBsb25nIGRvdWJsZSBjb21wYXRpYmlsaXR5LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA3LTA0LTE5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjk4NDEKCSogY2ZnYnVpbGQuYyAoY29udHJvbF9mbG93X2luc25fcCk6IFJldHVybiBUUlVFIGZvciB1bmNvbmRpdGlvbmFsCgl0cmFwIGluc3RydWN0aW9ucy4KCSogc2NoZWQtZGVwcy5jIChzY2hlZF9hbmFseXplX2luc24pOiBQcmV2ZW50IGFsbCBub24tanVtcCBpbnN0cnVjdGlvbnMKCXRoYXQgbWF5IGNhdXNlIGNvbnRyb2wgZmxvdyB0cmFuc2ZlciBmcm9tIGJlaW5nIG1vdmVkLgoKMjAwNy0wNC0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZm9sZC1jb25zdC5jIChkaXZfaWZfemVyb19yZW1haW5kZXIpOiBEbyBzaWduZWQgZGl2aWRlIGZvciBwb2ludGVyCgl0eXBlcy4KCjIwMDctMDQtMTggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5tZCAobG9hZF9tYWNob19waWNiYXNlKTogVXNlIGxpbmsgcmVnaXN0ZXIKCW9ubHkuIFVwZGF0ZSBvcGVyYW5kcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBVcGRhdGUgY2FsbGVyLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBEaXR0by4gTW92ZSBmcm9tCglsaW5rIHJlZ2lzdGVyIHRvIHBpYyByZWdpc3Rlci4KCjIwMDctMDQtMTggIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJUFIgZGlhZ25vc3RpYy8zMTIyNwoJKiB0cmVlLXZycC5jIChzZWFyY2hfZm9yX2FkZHJfYXJyYXkpOiBOZXcuCgkoY2hlY2tfYXJyYXlfYm91bmRzKTogU3VwcHJlc3Mgd2FybmluZyBhYm91dAoJYWRkcmVzcyB0YWtlbiBvZiBhcnJheSByZWZzIGlmIGl0cyBub3QgZGUtcmVmZXJlbmNlZC4KCjIwMDctMDQtMTggIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoZGVzdHJveV9sb29wX3ZlY19pbmZvKTogU2V0IGxvb3AtPmF1eCB0byBOVUxMLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfbG9vcF9mb3JtKTogU2V0IGxvb3AtPmF1eC4KCgkqIHRyZWUtdmVjdG9yaXplci5oIChOSVRFUlNfS05PV05fUCk6IE5ldy4KCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9hbmFseXplX2xvb3BfZm9ybSk6IENhbGwgTklURVJTX0tOT1dOX1AKCWluc3RlYWQgb2YgTE9PUF9WSU5GT19JTlRfTklURVJTIHRvIGF2b2lkIGhhdmluZyB0byBnZW5lYXRlIGxvb3BfaW5mby4KCgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3RfZGV0ZXJtaW5lX3ZlY3Rvcml6YXRpb25fZmFjdG9yKTogQWRkCglkdW1wIHByaW50LgoJKHZlY3RfYW5hbHl6ZV9vcGVyYXRpb25zKTogRml4IGluZGVuZXRhdGlvbi4gIEZpeCBhIGNvbW1lbnQuICBGaXggYQoJcHJpbnQgbWVzc2FnZS4KCSh2ZWN0X2FuYWx5emVfc2NhbGFyX2N5Y2xlcyk6IEZpeCBpbmRlbnRhdGlvbi4KCSh2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdubWVudCk6IEZpeCBjaGVjayBpbiBjYXNlIG9mIHBlZWxpbmcuCgkodmVjdF9tYXJrX3JlbGV2YW50KTogSW5jbHVkZSBwaGlzIGluIHJlbGV2YW5jZSBhbmFseXNpcy4KCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF90cmFuc2Zvcm1fbG9vcCk6IEFkZCBhbiBhc3NlcnQuCgoyMDA3LTA0LTE4ICBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChwdHJyZWdfdG9fc3RyKTogUmVwbGFjZSBlcnJvcigpIHdpdGgKCW91dHB1dF9vcGVyYW5kX2xvc3NhZ2UoKS4KCjIwMDctMDQtMTggIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKGdldF9pbml0aWFsX2RlZl9mb3JfcmVkdWN0aW9uKTogQ2xlYW4gYXdheQoJdGhlIHVudXNlZCBjb2RlIGZvciByZWR1Y3Rpb24gd2l0aG91dCBhZGp1c3QtaW4tZXBpbG9nIHRvIHNpbXBsaWZ5IHRoZQoJZnVuY3Rpb24uCgoyMDA3LTA0LTE4ICBXb2xmZ2FuZyBHZWxsZXJpY2ggIDxnZWxsZXJpY2hAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoUzM5MF9URENfUE9TSVRJVkVfWkVSTyk6IE5ldyBjb25zdGFudC4KCShTMzkwX1REQ19ORUdBVElWRV9aRVJPKTogTmV3IGNvbnN0YW50LgoJKFMzOTBfVERDX1BPU0lUSVZFX05PUk1BTElaRURfTlVNQkVSKTogTmV3IGNvbnN0YW50LgoJKFMzOTBfVERDX05FR0FUSVZFX05PUk1BTElaRURfTlVNQkVSKTogTmV3IGNvbnN0YW50LgoJKFMzOTBfVERDX1BPU0lUSVZFX0RFTk9STUFMSVpFRF9OVU1CRVIpOiBOZXcgY29uc3RhbnQuCgkoUzM5MF9URENfTkVHQVRJVkVfREVOT1JNQUxJWkVEX05VTUJFUik6IE5ldyBjb25zdGFudC4KCShTMzkwX1REQ19QT1NJVElWRV9JTkZJTklUWSk6IE5ldyBjb25zdGFudC4KCShTMzkwX1REQ19ORUdBVElWRV9JTkZJTklUWSk6IE5ldyBjb25zdGFudC4KCShTMzkwX1REQ19QT1NJVElWRV9RVUlFVF9OQU4pOiBOZXcgY29uc3RhbnQuCgkoUzM5MF9URENfTkVHQVRJVkVfUVVJRVRfTkFOKTogTmV3IGNvbnN0YW50LgoJKFMzOTBfVERDX1BPU0lUSVZFX1NJR05BTElOR19OQU4pOiBOZXcgY29uc3RhbnQuCgkoUzM5MF9URENfTkVHQVRJVkVfU0lHTkFMSU5HX05BTik6IE5ldyBjb25zdGFudC4KCShTMzkwX1REQ19JTkZJTklUWSk6IE5ldyBjb25zdGFudC4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2Nhbm9uaWNhbGl6ZV9jb21wYXJpc29uKTogUmVuYW1lZAoJVU5TUEVDX0NNUElOVCB0byBVTlNQRUNfQ0NVX1RPX0lOVCwgYWRkZWQgYSBVTlNQRUNfQ0NVX1RPX0lOVC1saWtlCglvcHRpbWl6YXRpb24gZm9yIFVOU1BFQ19DQ1pfVE9fSU5ULgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKlREQ19pbnNuXzxtb2RlPiIpOiBOZXcgaW5zbi4KCSgiKmNjel90b19pbnQiKTogTmV3IGluc24uCgkoImlzaW5mPG1vZGU+MiIpOiBOZXcgaW5zbi4KCShVTlNQRUNfQ01QSU5UKTogUmVuYW1lZCB0byBVTlNQRUNfQ0NVX1RPX0lOVC4KCShVTlNQRUNfQ0NVX1RPX0lOVCk6IE5ldyBjb25zdGFudCwgcmVwbGFjZXMgVU5TUEVDX0NNUElOVC4KCShVTlNQRUNfQ0NaX1RPX0lOVCk6IE5ldyBjb25zdGFudC4KCjIwMDctMDQtMTggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xOTQzMQoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjE0NjMKCSogdHJlZS1wYXNzLmggKHBhc3NfcGhpcHJvcCk6IERlY2xhcmUuCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBOZXcgcGhpcHJvcCBwYXNzLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChzdHJ1Y3QgcGhpcHJvcF9kKTogTmV3IHN0cnVjdHVyZS4KCShwaGl2bl92YWxpZF9wKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KCShwaGlwcm9wX2luc2VydF9waGkpOiBMaWtld2lzZS4KCShwcm9wYWdhdGVfd2l0aF9waGkpOiBMaWtld2lzZS4KCSh0cmVlX3NzYV9waGlwcm9wKTogTmV3IHByb3BhZ2F0b3IgcHJvcGFnYXRpbmcgbG9hZHMKCXRocm91Z2ggcGhpIG5vZGVzIGlmIHByb2ZpdGFibGUuCgoyMDA3LTA0LTE4ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0LWFuYWx5emUuYyAocHJvY2Vzc191c2UpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9tYXJrX3N0bXRzX3RvX2JlX3ZlY3Rvcml6ZWQpOiBGYWN0b3Igb3V0IGNvZGUgdG8gcHJvY2Vzc191c2UuCglDaGVjayBwaGlzIGluIGFsbCBiYnMuCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2lzX3NpbXBsZV91c2UpOiBSZW1vdmUgYSBubyBsb25nZXIgcmVsYXZhbnQKCWFzc2VydC4KCjIwMDctMDQtMTggIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiByZWxvYWQxLmMgKGVsaW1pbnRlX3JlZ3NfaW5faW5zbik6IFVzZSBSRUdfRVFVSVYgbm90ZXMgdGhlIHNhbWUgd2F5Cgl3ZSB1c2UgUkVHX0VRVUFMLgoKMjAwNy0wNC0xNyAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCVBSIHRhcmdldC8zMDQ4MwoJKiBjb25maWcvYXZyL2F2ci5jIChwdHJyZWdfdG9fc3RyKTogUmVwbGFjZSBnY2NfdW5yZWFjaGFibGUoKSB3aXRoCgllcnJvcigpLgoKMjAwNy0wNC0xNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvc3NlLm1kIChzc2Vfdm1hZGR2NHNmMyk6IFVzZSByZWdpc3Rlcl9vcGVyYW5kCglvbiAiMCIuCgkoc3NlX3ZtbXVsdjRzZjMpOiBMaWtld2lzZS4KCShzc2UyX3ZtYWRkdjJkZjMpOiBMaWtld2lzZS4KCShzc2UyX3ZtbXVsdjJkZjMpOiBMaWtld2lzZS4KCjIwMDctMDQtMTcgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMTM2MAoJKiBjZmdsb29wYW5hbC5jICh0YXJnZXRfc21hbGxfY29zdCwgdGFyZ2V0X3ByZXNfY29zdCk6IFJlbW92ZWQuCgkodGFyZ2V0X3JlZ19jb3N0KTogTmV3LgoJKGluaXRfc2V0X2Nvc3RzKTogSW5pdGlhbGl6ZSB0YXJnZXRfcmVnX2Nvc3QuICBBZGQgY29tbWVudHMKCXJlZ2FyZGluZyB0aGUgcmF0aW9uYWxlIG9mIHRoZSBjb3N0cy4KCShnbG9iYWxfY29zdF9mb3Jfc2l6ZSk6IFJlbmFtZWQgdG8uLi4KCShlc3RpbWF0ZV9yZWdfcHJlc3N1cmVfY29zdCk6IC4uLiBhbmQgc2ltcGxpZnkuICBEZWNyZWFzZSBpbXBvcnRhbmNlCglvZiByZWdpc3RlciBwcmVzc3VyZS4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoaXZvcHRzX2dsb2JhbF9jb3N0X2Zvcl9zaXplKTogVXNlCgllc3RpbWF0ZV9yZWdfcHJlc3N1cmVfY29zdC4gIEFkZCBudW1iZXIgb2YgaXZzLgoJKGRldGVybWluZV9zZXRfY29zdHMpOiBEdW1wIHRhcmdldF9yZWdfY29zdC4KCSogbG9vcC1pbnZhcmlhbnQuYyAoZ2Fpbl9mb3JfaW52YXJpYW50KTogVXNlCgllc3RpbWF0ZV9yZWdfcHJlc3N1cmVfY29zdC4gIFJlbW92ZWQgbl9pbnZfdXNlcyBhcmd1bWVudC4KCShiZXN0X2dhaW5fZm9yX2ludmFyaWFudCwgZmluZF9pbnZhcmlhbnRzX3RvX21vdmUpOiBSZW1vdmUKCW5faW52X3VzZXMuCgkqIGNmZ2xvb3AuaCAodGFyZ2V0X3NtYWxsX2Nvc3QsIHRhcmdldF9wcmVzX2Nvc3QpOiBSZW1vdmVkLgoJKHRhcmdldF9yZWdfY29zdCk6IERlY2xhcmUuCgkoZ2xvYmFsX2Nvc3RfZm9yX3NpemUpOiBEZWNsYXJhdGlvbiByZW1vdmVkLgoJKGVzdGltYXRlX3JlZ19wcmVzc3VyZV9jb3N0KTogRGVjbGFyZS4KCjIwMDctMDQtMTcgIFBldGVyIEJlcmduZXIgIDxiZXJnbmVyQHZuZXQuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2spOiBGb3JjZSBURG1vZGUKCXJlZ25vcyBpbnRvIGV2ZW4vb2RkIHJlZ2lzdGVyIHBhaXJzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIFtTTE9XX1VOQUxJR05FRF9BQ0NFU1NdOiBUcmVhdCBERG1vZGUgYW5kCglURG1vZGUgc2ltaWxhciB0byB0aGUgb3RoZXIgZmxvYXRpbmcgcG9pbnQgbW9kZXMuCglbU0VDT05EQVJZX01FTU9SWV9ORUVERURdOiBUcmVhdCBERG1vZGUgc2ltaWxhciB0byBERm1vZGUuCgkqIGNvbmZpZy9yczYwMDAvZGZwLm1kIChuZWdkZDIsIGFic2RkMiwgbmVndGQyLCBhYnN0ZDIpOiBOZXcKCWRlZmluZV9leHBhbmQncy4KCShuZWdkZDJfZnByLCBhYnNkZDJfZnByLCBuYWJzZGQyX2ZwciwgbmVndGQyX2ZwciwgYWJzdGQyX2ZwciwKCW5hYnN0ZDJfZnByLCBtb3ZkZF9oYXJkZmxvYXQ2NF9tZnBncHIpOiBOZXcgZGVmaW5lX2luc24ncy4KCShtb3ZkZF9oYXJkZmxvYXQ2NCk6IFVzZSBUQVJHRVRfTUZQR1BSLgoKMjAwNy0wNC0xNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIHJlbG9hZDEuYyAoZGVsZXRlX291dHB1dF9yZWxvYWQpOiBEb24ndCBjb3VudCBvdXRwdXQgaW4gbl9pbmhlcml0ZWQuCgoJUmV2ZXJ0CgkyMDA1LTAxLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJUFIgcnRsLW9wdC8xMDY5MgoJKiByZWxvYWQxLmMgKGRvX2lucHV0X3JlbG9hZCk6IFJlc3RyaWN0IHRoZSBvcHRpbWl6YXRpb24gZGVsZXRlaW5nCglhIHByZXZpb3VzIG91dHB1dCByZWxvYWQgdG8gUkVMT0FEX0ZPUl9JTlBVVC4KCjIwMDctMDQtMTcgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAoc3RtdF92ZWNfaW5mb190eXBlKTogQWRkIGVudW0gdmFsdWUKCWluZHVjX3ZlY19pbmZvX3R5cGUuCgkodmVjdG9yaXphYmxlX2luZHVjdGlvbik6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jIChnZXRfaW5pdGlhbF9kZWZfZm9yX2luZHVjdGlvbik6IE5vIG5lZWQgdG8KCWNoZWNrIGlmIGFscmVhZHkgdmVjdG9yaXplZC4gIEZpbmQgZmlyc3QgcGxhY2UgaW4gQkIgd2hlcmUgbmV3IHN0bXRzCgljYW4gYmUgaW5zZXJ0ZWQuICBUYWtlcyBvbmx5IG9uZSBhcmd1bWVudC4KCSh2ZWN0b3JpemFibGVfaW5kdWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHZlY3RfdHJhbnNmb3JtX3N0bXQpOiBBZGQgY2FzZSBmb3IgaW5kdWNfdmVjX2luZm9fdHlwZSB0byBjYWxsCgl2ZWN0b3JpemFibGVfaW5kdWN0aW9uLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBDb25zaWRlciBwaGlzIGZvciB2ZWN0b3JpemF0aW9uLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2RldGVybWluZV92ZWN0b3JpemF0aW9uX2ZhY3Rvcik6IFNpbXBsaWZ5Cgljb25kaXRpb24uCgkoYW5hbHl6ZV9vcGVyYXRpb25zKTogQ2FsbCB2ZWN0b3JpemFibGVfaW5kdWN0aW9uIHdoZW4gYW5hbHl6aW5nIHBoaXMuCglGaXggY29tbWVudC4KCSh2ZWN0X21hcmtfc3RtdHNfdG9fYmVfdmVjdG9yaXplZCk6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2tzLgoJKHZlY3RfbWFya19yZWxldmFudCk6IEluY2x1ZGUgcGhpcyBpbiByZWxldmFuY2UgYW5hbHlzaXMuCgkodmVjdF9tYXJrX3N0bXRzX3RvX2JlX3ZlY3Rvcml6ZSk6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3QtcGF0dGVybnMuYyAod2lkZW5lZF9uYW1lX3ApOiBSZW1vdmUgb2Jzb2xldGUgYXNzZXJ0cy4KCjIwMDctMDQtMTYgIExhd3JlbmNlIENyb3dsICA8Y3Jvd2xAZ29vZ2xlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoRGVidWdnaW5nIE9wdGlvbnMpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlCgktZmVtaXQtc3RydWN0LWRlYnVnIG9wdGlvbnMgLWZlbWl0LXN0cnVjdC1kZWJ1Zy1iYXNlb25seSwKCS1mZW1pdC1zdHJ1Y3QtZGVidWctcmVkdWNlZCwgYW5kCgktZmVtaXQtc3RydWN0LWRlYnVnLWRldGFpbGVkWz0uLi5dLgoKCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBBZGQKCU9QVF9mZW1pdF9zdHJ1Y3RfZGVidWdfYmFzZW9ubHksIE9QVF9mZW1pdF9zdHJ1Y3RfZGVidWdfcmVkdWNlZCwKCWFuZCBPUFRfZmVtaXRfc3RydWN0X2RlYnVnX2RldGFpbGVkXy4KCSogYy5vcHQ6IEFkZCBzcGVjaWZpY2F0aW9ucyBmb3IKCS1mZW1pdC1zdHJ1Y3QtZGVidWctYmFzZW9ubHksIC1mZW1pdC1zdHJ1Y3QtZGVidWctcmVkdWNlZCwKCWFuZCAtZmVtaXQtc3RydWN0LWRlYnVnLWRldGFpbGVkWz0uLi5dLgoJKiBvcHRzLmMgKHNldF9zdHJ1Y3RfZGVidWdfb3B0aW9uKTogUGFyc2UgdGhlCgktZmVtaXQtc3RydWN0LWRlYnVnLS4uLiBvcHRpb25zLgoJKiBvcHRzLmMgKG1hdGNoZXNfbWFpbl9iYXNlLCBtYWluX2lucHV0X2Jhc2VuYW1lLAoJbWFpbl9pbnB1dF9iYXNlbGVuZ3RoLCBiYXNlX29mX3BhdGgsIG1hdGNoZXNfbWFpbl9iYXNlKTogQWRkCgl2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyB0byBjb21wYXJlIGhlYWRlciBiYXNlIG5hbWUgdG8gY29tcGlsYXRpb24KCXVuaXQgYmFzZSBuYW1lLgoJKiBvcHRzLmMgKHNob3VsZF9lbWl0X3N0cnVjdF9kZWJ1Zyk6IEFkZCB0byBkZXRlcm1pbmUgdG8gZW1pdCBhCglzdHJ1Y3R1cmUgYmFzZWQgb24gdGhlIG9wdGlvbi4KCShkdW1wX3N0cnVjdF9kZWJ1ZykgQWxzbyBkaXNhYmxlZCBmdW5jdGlvbiB0byBkZWJ1ZyB0aGlzCglmdW5jdGlvbi4KCSogb3B0cy5jIChoYW5kbGVfb3B0aW9ucyk6IFNhdmUgdGhlIGJhc2UgbmFtZSBvZiB0aGUKCWNvbXBpbGF0aW9uIHVuaXQuCgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfR0VORVJJQ19UWVBFX1ApOiBEZWZpbmUuCgkoTEFOR19IT09LU19GT1JfVFlQRVNfSU5JVElBTElaRVIpOiBBZGQuCglUaGlzIGhvb2sgaW5kaWNhdGVzIGlmIGEgdHlwZSBpcyBnZW5lcmljLiAgU2V0IGl0IGJ5IGRlZmF1bHQKCXRvICJuZXZlciBnZW5lcmljIi4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl90eXBlcyk6IEFkZCBhIG5ldyBob29rCgl0byBkZXRlcm1pbmUgaWYgYSBzdHJ1Y3QgdHlwZSBpcyBnZW5lcmljIG9yIG5vdC4KCSogY3AvY3AtdHJlZS5oIChjbGFzc190bXBsX2ltcGxfc3BlY19wKTogRGVjbGFyZSBhIEMrKyBob29rLgoJKiBjcC90cmVlLmMgKGNsYXNzX3RtcGxfaW1wbF9zcGVjX3ApOiBJbXBsZW1lbnQgdGhlIEMrKyBob29rLgoJKiBjcC9jcC1sYW5nLmMgKExBTkdfSE9PS1NfR0VORVJJQ19UWVBFX1ApOiBPdmVycmlkZSBudWxsIEMgaG9vawoJd2l0aCBsaXZlIEMrKyBob29rLgoKCSogZmxhZ3MuaCAoZW51bSBkZWJ1Z19pbmZvX3VzYWdlKTogQWRkIGFuIGVudW1lcmF0aW9uIHRvIGRlc2NyaWJlCglhIHByb2dyYW0ncyB1c2Ugb2YgYSBzdHJ1Y3R1cmUgdHlwZS4KCSogZHdhcmYyb3V0LmMgKGdlbl9zdHJ1Y3Rfb3JfdW5pb25fdHlwZV9kaWUpOiBBZGQgYSBuZXcgcGFyYW1ldGVyCgl0byBpbmRpY2F0ZSB0aGUgcHJvZ3JhbSdzIHVzYWdlIG9mIHRoZSB0eXBlLiAgRmlsdGVyIHN0cnVjdHMgYmFzZWQKCW9uIHRoZSAtZmVtaXQtc3RydWN0LWRlYnVnLS4uLiBzcGVjaWZpY2F0aW9uLgoJKGdlbl90eXBlX2RpZSk6IFNwbGl0IGludG8gdHdvIHJvdXRpbmVzLCBnZW5fdHlwZV9kaWUgYW5kCglnZW5fdHlwZV9kaWVfd2l0aF91c2FnZS4gIGdlbl90eXBlX2RpZSBpcyBub3cgYSB3cmFwcGVyCgl0aGF0IGFzc3VtZXMgZGlyZWN0IHVzYWdlLgoJKGdlbl90eXBlX2RpZV93aXRoX3VzYWdlKTogUmVwbGFjZSBjYWxscyB0byBnZW5fdHlwZV9kaWUKCXdpdGggZ2VuX3R5cGVfZGllX3dpdGhfdXNhZ2UgYWRkaW5nIHRoZSBwcm9ncmFtIHVzYWdlIG9mCgl0aGUgcmVmZXJlbmNlZCB0eXBlLgoJKGR3YXJmMm91dF9pbXBvcnRlZF9tb2R1bGVfb3JfZGVjbCk6IFN1cHByZXNzIHN0cnVjdCBkZWJ1ZwoJaW5mb3JtYXRpb24gdXNpbmcgc2hvdWxkX2VtaXRfc3RydWN0X2RlYnVnIHdoZW4gYXBwcm9wcmlhdGUuCgoyMDA3LTA0LTE2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxNTIyCgkqIHRyZWUtdnJwLmMgKHZyX3BoaV9lZGdlX2NvdW50cyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkodnJwX2luaXRpYWxpemUpOiBBbGxvY2F0ZSB2cl9waGlfZWRnZV9jb3VudHMuCgkodnJwX3Zpc2l0X3BoaV9ub2RlKTogRG9uJ3QgcHVzaCB0byBpbmZpbml0eSBpZiB3ZSBzYXcgYSBuZXcKCWV4ZWN1dGFibGUgZWRnZS4gIERyb3AgdGVzdCBmb3IgYWxsIGNvbnN0YW50cy4KCSh2cnBfZmluYWxpemUpOiBGcmVlIHZycF9waGlfZWRnZV9jb3VudHMuCgoJKiBkb2MvY3BwLnRleGkgKENvbW1vbiBQcmVkZWZpbmVkIE1hY3Jvcyk6IENsYXJpZnkgZGVzY3JpcHRpb24gb2YKCV9fR05VQ19HTlVfSU5MSU5FX18gYW5kIF9fR05VQ19TVERDX0lOTElORV9fLgoKCSogdHJlZS1zc2EtcHJvcGFnYXRlLmMgKGNmZ19ibG9ja3NfYWRkKTogSW5zZXJ0IGJsb2NrcyB3aXRoIGZld2VyCglwcmVkZWNlc3NvcnMgYXQgaGVhZCByYXRoZXIgdGhhbiB0YWlsLgoKMjAwNy0wNC0xNiAgTWF0dGhpYXMgS2xvc2UgIDxkb2tvQGRlYmlhbi5vcmc+CgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoQ1BQX1NQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9hcm0vbGludXgtZ2FzLmggKFNVQlRBUkdFVF9DUFBfU1BFQyk6IEV4dGVuZC4KCjIwMDctMDQtMTYgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmg6IFJlbW92ZSBzZXF1ZW5jZV9zdGFjayBleHRlcm4gZGVjbGFyYXRpb24uCgoyMDA3LTA0LTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogQ2hhbmdlIHRvIDY0IG9uCglUQVJHRVRfRklET0EuCgkoTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBDaGFuZ2UgdG8gNjQgaWYgX19tZmlkb19fIGlzCglkZWZpbmVkLgoKMjAwNy0wNC0xNiAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX2FyY2hfdHlwZXMpOiBSZWFycmFuZ2luZyAgYXJyYXkuCgkoZW51bSBhdnJfYXJjaCk6IEFkZC4KCShhdnJfbWN1X3R5cGVzKTogVXNlIGF2cl9hcmNoIGVudW1lcmF0aW9uIGNvbnN0YW50cyBpbnN0ZWFkIG9mCgludW1iZXJzLgoJKiBjb25maWcvYXZyL2F2ci5oIChMSU5LX1NQRUMpOiBTaW1wbGlmeS4KCjIwMDctMDQtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2xpYmNhbGxfdmFsdWUsCgltNjhrX2Z1bmN0aW9uX3ZhbHVlKTogVXNlIG1hY3JvcyBmb3IgcmVnaXN0ZXIgbmFtZXMgbW9yZS4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoRlJBTUVfUE9JTlRFUl9SRUdOVU0pOiBVc2UgQTZfUkVHCglpbnN0ZWFkLgoJKE02OEtfUkVHTkFNRSk6IFVzZSBBNl9SRUcuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKEZQX1JFRyk6IFJlbmFtZSB0byBBNl9SRUcuCgoyMDA3LTA0LTE2ICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJUFIgbWlkZGxlLWVuZC8yODA3MQoJKiBzY2hlZC1pbnQuaCAoc3RydWN0IGRlcHMpOiBTcGxpdCBmaWVsZCAncGVuZGluZ19saXN0c19sZW5ndGgnIGludG8KCSdwZW5kaW5nX3JlYWRfbGlzdF9sZW5ndGgnIGFuZCAncGVuZGluZ193cml0ZV9saXN0X2xlbmd0aCcuICBVcGRhdGUKCWNvbW1lbnQuCgkqIHNjaGVkLWRlcHMuYyAoYWRkX2luc25fbWVtX2RlcGVuZGVuY2UpOiBDaGFuZ2Ugc2lnbmF0dXJlLiAgVXBkYXRlCgl0byBoYW5kbGUgdHdvIGxlbmd0aCBjb3VudGVycyBpbnN0ZWFkIG9mIG9uZS4gIFVwZGF0ZSBhbGwgdXNlcy4KCShmbHVzaF9wZW5kaW5nX2xpc3RzLCBzY2hlZF9hbmFseXplXzEsIGluaXRfZGVwcyk6IFVwZGF0ZSB0byBoYW5kbGUKCXR3byBsZW5ndGggY291bnRlcnMgaW5zdGVhZCBvZiBvbmUuCgkqIHNjaGVkLXJnbi5jIChwcm9wYWdhdGVfZGVwcyk6IFVwZGF0ZSB0byBoYW5kbGUgdHdvIGxlbmd0aCBjb3VudGVycwoJaW5zdGVhZCBvZiBvbmUuCgoyMDA3LTA0LTE2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzMxNTgyCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfdmVjX3NldF9idWlsdGluKTogTWFrZSBhCgljb3B5IG9mIHNvdXJjZSwgcGFzcyBpdCB0byBpeDg2X2V4cGFuZF92ZWN0b3Jfc2V0IGFuZCByZXR1cm4KCWl0IGFzIHRhcmdldC4KCjIwMDctMDQtMTYgIERhdmlkIFVuZyAgPGRhdmlkdUBtaXBzLmNvbT4KCSAgICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUFJPQ0VTU09SXzc0S0MsIFBST0NFU1NPUl83NEtGLAoJUFJPQ0VTU09SXzc0S1gsIFRVTkVfNzRLLCBHRU5FUkFURV9NQUREX01TVUIpOiBEZWZpbmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jcHVfaW5mb190YWJsZSwgbWlwc19ydHhfY29zdF9kYXRhKToKCUFkZCA3NEsgcHJvY2Vzc29yIGluZm9ybWF0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbmNsdWRlIDc0ay5tZC4KCShjcHUpOiBBZGQgNzRrYyw3NGtmLDc0a3guCgkoSVNBX0hBU19NQUREX01TVUIpOiBDaGFuZ2UgdG8gR0VORVJBVEVfTUFERF9NU1VCIHRocm91Z2hvdXQuCgkqIGNvbmZpZy9taXBzLzc0ay5tZDogTmV3LgoJKiBkb2MvaW52b2tlLnRleGkgKE1JUFMgT3B0aW9ucyk6IERvY3VtZW50IDc0SyBzdXBwb3J0LgoKMjAwNy0wNC0xNiAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3RfYW5hbHl6ZV9vcGVyYXRpb25zKTogUmVvcmdhbml6ZSBjYWxscyB0bwoJdmVjdG9yaXphYmxlXyogZnVuY3Rpb25zLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV9jYWxsKTogQWRkIGNoZWNrIGZvcgoJU1RNVF9WSU5GT19SRUxFVkFOVF9QLCBTVE1UX1ZJTkZPX0RFRl9UWVBFIGFuZCBTVE1UX1ZJTkZPX0xJVkVfUC4KCSh2ZWN0b3JpemFibGVfc3RvcmUpOiBsaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfY29udmVyc2lvbik6IEFkZCBjaGVjayBmb3IgU1RNVF9WSU5GT19ERUZfVFlQRS4KCUFkZCBjb21tZW50cy4KCSh2ZWN0b3JpemFibGVfb3BlcmF0aW9uLCB2ZWN0b3JpemFibGVfdHlwZV9kZW1vdGlvbik6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV90eXBlX3Byb21vdGlvbiwgdmVjdG9yaXphYmxlX2xvYWQpOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfbGl2ZV9vcGVyYXRpb24sIHZlY3Rvcml6YWJsZV9jb25kaXRpb24pOiBMaWtld2lzZS4KCSh2ZWN0b3JpemFibGVfYXNzaWdubWVudCk6IEFkZCBjaGVjayBmb3IgU1RNVF9WSU5GT19ERUZfVFlQRSBhbmQKCVNUTVRfVklORk9fTElWRV9QLgoJKHZlY3RfdHJhbnNmb3JtX3N0bXQpOiBSZW9yZ2FuaXplIGNhbGxzIHRvIHZlY3Rvcml6YWJsZV8qIGZ1bmN0aW9ucy4KCjIwMDctMDQtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbGludXguaCAoRlVOQ1RJT05fVkFMVUVfUkVHTk9fUCk6IFVzZSBtYWNyb3MgZm9yCglyZWdpc3RlciBudW1iZXJzIG1vcmUuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoU1RBQ0tfUE9JTlRFUl9SRUdOVU0sCglGUkFNRV9QT0lOVEVSX1JFR05VTSwgU1RBVElDX0NIQUlOX1JFR05VTSwKCU02OEtfU1RSVUNUX1ZBTFVFX1JFR05VTSwgRlVOQ1RJT05fVkFMVUUsIExJQkNBTExfVkFMVUUsCglGVU5DVElPTl9WQUxVRV9SRUdOT19QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGtlbGYuaCAoTTY4S19TVFJVQ1RfVkFMVUVfUkVHTlVNLAoJU1RBVElDX0NIQUlOX1JFR05VTSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrZW1iLmggKEZVTkNUSU9OX1ZBTFVFX1JFR05PX1ApOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbmV0YnNkLWVsZi5oIChNNjhLX1NUUlVDVF9WQUxVRV9SRUdOVU0sCglTVEFUSUNfQ0hBSU5fUkVHTlVNLCBGVU5DVElPTl9WQUxVRV9SRUdOT19QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKEZQX1JFRyk6IE5ldy4KCjIwMDctMDQtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChQUkVGRVJSRURfU1RBQ0tfQk9VTkRBUlkpOiBQcmVmZXIgMzItYml0CglhbGlnbm1lbnQgb24gZmlkby4KCjIwMDctMDQtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvczM5MC9zMzkwLmMsIGNvbmZpZy9zMzkwL3MzOTAubWQsCgl0cmVlLXNzYS1sb29wLW5pdGVyLmMsIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMsIHRyZWUtdnJwLmM6IEZpeAoJY29tbWVudCB0eXBvcy4KCjIwMDctMDQtMTEgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1sb29wLXByZWZldGNoLmMgKGxvb3BfcHJlZmV0Y2hfYXJyYXlzKTogSWdub3JlCgljb2xkIGxvb3BzLgoKMjAwNy0wNC0xNCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgYy8zMTUyMAoJKiBjLWRlY2wuYyAoZmluaXNoX2RlY2wpOiBHcmFiIHRoZSB0eXBlIG9mIHRoZSBkZWNsIGFmdGVyIHRoZSBjYWxsCgl0byBzdG9yZV9pbml0X3ZhbHVlLgoKMjAwNy0wNC0xNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogY29tbW9uLm9wdCAoZmZvcndhcmQtcHJvcGFnYXRlKTogRml4ICJPcHRpbWl6YXRpb24iIGFubm90YXRpb24uCgoyMDA3LTA0LTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjU4NzQKCSogb21wLWxvdy5jIChleHBhbmRfb21wX3BhcmFsbGVsKTogSWYgY2hpbGRfY2Z1bi0+Y2ZnLCBmcmVlCglkb21pbmF0b3JzLCBwb3N0IGRvbWluYXRvcnMgYW5kIGNsZWFudXAgY2ZnIGJlZm9yZSByZXR1cm5pbmcuCgoyMDA3LTA0LTE0ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vYmZpbi5oIChNT0RFU19USUVBQkxFX1ApOiBBbGxvdyBtb3JlIG1vZGVzIHRvIGJlIHRpZWQuCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKG1vdnNpX2luc24pOiBEZWxldGUgdHdvIHVudXNlZCBhbHRlcm5hdGl2ZXMuCgoyMDA3LTA0LTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6IFJlY29nbml6ZSBmaWRvLgoJKiBjb25maWcvbTY4ay9tNjhrLWRldmljZXMuZGVmIChmaWRvYSk6IE5ldy4KCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19tZmlkb19fLgoJKEZMX0ZJRE9BLCBUQVJHRVRfRklET0EpOiBOZXcuCgkqIGNvbmZpZy9tNjhrL202OGsub3B0IChtZmlkb2EpOiBOZXcuCgoyMDA3LTA0LTEzICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIG1pZGRsZS1lbmQvMzEzMjIKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBDYWxsIGFzc2VtYmxlX2V4dGVybmFsX2xpYmNhbGwKCXdoZW4gYSBwZXJzb25hbGl0eSBmdW5jdGlvbiBpcyB1c2VkLgoKMjAwNy0wNC0xMyAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9leHBhbmRfYnVpbHRpbik6IFVzZSBDQUxMX0VYUFJfRk4uCgoyMDA3LTA0LTEzICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4tYy5jIChoYW5kbGVfY19vcHRpb24pOiBIYW5kbGUgLWZhcHBsZS1rZXh0IGhlcmUgc28KCXdlIGNhbi4uLgoJKiBjb25maWcvZGFyd2luLm9wdCAoZmFwcGxlLWtleHQpOiBNYWtlIEMrKyBvbmx5LgoJKiBjb25maWcvZGFyd2luLmMgKGRhcndpbl9vdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlIGNvZGUgdG8gZW5zdXJlCgktZmFwcGxlLWtleHQgaXMgZ2l2ZW4gZm9yIEMrKyBvbmx5LgoKMjAwNy0wNC0xMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy92eHdvcmtzLmggKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogRGVmaW5lLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBDYWxsCglTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUywgaWYgZGVmaW5lZC4KCjIwMDctMDQtMTMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtc3ZyMy1zaGxpYik6IFJlbW92ZWQuCgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSAtbXN2cjMtc2hsaWIuCgoyMDA3LTA0LTEzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm9wdCAobXBvcGNudCk6IFJlcGxhY2UgInBvcGNvdW50IiBpbnN0cnVjdGlvbgoJd2l0aCAicG9wY250IiBpbnN0cnVjdGlvbi4KCjIwMDctMDQtMTMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yMTI1OAoJKiB0cmVlLXZycC5jIChjb21wYXJlX2Nhc2VfbGFiZWxzKTogTmV3IGhlbHBlci4KCShmaW5kX3N3aXRjaF9hc3NlcnRzKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfYXNzZXJ0X2xvY2F0aW9ucyk6IENhbGwgaXQgZm9yIFNXSVRDSF9FWFBScy4KCjIwMDctMDQtMTMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFg4N19GTE9BVF9NT0RFX1ApOiBDaGVjayBmb3IgVEFSR0VUXzgwMzg3LgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqY21wZnAwKTogUmVtb3ZlIGNoZWNrIGZvciBUQVJHRVRfODAzODcsIHRoaXMKCWNoZWNrIGlzIG5vdyBpbXBsaWVkIGluIFg4N19GTE9BVF9NT0RFX1AuCgkoKmNtcGZwX3UsICpjbXBmcF88bW9kZT4sICpjbXBmcF9pX2kzODcpOiBEaXR0by4KCSgqY21wZnBfaXVfMzg3LCBmaXhfdHJ1bmM8bW9kZT5fZmlzdHRwX2kzODZfMSk6IERpdHRvLgoJKGZpeF90cnVuYzxtb2RlPl9pMzg2X2Zpc3R0cCk6IERpdHRvLgoJKGZpeF90cnVuYzxtb2RlPl9pMzg3X2Zpc3R0cF93aXRoX3RlbXApOiBEaXR0by4KCSgqZml4X3RydW5jPG1vZGU+X2kzODdfMSwgZml4X3RydW5jZGlfaTM4Nyk6IERpdHRvLgoJKGZpeF90cnVuY2RpX2kzODdfd2l0aF90ZW1wLCBmaXhfdHJ1bmM8bW9kZT5faTM4Nyk6IERpdHRvLgoJKGZpeF90cnVuYzxtb2RlPl9pMzg3X3dpdGhfdGVtcCwgKmZwX2pjY18xXzM4Nyk6IERpdHRvLgoJKCpmcF9qY2NfMl8zODcsICpmcF9qY2NfNV8zODcsICpmcF9qY2NfNl8zODcpOiBEaXR0by4KCSgqZnBfamNjXzdfMzg3LCAqZnBfamNjXzg8bW9kZT5fMzg3KTogRGl0dG8uCgkodW5uYW1lZF9zcGxpdHRlcnMpOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChmdW5jdGlvbl92YWx1ZV8zMik6IEdlbmVyYXRlIEZJUlNUX0ZMT0FUX1JFRwoJZm9yIFg4N19GTE9BVF9NT0RFX1AgbW9kZS4gIE92ZXJyaWRlIEZJUlNUX0ZMT0FUX1JFRyB3aXRoCglGSVJTVF9TU0VfUkVHIGZvciBsb2NhbCBmdW5jdGlvbnMgd2hlbiBTU0UgbWF0aCBpcyBlbmFibGVkIG9yCglmb3IgZnVuY3Rpb25zIHdpdGggc3NlcmVncGFybSBhdHRyaWJ1dGUuCgkoc3RhbmRhcmRfODAzODdfY29uc3RhbnRfcCk6IFJldHVybiAtMSBpZiBtb2RlIGlzIG5vdAoJWDg3X0ZMT0FUX01PREVfUC4KCShpeDg2X2NjX21vZGUpOiBBc3NlcnQgdGhhdCBzY2FsYXIgbW9kZSBpcyBub3QgREVDSU1BTF9GTE9BVF9NT0RFX1AuCgkoaXg4Nl9leHBhbmRfY29tcGFyZSk6IERpdHRvLgoJKGl4ODZfZXhwYW5kX2NhcnJ5X2ZsYWdfY29tcGFyZSk6IERpdHRvLgoJKGl4ODZfZXhwYW5kX2ludF9tb3ZjYyk6IENoZWNrIGZvciBTQ0FMQVJfRkxPQVRfTU9ERV9QIGluc3RlYWQKCW9mIEZMT0FUX01PREVfUCBmb3IgY21wX21vZGUgYW5kIGFzc2VydCB0aGF0IGNtcF9tb2RlIGlzIG5vdAoJREVDSU1BTF9GTE9BVF9NT0RFX1AuCgkoaXg4Nl9wcmVmZXJyZWRfb3V0cHV0X3JlbG9hZF9jbGFzcyk6IFVzZSBYODdfRkxPQVRfTU9ERV9QIGluc3RlYWQKCW9mIFNDQUxBUl9GTE9BVF9NT0RFX1AuCgkoaXg4Nl9ydHhfY29zdHMpIFtQTFVTXSBSZW1vdmUgRkxPQVRfTU9ERV9QIGFuZCBmYWxsIHRocm91Z2ggdG8gLi4uCglbTUlOVVNdOiAuLi4gaGVyZS4gIEFkZCBTU0VfRkxPQVRfTU9ERV9QIGFuZCBYODdfRkxPQVRfTU9ERV9QCgljaGVja3MgYmVmb3JlIEZMT0FUX01PREVfUC4KCVtNVUxUXTogQWRkIFNTRV9GTE9BVF9NT0RFX1AgYW5kIFg4N19GTE9BVF9NT0RFX1AgY2hlY2tzCgliZWZvcmUgRkxPQVRfTU9ERV9QLgoJW0RJVl06IERpdHRvLgoJW05FR106IERpdHRvLgoJW0FCU106IERpdHRvLgoJW1NRUlRdOiBEaXR0by4KCVtGTE9BVF9FWFRFTkRdOiBVc2UgU1NFX0ZMT0FUX01PREVfUC4KCjIwMDctMDQtMTIgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgkgICAgQ2hhcmxlcyBXaWxzb24gIDxsaWJ0b29sQGN3aWxzb24uZmFzdG1haWwuZm0+CgoJKiBNYWtlZmlsZS5pbiAoc3RhbXAtYXMsIHN0YW1wLWNvbGxlY3QtbGQsIHN0YW1wLW5tKTogUmVtb3ZlLgoJKGxpYmdjYy5tdmFycyk6IERvbid0IGRlcGVuZCBvbiB0aGVtLgoJKiBjb25maWd1cmUuYWMgKGFzLCBjb2xsZWN0LWxkLCBubSk6IENyZWF0ZSBmcm9tIGV4ZWMtdG9vbC5pbi4KCSogZXhlYy10b29sLmluOiBOZXcuCgoyMDA3LTA0LTEyICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4dCAoLS1oZWxwKTogRG9jdW1lbnQgLS1oZWxwPWNvbW1vbi4KCjIwMDctMDQtMTIgIFRob21hcyBOZXVtYW5uICA8dG5ldW1hbm5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogc3R1Yi1vYmpjLmMgKG9iamNfYnVpbGRfa2V5d29yZF9kZWNsKTogQXZvaWQgQysrIGtleXdvcmRzLgoKMjAwNy0wNC0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zbi1lbWl0Lm8pOiBEZXBlbmQgb24gJChJTlRFR1JBVEVfSCkuCgkqIGdlbmVtaXQuYyAobWFpbik6IEVtaXQgI2luY2x1ZGUgImludGVncmF0ZS5oIi4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAoU1lNQk9MX0hBTEYpOiBOZXcgbWlwc19zeW1ib2xfdHlwZS4KCShMT0FER1BfUlRQKTogTmV3IG1pcHNfbG9hZGdwX3N0eWxlLgoJKiBjb25maWcvbWlwcy9taXBzLmg6IEluY2x1ZGUgY29uZmlnL3Z4d29ya3MtZHVtbXkuaC4KCShUQVJHRVRfUlRQX1BJQyk6IE5ldyBtYWNyby4KCShUQVJHRVRfVVNFX0dPVCk6IFJldHVybiB0cnVlIGZvciBUQVJHRVRfUlRQX1BJQy4KCShUQVJHRVRfVVNFX1BJQ19GTl9BRERSX1JFRyk6IFJldHVybiB0cnVlIGZvciBUQVJHRVRfVlhXT1JLU19SVFAuCgkoQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogRW1pdCBmdW5jdGlvbi1yZWxhdGl2ZSBjYXNlIHRhYmxlcwoJZm9yIFRBUkdFVF9SVFBfUElDLgoJKiBjb25maWcvbWlwcy92eHdvcmtzLmggKFNVQlRBUkdFVF9BU01fU1BFQyk6IERlZmluZS4gIFBhc3MgZG93bgoJLW12eHdvcmtzLXBpYyB3aGVuIHVzaW5nIC1tcnRwIGFuZCBhIFBJQyBvcHRpb24uCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBSZXR1cm4gU1lNQk9MX0dPVF9ESVNQCglmb3IgUlRQIFBJQy4KCShtaXBzX3N5bWJvbGljX2NvbnN0YW50X3AsIG1pcHNfc3ltYm9saWNfYWRkcmVzc19wKQoJKG1pcHNfc3ltYm9sX2luc25zKTogSGFuZGxlIFNZTUJPTF9IQUxGLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBXYXJuIGFib3V0IC1HIGFuZCAtbXJ0cCBiZWluZyB1c2VkIHRvZ2V0aGVyLgoJSW5pdGlhbGl6ZSBtaXBzX2xvX3JlbG9jc1tTWU1CT0xfSEFMRl0uCgkobWlwc19jdXJyZW50X2xvYWRncF9zdHlsZSk6IFJldHVybiBMT0FER1BfUlRQIGZvciBSVFAgUElDLgoJKG1pcHNfZW1pdF9sb2FkZ3ApOiBIYW5kbGUgTE9BREdQX1JUUC4KCShtaXBzX2luX3NtYWxsX2RhdGFfcCk6IFJldHVybiBmYWxzZSBmb3IgVEFSR0VUX1ZYV09SS1NfUlRQLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChsb2FkZ3BfcnRwKTogTmV3IGluc24gYW5kIHNwbGl0dGVyLgoJKHRhYmxlanVtcCk6IEhhbmRsZSBmdW5jdGlvbi1yZWxhdGl2ZSBjYXNlIHRhYmxlIGVudHJpZXMgaWYKCVRBUkdFVF9SVFBfUElDLgoJKiBjb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kIChzeW1ib2xfcmVmX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoKMjAwNy0wNC0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChsb2FkX2NhbGw8bW9kZT4pOiBBbGxvdyBhbnkgZ2VuZXJhbCByZWdpc3Rlci4KCWRlc3RpbmF0aW9uLgoJKHNpYmNhbGxfdmFsdWVfaW50ZXJuYWwsIHNpYmNhbGxfdmFsdWVfbXVsdGlwbGVfaW50ZXJuYWwpCgkoY2FsbF92YWx1ZV9pbnRlcm5hbCwgY2FsbF92YWx1ZV9zcGxpdCwgY2FsbF92YWx1ZV9tdWx0aXBsZV9pbnRlcm5hbCkKCShjYWxsX3ZhbHVlX211bHRpcGxlX3NwbGl0KTogUmVtb3ZlIGNvbnN0cmFpbnRzIGZyb20gb3BlcmFuZCAwLgoKMjAwNy0wNC0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oOiBJbiBjb21tZW50cywgcmVmZXIgdG8gbG9hZGdwX2Fic29sdXRlCglyYXRoZXIgdGhhbiBsb2FkZ3Bfbm9zaGFyZWQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19lbWl0X2xvYWRncCk6IFVzZSBnZW5fbG9hZGdwX2Fic29sdXRlCglpbnN0ZWFkIG9mIGdlbl9sb2FkZ3Bfbm9zaGFyZWQuICBVc2UgZ2VuX2xvYWRncF9uZXdhYmkgaW5zdGVhZCBvZgoJZ2VuX2xvYWRncC4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAobG9hZGdwKTogUmVuYW1lIHRvLi4uCgkobG9hZGdwX25ld2FiaSk6IC4uLnRoaXMuCgkobG9hZGdwX25vc2hhcmVkKTogUmVuYW1lIHRvLi4uCgkobG9hZGdwX2Fic29sdXRlKTogLi4udGhpcy4KCjIwMDctMDQtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX29rX2Zvcl9sYXp5X2JpbmRpbmdfcCk6IEFsd2F5cyByZXR1cm4KCWZhbHNlIGZvciBsb2NhbGx5LWJpbmRpbmcgc3ltYm9scy4KCShtaXBzX2Rhbmdlcm91c19mb3JfbGEyNV9wKTogQ2hlY2sgbWlwc19nbG9iYWxfc3ltYm9sX3AuCgoyMDA3LTA0LTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKFNZTUJPTF9HT1RfTE9DQUwpOiBSZW5hbWUgdG8uLi4KCShTWU1CT0xfR09UX1BBR0VfT0ZTVCk6IC4uLnRoaXMuCgkoU1lNQk9MX0dPVF9HTE9CQUwpOiBSZW5hbWUgdG8uLi4KCShTWU1CT0xfR09UX0RJU1ApOiAuLi50aGlzLgoJKFNZTUJPTF9HT1RPRkZfR0xPQkFMKTogUmVuYW1lIHRvLi4uCgkoU1lNQk9MX0dPVE9GRl9ESVNQKTogLi4udGhpcy4gIFVwZGF0ZSBjb21tZW50cyBhY2NvcmRpbmdseS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2dsb2JhbF9zeW1ib2xfcCk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX3N5bWJvbF9iaW5kc19sb2NhbF9wKTogTGlrZXdpc2UuCgkobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBSZW5hbWUgU1lNQk9MX0dPVF9HTE9CQUwgdG8gU1lNQk9MX0dPVF9ESVNQCglhbmQgU1lNQk9MX0dPVF9MT0NBTCB0byBTWU1CT0xfR09UX1BBR0VfT0ZTVC4gIFVzZQoJbWlwc19nbG9iYWxfc3ltYm9sX3AgYW5kIG1pcHNfc3ltYm9sX2JpbmRzX2xvY2FsX3AuCgkobWlwc19zeW1ib2xpY19jb25zdGFudF9wLCBtaXBzX3N5bWJvbGljX2FkZHJlc3NfcCwgbWlwc19zeW1ib2xfaW5zbnMpCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFJlbmFtZSBTWU1CT0xfR09UX0dMT0JBTCB0byBTWU1CT0xfR09UX0RJU1AsCglTWU1CT0xfR09UX0xPQ0FMIHRvIFNZTUJPTF9HT1RfUEFHRV9PRlNUIGFuZCBTWU1CT0xfR09UT0ZGX0dMT0JBTCB0bwoJU1lNQk9MX0dPVE9GRl9ESVNQLgoJKG1pcHNfb2tfZm9yX2xhenlfYmluZGluZ19wKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfbG9hZF9jYWxsX2FkZHJlc3MsIG1pcHNfZXhwYW5kX2NhbGwpOiBVc2UgaXQuCgkobWlwc19kYW5nZXJvdXNfZm9yX2xhMjVfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqeGdvdF9oaTxtb2RlPiwgKnhnb3RfbG88bW9kZT4pCgkoKmdvdF9kaXNwPG1vZGU+KTogVXNlIGdvdF9kaXNwX29wZXJhbmQgaW5zdGVhZCBvZgoJZ2xvYmFsX2dvdF9vcGVyYW5kLiAgVXNlIFNZTUJPTF9HT1RPRkZfRElTUCBpbnN0ZWFkIG9mCglTWU1CT0xfR09UT0ZGX0dMT0JBTC4KCSgqZ290X3BhZ2U8bW9kZT4pOiBVc2UgZ290X3BhZ2Vfb2ZzdF9vcGVyYW5kIGluc3RlYWQgb2YKCWxvY2FsX2dvdF9vcGVyYW5kLgoJKiBjb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kIChjb25zdF9jYWxsX2luc25fb3BlcmFuZCk6IFVzZQoJU1lNQk9MX0dPVF9ESVNQIGluc3RlYWQgb2YgU1lNQk9MX0dPVF9HTE9CQUwuCgkoZ2xvYmFsX2dvdF9vcGVyYW5kKTogUmVuYW1lIHRvLi4uCgkoZ290X2Rpc3Bfb3BlcmFuZCk6IC4uLnRoaXMgYW5kIHVzZSBTWU1CT0xfR09UX0RJU1AgaW5zdGVhZCBvZgoJU1lNQk9MX0dPVF9HTE9CQUwuCgkobG9jYWxfZ290X29wZXJhbmQpOiBSZW5hbWUgdG8uLi4KCShnb3RfcGFnZV9vZnN0X29wZXJhbmQpOiAuLi50aGlzIGFuZCB1c2UgU1lNQk9MX0dPVF9QQUdFX09GU1QgaW5zdGVhZAoJb2YgU1lNQk9MX0dPVF9MT0NBTC4KCjIwMDctMDQtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfU1BMSVRfQ0FMTFMpOiBDaGVjawoJVEFSR0VUX0NBTExfQ0xPQkJFUkVEX0dQLgoJKFRBUkdFVF9TSUJDQUxMUyk6IENoZWNrIFRBUkdFVF9VU0VfR09UIGluc3RlYWQgb2YgVEFSR0VUX0FCSUNBTExTLgoJKFRBUkdFVF9VU0VfR09ULCBUQVJHRVRfQ0FMTF9DTE9CQkVSRURfR1ApOiBOZXcgbWFjcm9zLgoJKFRBUkdFVF9DQUxMX1NBVkVEX0dQLCBUQVJHRVRfVVNFX1BJQ19GTl9BRERSX1JFRyk6IExpa2V3aXNlLgoJKFNUQVJUSU5HX0ZSQU1FX09GRlNFVCk6IENoZWNrIFRBUkdFVF9DQUxMX0NMT0JCRVJFRF9HUCBpbnN0ZWFkCglvZiBUQVJHRVRfQUJJQ0FMTFMgJiYgIVRBUkdFVF9ORVdBQkkuCgkoTUlQU19DQUxMKTogQ2hlY2sgVEFSR0VUX1VTRV9HT1QgaW5zdGVhZCBvZiBUQVJHRVRfQUJJQ0FMTFMuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19sb2FkX2NhbGxfYWRkcmVzcyk6IENoZWNrCglUQVJHRVRfQ0FMTF9TQVZFRF9HUCBpbnN0ZWFkIG9mIFRBUkdFVF9ORVdBQkkuCgkobWlwc19nbG9iYWxfcG9pbnRlcik6IENoZWNrIFRBUkdFVF9VU0VfR09UIGluc3RlYWQgb2YgVEFSR0VUX0FCSUNBTExTLgoJQ2hlY2sgVEFSR0VUX0NBTExfU0FWRURfR1AgaW5zdGVhZCBvZiBUQVJHRVRfTkVXQUJJLgoJKG1pcHNfc2F2ZV9yZWdfcCk6IENoZWNrIFRBUkdFVF9DQUxMX1NBVkVEX0dQIGluc3RlYWQgb2YKCVRBUkdFVF9BQklDQUxMUyAmJiBUQVJHRVRfTkVXQUJJLgoJKG1pcHNfY3VycmVudF9sb2FkZ3Bfc3R5bGUpOiBDaGVjayBUQVJHRVRfVVNFX0dPVCBpbnN0ZWFkIG9mCglUQVJHRVRfQUJJQ0FMTFMuCgkobWlwc19leHBhbmRfcHJvbG9ndWUpOiBDaGVjayBUQVJHRVRfT0xEQUJJIGluc3RlYWQgb2YgIVRBUkdFVF9ORVdBQkkuCgkobWlwc19leHBhbmRfZXBpbG9ndWUpOiBDaGVjayBUQVJHRVRfQ0FMTF9TQVZFRF9HUCBpbnN0ZWFkIG9mCglUQVJHRVRfQUJJQ0FMTFMgJiYgVEFSR0VUX05FV0FCSS4KCShtaXBzX291dHB1dF9taV90aHVuayk6IENoZWNrIFRBUkdFVF9VU0VfR09UIGluc3RlYWQgb2YKCVRBUkdFVF9BQklDQUxMUy4gIENoZWNrIFRBUkdFVF9DQUxMX1NBVkVEX0dQIGluc3RlYWQgb2YKCVRBUkdFVF9ORVdBQkkuICBVc2UgVEFSR0VUX1VTRV9QSUNfRk5fQUREUl9SRUcgdG8gZGVjaWRlCgl3aGV0aGVyIGluZGlyZWN0IGNhbGxzIG11c3QgdXNlICQyNS4KCShtaXBzX2V4dHJhX2xpdmVfb25fZW50cnkpOiBDaGVjayBUQVJHRVRfR09UIGluc3RlYWQgb2YKCVRBUkdFVF9BQklDQUxMUy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoamFsX21hY3JvKTogQ2hlY2sgZmxhZ19waWMgYW5kCglUQVJHRVRfQ0FMTF9DTE9CQkVSRURfR1AgaW5zdGVhZCBvZiBUQVJHRVRfQUJJQ0FMTFMgYW5kIFRBUkdFVF9ORVdBQkkuCgkoYnVpbHRpbl9zZXRqbXBfc2V0dXAsIGJ1aWx0aW5fbG9uZ2ptcCk6IENoZWNrIFRBUkdFVF9VU0VfR09UCglpbnN0ZWFkIG9mIFRBUkdFVF9BQklDQUxMUy4KCShleGNlcHRpb25fcmVjZWl2ZXIpOiBDaGVjayBUQVJHRVRfQ0FMTF9DTE9CQkVSRURfR1AgaW5zdGVhZCBvZgoJVEFSR0VUX0FCSUNBTExTICYmIFRBUkdFVF9PTERBQkkuCgkobG9hZF9jYWxsPG1vZGU+KTogQ2hlY2sgVEFSR0VUX1VTRV9HT1QgaW5zdGVhZCBvZiBUQVJHRVRfQUJJQ0FMTFMuCgkoc2liY2FsbCk6IEluIHRoZSBjb21tZW50IGFib3ZlIHRoZSBkZWZpbmVfaW5zbiwgbWVudGlvbgoJVEFSR0VUX1VTRV9QSUNfRk5fQUREUl9SRUcgaW5zdGVhZCBvZiBUQVJHRVRfQUJJQ0FMTFMuCgkqIGNvbmZpZy9taXBzL2NvbnN0cmFpbnRzLm1kIChjKTogQ2hlY2sgVEFSR0VUX1VTRV9QSUNfRk5fQUREUl9SRUcKCWluc3RlYWQgb2YgVEFSR0VUX0FCSUNBTExTLgoKMjAwNy0wNC0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGRvYy9tZC50ZXhpIChCbGFja2ZpbiBmYW1pbHkgY29uc3RyYWludHMpOiBEb2N1bWVudCBQQSBhbmQgUEIuCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoQ09OU1RfT0tfRk9SX1ApOiBIYW5kbGUgUEEgYW5kIFBCLgoJKE1BQ0ZMQUdTX01BVENIX1ApOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSBNQUNGTEFHX0lTX00uCgkoYmZpbl9zZWNvbmRhcnlfcmVsb2FkKTogVHJlYXQgRVZFTl9BUkVHUyBhbmQgT0REX0FSRUdTIGxpa2UgQVJFR1MuCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKE1BQ0ZMQUdfSVNfTSk6IE5ldyBjb25zdGFudC4gIFJlbnVtYmVyIHNvbWUgb2YKCXRoZSBvdGhlciBNQUNGTEFHIGNvbnN0YW50cy4KCShzdW1fb2ZfYWNjdW11bGF0b3JzLCBsc2hycGRpMywgYXNocnBkaTMpOiBOZXcgcGF0dGVybnMuCgkoZmxhZ19tYWNoaSk6IFRpZ2h0ZW4gY29uc3RyYWludHMuICBSZW51bWJlciBzb21lIG9mIHRoZSBvcGVyYW5kcy4KCShmbGFnX21hY2hpX2FjY29ubHkpOiBUaWdodGVuIGNvbnN0cmFpbnRzLiAgQ29ycmVjdCBvcGVyYW5kIG51bWJlcnMgaW4KCW91dHB1dCB0ZW1wbGF0ZS4KCShmbGFnX21hY2hpX3BhcnRzX2FjY29ubHkpOiBOZXcgcGF0dGVybi4KCShmbGFnX21hY2luaXRoaSk6IFRpZ2h0ZW4gY29uc3RyYWludHMuICBBbGxvdyBhbnkgYWNjdW11bGF0b3IgdG8gYmUKCXVzZWQuCgkoZmxhZ19tYWNpbml0MWhpKTogVGlnaHRlbiBjb25zdHJhaW50cy4KCShmbGFnX211bF9tYWN2MmhpX3BhcnRzX2FjY29ubHkpOiBOZXcgcGF0dGVybi4KCgkqIGNvbmZpZy9iZmluL2xpYjFmdW5jcy5hc20gKF9fX3VtdWxzaTNfaGlnaHBhcnQsIF9fc211bHNpM19oaWdocGFydCk6CglVc2UgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbi4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAodW11bHNpM19oaWdocGFydCwgc211bHNpM19oaWdocGFydCk6IEVtaXQKCWlubGluZSBzZXF1ZW5jZXMgd2hlbiBub3Qgb3B0aW1pemluZyBmb3Igc2l6ZS4KCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKG1vdmhpX2xvdzJoaWdoLCBtb3ZoaV9oaWdoMmhpZ2gsIG1vdmhpX2xvdzJsb3csCgltb3ZoaV9oaWdoMmxvdyk6IERlbGV0ZSwgbWVyZ2UgZnVuY3Rpb25hbGl0eSBpbnRvLi4uCgkocGFja3YyaGkpOiAuLi4gdGhpcyBwYXR0ZXJuLgoKCTIwMDctMDItMTEgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoJKiBjb25maWcvYmZpbi9iZmluLm9wdCAobXNpbSk6IE5ldyBvcHRpb24uCgkobWNwdT0pOiBOZXcgb3B0aW9uLgoJKiBjb25maWcvYmZpbi9iZmluLXByb3Rvcy5oIChlbnVtIGJmaW5fY3B1KTogTmV3LgoJKGJmaW5fY3B1X3QpOiBUeXBlZGVmIG9mIGVudW0gYmZpbl9jcHUuCgkoYmZpbl9jcHVfdHlwZSk6IE5ldyBkZWNsYXJhdGlvbi4KCSogY29uZmlnL2JmaW4vZWxmLmggKFNUQVJURklMRV9TUEVDKTogQWRkIHN1cHBvcnQgZm9yCgktbXNpbSBhbmQgLW1jcHU9IG9wdGlvbnMuCgkoTElCX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX2NwdV90eXBlKTogRGVmaW5lLgoJKGJmaW5faGFuZGxlX29wdGlvbik6IEhhbmRsZSAtbWNwdT0gb3B0aW9uLgoJKiBjb25maWcvYmZpbi9iZmluLmggKERFRkFVTFRfQ1BVX1RZUEUpOiBEZWZpbmUgYXMgQkZJTl9DUFVfQkY1MzIuCgkoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19BRFNQQkY1MzFfXywgX19BRFNQQkY1MzJfXywKCV9fQURTUEJGNTMzX18gb3IgX19BRFNQQkY1MzdfXyBhY2NvcmRpbmcgdG8gdGhlIGNwdSB0eXBlLgoKMjAwNy0wNC0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjICgqLSotdnh3b3JrcyopOiBEb24ndCBhZGQgdG8gdG1fZmlsZXMgaW4gdGhpcyBzdGFuemEuCgkoYXJtLXdycy12eHdvcmtzLCBtaXBzLXdycy12eHdvcmtzLCBwb3dlcnBjLXdycy12eHdvcmtzKQoJKHBvd2VycGMtd3JzLXZ4d29ya3NhZSk6IFVzZSAke3RtX2ZpbGV9LgoJKGlbNDU2N104Ni13cnMtdnh3b3JrcywgaVs0NTY3XTg2LXdycy12eHdvcmtzYWUpOiBBZGQgc3ZyNC5oCglhZnRlciBlbGZvcy5oLiAgUmVtb3ZlIGkzODYvc3lzdjQuaCBhbmQgYWRkIGkzODYvdngtY29tbW9uLmguCgkqIGNvbmZpZy9pMzg2L3Z4LWNvbW1vbi5oOiBOZXcgZmlsZS4KCjIwMDctMDQtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3Z4d29ya3MuaCAoVlhXT1JLU19TVEFSVEZJTEVfU1BFQyk6IFVzZSAtbDpjcnQwLm8gaW5zdGVhZAoJb2YgY3J0MC5vJXMuCgoyMDA3LTA0LTEyICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoInRydW5jdGRkZDIiKTogVXNlIFREbW9kZSBmb3IgdGhlIHRhcmdldCBvZgoJbGR4dHIuCgoyMDA3LTA0LTEyICBEb3VnbGFzIEdyZWdvciAgPGRvdWcuZ3JlZ29yQGdtYWlsLmNvbT4KCglQUiBjKysvMzEwNzgKCVBSIGMrKy8zMTEwMwoJKiBjLWNvbW1vbi5jIChjX2J1aWxkX3F1YWxpZmllZF90eXBlKTogU2V0IGNhbm9uaWNhbCB0eXBlCglhcHByb3ByaWF0ZWx5LgoKMjAwNy0wNC0xMiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBQcmludCBBUlJBWV9SRUYKCWxvd2VyIGJvdW5kIGFuZCBlbGVtZW50IHNpemUgaWYgbG93ZXIgYm91bmQgaXMgbm90IHplcm8KCW9yIGVpdGhlciBvZiB0aGUgQVJSQVlfUkVGIG9wZXJhbmRzIGlzIHNldC4KCjIwMDctMDQtMTIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNDY4OQoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzEzMDcKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBDb21wYXJlIElOVEVHRVJfQ1NUIGFycmF5CglpbmRpY2VzIGJ5IHZhbHVlLgoJKiBnaW1wbGlmeS5jIChjYW5vbmljYWxpemVfYWRkcl9leHByKTogVG8gYmUgY29uc2lzdGVudCB3aXRoCglnaW1wbGlmeV9jb21wb3VuZF9sdmFsIG9ubHkgc2V0IG9wZXJhbmRzIHR3byBhbmQgdGhyZWUgb2YKCUFSUkFZX1JFRnMgaWYgdGhleSBhcmUgbm90IGdpbXBsZV9taW5faW52YXJpYW50LiAgVGhpcyBtYWtlcwoJaXQgbmV2ZXIgYXQgdGhpcyBwbGFjZS4KCSogdHJlZS1zc2EtY2NwLmMgKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2FycmF5X3JlZik6IExpa2V3aXNlLgoKMjAwNy0wNC0xMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKHBhX3NvbV9hc21faW5pdF9zZWN0aW9ucyk6IEVuc3VyZSB0aGF0IGNmdW4tPm1hY2hpbmUgaXMgbm90CgludWxsIGJlZm9yZSBlbWl0dGluZyBhIC5uc3Vic3BhIGRpcmVjdGl2ZS4KCjIwMDctMDQtMTEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAoZHVtcF9tZW1fcmVmX3N0YXRzKTogRG8gbm90IGNhbGwKCW5lZWRfdG9fcGFydGl0aW9uX3AgaWYgdGhlcmUgYXJlIG5vIG1lbW9yeSBzdGF0ZW1lbnRzIGluIHRoZQoJZnVuY3Rpb24uCgoyMDA3LTA0LTExICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1kYXRhLXJlZi5jIChjaHJlY19zdGVwc19kaXZpZGVfY29uc3RhbnRfcCk6IFJlbW92ZWQuCgkoZ2NkX29mX3N0ZXBzX21heV9kaXZpZGVfcCk6IE5ldyBmdW5jdGlvbi4KCShhbmFseXplX21pdl9zdWJzY3JpcHQpOiBVc2UgZ2NkX29mX3N0ZXBzX21heV9kaXZpZGVfcC4KCjIwMDctMDQtMTEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX3RvcGxldiwgZmluZF9yZWxvYWRzX2FkZHJlc3MsCglmaW5kX3JlbG9hZHNfYWRkcmVzc18xLCBmaW5kX3JlbG9hZHNfc3VicmVnX2FkZHJlc3MpOiBVc2UgcnR4X2VxdWFsX3AsCglub3QgYSBwb2ludGVyIGVxdWFsaXR5IHRlc3QsIHRvIGRlY2lkZSBpZiB3ZSBuZWVkIHRvIGNhbGwKCXB1c2hfcmVnX2VxdWl2X2FsdF9tZW0uCgoyMDA3LTA0LTExICBTZWJhc3RpYW4gUG9wICA8c2ViYXN0aWFuLnBvcEBpbnJpYS5mcj4KCgkqIHRyZWUtZGF0YS1yZWYuYyAoYWZmaW5lX2Z1bmN0aW9uX3plcm9fcCwgY29uc3RhbnRfYWNjZXNzX2Z1bmN0aW9ucywKCWluc2VydF9pbm5lcm1vc3RfdW5pdF9kaXN0X3ZlY3RvciwgYWRkX2Rpc3RhbmNlX2Zvcl96ZXJvX292ZXJsYXBzKToKCU5ldy4KCShidWlsZF9jbGFzc2ljX2Rpc3RfdmVjdG9yKTogQ2FsbCBhZGRfZGlzdGFuY2VfZm9yX3plcm9fb3ZlcmxhcHMuCgoyMDA3LTA0LTExICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1kYXRhLXJlZi5jIChhZGRfbXVsdGl2YXJpYXRlX3NlbGZfZGlzdCk6IEZvcmNlIHRoZSBkaXN0YW5jZQoJdmVjdG9yIHRvIGJlIHBvc2l0aXZlLgoKMjAwNy0wNC0xMSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJUFIgMzA3MzUKCVBSIDMxMDkwCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLS1wYXJhbXMgbWF4LWFsaWFzZWQtdm9wcyBhbmQKCWF2Zy1hbGlhc2VkLXZvcHMuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmggKGdldF9tcHRfZm9yLCBkdW1wX21lbW9yeV9wYXJ0aXRpb25zLAoJZGVidWdfbWVtb3J5X3BhcnRpdGlvbnMpOiBNb3ZlIHRvIHRyZWUtZmxvdy5oCgkqIHBhcmFtcy5oIChBVkdfQUxJQVNFRF9WT1BTKTogRGVmaW5lLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChzdHJ1Y3QgbXBfaW5mb19kZWYpOiBSZW1vdmUuICBVcGRhdGUgYWxsCgl1c2Vycy4KCShtcF9pbmZvX3QpOiBMaWtld2lzZS4KCShnZXRfbWVtX3N5bV9zdGF0c19mb3IpOiBOZXcuCgkoc2V0X21lbW9yeV9wYXJ0aXRpb24pOiBNb3ZlIGZyb20gdHJlZS1mbG93LWlubGluZS5oLgoJKG1hcmtfbm9uX2FkZHJlc3NhYmxlKTogT25seSBjbGVhciB0aGUgc2V0IG9mIHN5bWJvbHMgZm9yIHRoZQoJcGFydGl0aW9uIGlmIGl0IGV4aXN0cy4KCShkdW1wX21lbW9yeV9wYXJ0aXRpb25zKTogTW92ZSBmcm9tIHRyZWUtc3NhLW9wZXJhbmRzLmMKCShkZWJ1Z19tZW1vcnlfcGFydGl0aW9ucyk6IExpa2V3aXNlLgoJKG5lZWRfdG9fcGFydGl0aW9uX3ApOiBOZXcuCgkoZHVtcF9tZW1fcmVmX3N0YXRzKTogTmV3LgoJKGRlYnVnX21lbV9yZWZfc3RhdHMpOiBOZXcuCgkoZHVtcF9tZW1fc3ltX3N0YXRzKTogTmV3LgoJKGRlYnVnX21lbV9zeW1fc3RhdHMpOiBOZXcuCgkodXBkYXRlX21lbV9zeW1fc3RhdHNfZnJvbV9zdG10KTogTmV3LgoJKGNvbXBhcmVfbXBfaW5mb19lbnRyaWVzKTogTmV3LgoJKG1wX2luZm9fY21wKTogQ2FsbCBpdC4KCShzb3J0X21wX2luZm8pOiBDaGFuZ2UgYXJndW1lbnQgdG8gYSBsaXN0IG9mIG1lbV9zeW1fc3RhdHNfdAoJb2JqZWN0cy4KCShnZXRfbXB0X2Zvcik6IE1vdmUgZnJvbSB0cmVlLXNzYS1vcGVyYW5kcy5jLgoJKGZpbmRfcGFydGl0aW9uX2Zvcik6IE5ldy4KCShjcmVhdGVfcGFydGl0aW9uX2Zvcik6IFJlbW92ZS4KCShlc3RpbWF0ZV92b3BfcmVkdWN0aW9uKTogTmV3LgoJKHVwZGF0ZV9yZWZlcmVuY2VfY291bnRzKTogTmV3LgoJKGJ1aWxkX21wX2luZm8pOiBOZXcuCgkoY29tcHV0ZV9tZW1vcnlfcGFydGl0aW9ucyk6IFJlZmFjdG9yLgoJRG9jdW1lbnQgbmV3IGhldXJpc3RpYy4KCUNhbGwgYnVpbGRfbXBfaW5mbywgdXBkYXRlX3JlZmVyZW5jZV9jb3VudHMsCglmaW5kX3BhcnRpdGlvbl9mb3IgYW5kIGVzdGltYXRlX3ZvcF9yZWR1Y3Rpb24uCgkoY29tcHV0ZV9tYXlfYWxpYXNlcyk6IFBvcHVsYXRlIHZpcnR1YWwgb3BlcmFuZHMgYmVmb3JlCgljYWxsaW5nIGRlYnVnZ2luZyBkdW1wcy4KCShkZWxldGVfbWVtX3N5bV9zdGF0cyk6IE5ldy4KCShkZWxldGVfbWVtX3JlZl9zdGF0cyk6IE5ldy4KCShpbml0X21lbV9yZWZfc3RhdHMpOiBOZXcuCgkoaW5pdF9hbGlhc19pbmZvKTogQ2FsbCBpdC4KCShtYXliZV9jcmVhdGVfZ2xvYmFsX3Zhcik6IFJlbW92ZSBhbGlhc19pbmZvIGFyZ3VtZW50LgoJR2V0IG51bWJlciBvZiBjYWxsIHNpdGVzIGFuZCBudW1iZXIgb2YgcHVyZS9jb25zdCBjYWxsIHNpdGVzCglmcm9tIGdpbXBsZV9tZW1fcmVmX3N0YXRzKCkuCgkoZHVtcF9hbGlhc19pbmZvKTogQ2FsbCBkdW1wX21lbW9yeV9wYXJ0aXRpb25zIGZpcnN0LgoJKGR1bXBfcG9pbnRzX3RvX2luZm9fZm9yKTogU2hvdyBob3cgbWFueSB0aW1lcyBhIHBvaW50ZXIgaGFzCgliZWVuIGRlcmVmZXJlbmNlZC4KCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IEZvciAtTzIgc2V0IC0tcGFyYW0KCW1heC1hbGlhc2VkLXZvcHMgdG8gNTAwLgoJRm9yIC1PMyBzZXQgLS1wYXJhbSBtYXgtYWxpYXNlZC12b3BzIHRvIDEwMDAgYW5kIC0tcGFyYW0KCWF2Zy1hbGlhc2VkLXZvcHMgdG8gMy4KCSogZm9ydHJhbi9vcHRpb25zLmMgKGdmY19pbml0X29wdGlvbnMpOiBSZW1vdmUgYXNzaWdubWVudCB0bwoJTUFYX0FMSUFTRURfVk9QUy4KCSogdHJlZS1mbG93LWlubGluZS5oIChnaW1wbGVfbWVtX3JlZl9zdGF0cyk6IE5ldy4KCSogdHJlZS1kZmEuYyAoZHVtcF92YXJpYWJsZSk6IER1bXAgbWVtb3J5IHJlZmVyZW5jZQoJc3RhdGlzdGljcy4KCUR1bXAgTk9fQUxJQVMqIHNldHRpbmdzLgoJKHJlZmVyZW5jZWRfdmFyX2xvb2t1cCk6IFRpZHkuCgkobWVtX3N5bV9zdGF0cyk6IE5ldy4KCSogdHJlZS1zc2EtY29weS5jIChtYXlfcHJvcGFnYXRlX2NvcHkpOiBSZXR1cm4gdHJ1ZSBpZiBERVNUCglhbmQgT1JJRyBhcmUgZGlmZmVyZW50IFNTQSBuYW1lcyBmb3IgYSBtZW1vcnkgcGFydGl0aW9uLgoJKiB0cmVlLXNzYS5jIChkZWxldGVfdHJlZV9zc2EpOiBDYWxsIGRlbGV0ZV9tZW1fcmVmX3N0YXRzLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IG1lbV9zeW1fc3RhdHNfZCk6IERlZmluZS4KCShtZW1fc3ltX3N0YXRzX3QpOiBEZWZpbmUuCgkoc3RydWN0IG1lbV9yZWZfc3RhdHNfZCk6IERlZmluZS4KCShzdHJ1Y3QgZ2ltcGxlX2RmKTogQWRkIGZpZWxkIG1lbV9yZWZfc3RhdHMuCgkoZW51bSBub2FsaWFzX3N0YXRlKTogRGVmaW5lLgoJKHN0cnVjdCB2YXJfYW5uX2QpOiBBZGQgYml0ZmllbGQgbm9hbGlhc19zdGF0ZS4KCShtZW1fc3ltX3N0YXRzLCBkZWxldGVfbWVtX3JlZl9zdGF0cywgZHVtcF9tZW1fcmVmX3N0YXRzLAoJZGVidWdfbWVtX3JlZl9zdGF0cywgZGVidWdfbWVtb3J5X3BhcnRpdGlvbnMsCglkZWJ1Z19tZW1fc3ltX3N0YXRzKTogRGVjbGFyZS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAodXBkYXRlX2FsaWFzX2luZm8pOiBVcGRhdGUgY2FsbAoJc2l0ZXMsIHB1cmUvY29uc3QgY2FsbCBzaXRlcyBhbmQgYXNtIHNpdGVzIGluIHN0cnVjdHVyZQoJcmV0dXJuZWQgYnkgZ2ltcGxlX21lbV9yZWZfc3RhdHMuCglSZW1vdmUgbG9jYWwgdmFyaWFibGUgSVNfUE9URU5USUFMX0RFUkVGLgoJSW5jcmVhc2UgTlVNX0RFUkVGUyBpZiB0aGUgbWVtb3J5IGV4cHJlc3Npb24gaXMgYSBwb3RlbnRpYWwKCWRlcmVmZXJlbmNlLgoJQ2FsbCB1cGRhdGVfbWVtX3N5bV9zdGF0c19mcm9tX3N0bXQuCglJZiB0aGUgbWVtb3J5IHJlZmVyZW5jZXMgbWVtb3J5LCBjYWxsCgl1cGRhdGVfbWVtX3N5bV9zdGF0c19mcm9tX3N0bXQgZm9yIGFsbCB0aGUgZGlyZWN0IG1lbW9yeQoJc3ltYm9sIHJlZmVyZW5jZXMgZm91bmQuCgkoaW50cmFfY3JlYXRlX3ZhcmlhYmxlX2luZm9zKTogU2V0IG5vYWxpYXNfc3RhdGUgZmllbGQgZm9yCglwb2ludGVyIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mCglmbGFnX2FyZ3VtZW50X25vYWxpYXMuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmggKHN0cnVjdCBhbGlhc19pbmZvKTogUmVtb3ZlIGZpZWxkcwoJbnVtX2NhbGxzX2ZvdW5kIGFuZCBudW1fcHVyZV9jb25zdF9jYWxsc19mb3VuZC4KCSh1cGRhdGVfbWVtX3N5bV9zdGF0c19mcm9tX3N0bXQpOiBEZWNsYXJlLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfQUxJQVNFRF9WT1BTKTogQ2hhbmdlIGRlc2NyaXB0aW9uLgoJU2V0IGRlZmF1bHQgdmFsdWUgdG8gMTAwLgoJKFBBUkFNX0FWR19BTElBU0VEX1ZPUFMpOiBEZWZpbmUuCgoyMDA3LTA0LTExICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMTUzMAoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbl8xKTogRG8gbm90IHNpbXBsaWZ5CglhICogLWIgKyBjIGFzIGMgLSBhICogYiBpZiB3ZSBob25vciBzaWduIGRlcGVuZGVudCByb3VuZGluZy4KCjIwMDctMDQtMTEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLXByb3Rvcy5oIChiZmluX2V4cGFuZF9tb3ZtZW0pOiBSZW5hbWVkIGZyb20KCWJmaW5fZXhwYW5kX3N0cm1vdi4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX2V4cGFuZF9wcm9sb2d1ZSwgYmZpbl9kZWxlZ2l0aW1pemVfYWRkcmVzcywKCWJmaW5fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwsIHNwbGl0X2xvYWRfaW1tZWRpYXRlKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGVzLgoJKGluaXRpYWxpemVfdHJhbXBvbGluZSk6IERvbid0IHVzZSBvbGQtc3R5bGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCShiZmluX3NlY29uZGFyeV9yZWxvYWQpOiBNYXJrIElOX1AgYXJndW1lbnQgYXMgdW51c2VkLgoKMjAwNy0wNC0xMCAgU2ViYXN0aWFuIFBvcCAgPHNlYmFzdGlhbi5wb3BAaW5yaWEuZnI+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzEzNDMKCSogdHJlZS1jaHJlYy5oIChjaHJlY196ZXJvcCk6IE1vdmVkIGJlZm9yZSBidWlsZF9wb2x5bm9taWFsX2NocmVjLgoJKGJ1aWxkX3BvbHlub21pYWxfY2hyZWMpOiBSZXR1cm4gYSBzY2FsYXIgd2hlbiB0aGUgZXZvbHV0aW9uIGlzIHplcm8uCgkqIHRlc3RzdWl0ZS9nY2MuZGcvdmVjdC9wcjMxMzQzLmM6IE5ldy4KCjIwMDctMDQtMTAgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFg4N19GTE9BVF9NT0RFX1ApOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpjbXBmcDApOiBVc2UuCgkoKmNtcGZwX3UsICpjbXBmcF88bW9kZT4sICpjbXBmcF9pX2kzODcpOiBEaXR0by4KCSgqY21wZnBfaXVfMzg3LCBmaXhfdHJ1bmM8bW9kZT5fZmlzdHRwX2kzODZfMSk6IERpdHRvLgoJKGZpeF90cnVuYzxtb2RlPl9pMzg2X2Zpc3R0cCk6IERpdHRvLgoJKGZpeF90cnVuYzxtb2RlPl9pMzg3X2Zpc3R0cF93aXRoX3RlbXApOiBEaXR0by4KCSgqZml4X3RydW5jPG1vZGU+X2kzODdfMSwgZml4X3RydW5jZGlfaTM4Nyk6IERpdHRvLgoJKGZpeF90cnVuY2RpX2kzODdfd2l0aF90ZW1wLCBmaXhfdHJ1bmM8bW9kZT5faTM4Nyk6IERpdHRvLgoJKGZpeF90cnVuYzxtb2RlPl9pMzg3X3dpdGhfdGVtcCwgKmZwX2pjY18xXzM4Nyk6IERpdHRvLgoJKCpmcF9qY2NfMl8zODcsICpmcF9qY2NfNV8zODcsICpmcF9qY2NfNl8zODcpOiBEaXR0by4KCSgqZnBfamNjXzdfMzg3LCAqZnBfamNjXzg8bW9kZT5fMzg3KTogRGl0dG8uCgkodW5uYW1lZF9zcGxpdHRlcnMpOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdXRwdXRfZml4X3RydW5jKTogQXNzZXJ0IHRoYXQKCXdlJ3JlIG5vdCBiZWluZyBwYXNzZWQgYSBURm1vZGUgb3BlcmFuZC4KCjIwMDctMDQtMTAgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzE1MjYKCSogdHJlZS1pbmxpbmUuYyAoY29weV9jZmdfYm9keSk6IFVzZSBsYXN0X2Jhc2ljX2Jsb2NrIGluc3RlYWQgb2YKCW5fYmFzaWNfYmxvY2tzIHRvIGZpbmQgbmV3bHkgYWRkZWQgYmxvY2tzLgoKMjAwNy0wNC0xMCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGZpeF90cnVuYzxtb2RlPmRpX3NzZSk6IFJlbW92ZSAieCIgZnJvbSAieG0iCglhbHRlcm5hdGl2ZS4KCShmaXhfdHJ1bmM8bW9kZT5zaV9zc2UpOiBEaXR0by4KCSgqZmxvYXRzaXNmMl9taXhlZCwgKmZsb2F0c2lzZjJfc3NlKTogRGl0dG8uCgkoKmZsb2F0c2lkZjJfbWl4ZWQsICpmbG9hdHNpZGYyX3NzZSk6IERpdHRvLgoJKCpmbG9hdGRpc2YyX21peGVkLCAqZmxvYXRkaXNmMl9zc2UpOiBEaXR0by4KCSgqZmxvYXRkaWRmMl9taXhlZCwgKmZsb2F0ZGlkZjJfc3NlKTogRGl0dG8uCgkoZmxvYXRoaTxtb2RlPjIpOiBSZW5hbWUgZnJvbSBmbG9hdGhpc2YyIGFuZCBmbG9hdGhpZGYyLiBNYWNyb2l6ZQoJZXhwYW5kZXIgdXNpbmcgU1NFTU9ERUYgbW9kZSBtYWNyby4KCShmbG9hdHNpPG1vZGU+Mik6IFJlbmFtZSBmcm9tIGZsb2F0c2lzZjIgYW5kIGZsb2FzaGlkZjIuIE1hY3JvaXplCglleHBhbmRlciB1c2luZyBTU0VNT0RFRiBtb2RlIG1hY3JvLgoJKCpmbG9hdGhpPG1vZGU+Ml9pMzg3KTogUmVuYW1lIGZyb20gKmZsb2F0aGlzZjJfaTM4NyBhbmQKCSpmbG9hdGhpZGYyX2kzODcuIE1hY3JvaXplIGluc24gdXNpbmcgWDg3TU9ERUYxMiBtb2RlIG1hY3JvLgoJKCpmbG9hdHNpPG1vZGU+Ml9pMzg3KTogUmVuYW1lIGZyb20gKmZsb2F0c2lzZjJfaTM4NyBhbmQKCSpmbG9hdHNpZGYyX2kzODcuIE1hY3JvaXplIGluc24gdXNpbmcgWDg3TU9ERUYxMiBtb2RlIG1hY3JvLgoJKCpmbG9hdGRpPG1vZGU+Ml9pMzg3KTogUmVuYW1lIGZyb20gKmZsb2F0ZGlzZjJfaTM4NyBhbmQKCSpmbG9hdGRpZGYyX2kzODcuIE1hY3JvaXplIGluc24gdXNpbmcgWDg3TU9ERUYxMiBtb2RlIG1hY3JvLgoJKGZsb2F0PG1vZGU+eGYyKTogUmVuYW1lIGZyb20gZmxvYXRoaXhmMiwgZmxvYXRzaXhmMiBhbmQgZmxvYXRkaXhmMi4KCU1hY3JvaXplIGluc24gdXNpbmcgWDg3TU9ERUYgbW9kZSBtYWNyby4KCjIwMDctMDQtMDkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoc3NlMl9waW5zcncpOiBSZW1vdmVkLgoJKHNzZTJfcGV4dHJ3KTogUmVuYW1lZCB0byAuLi4KCSgqc3NlMl9wZXh0cncpOiBUaGlzLgoKMjAwNy0wNC0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRhcmdldC8yNzg2OQoJKiBjb25maWcvaTM4Ni9zc2UubWQKCShzc2Vfdm1hZGR2NHNmMywgc3NlX3ZtbXVsdjRzZjMpOiBSZW1vdmUgJyUnIG1vZGlmaWVyLgoJKHNzZV92bXNtYXh2NHNmM19maW5pdGUsIHNzZV92bXNtaW52NHNmM19maW5pdGUpOiBSZW1vdmUuCgkoc3NlMl92bWFkZHYyZGYzLCBzc2UyX3ZtbXVsdjJkZjMpOiBSZW1vdmUgJyUnIG1vZGlmaWVyLgoJKHNzZTJfdm1zbWF4djJkZjNfZmluaXRlLCBzc2UyX3Ztc21pbnYyZGYzX2Zpbml0ZSk6IFJlbW92ZS4KCjIwMDctMDQtMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWNjcCAobWF5YmVfZm9sZF9vZmZzZXRfdG9fY29tcG9uZW50X3JlZik6IFJlY3Vyc2UgaW50bwoJbXVsdGlwbGUgZmllbGRzIG9mIHVuaW9uLgoKMjAwNy0wNC0wOSAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGNmZ2xvb3BtYW5pcC5jIChjcmVhdGVfcHJlaGVhZGVyKTogRG8gbm90IHVzZSBsb29wX3ByZWhlYWRlcl9lZGdlLgoJKGNyZWF0ZV9wcmVoZWFkZXJzKTogQ2hlY2sgdGhhdCBsb29wcyBhcmUgYXZhaWxhYmxlLgoJKGZpeF9sb29wX3N0cnVjdHVyZSk6IENsZWFuIHVwLCBpbXByb3ZlIGNvbW1lbnRzLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKHJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2EpOgoJQ2hlY2sgdGhhdCBsb29wcyBhcmUgYXZhaWxhYmxlLiAgU2V0IExPT1BfQ0xPU0VEX1NTQSB0byB0aGUgbG9vcHMKCXN0YXRlIGZsYWdzLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoc2Nldl9maW5hbGl6ZSk6IENsZWFyIHNjYWxhcl9ldm9sdXRpb25faW5mby4KCSogcHJlZGljdC5jICh0cmVlX2VzdGltYXRlX3Byb2JhYmlsaXR5KTogRG8gbm90IGNhbGwKCWNhbGN1bGF0ZV9kb21pbmFuY2VfaW5mby4gIENhbGwgY3JlYXRlX3ByZWhlYWRlcnMuCgkqIHRyZWUtY2ZnY2xlYW51cC5jIChjbGVhbnVwX3RyZWVfY2ZnX2xvb3ApOiBPbmx5IGNhbGwKCXJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2EgaWYgTE9PUF9DTE9TRURfU1NBIGlzIHNldCBpbiBsb29wcyBzdGF0ZQoJZmxhZ3MuCgkqIGNmZ2xvb3AuYyAobG9vcF9wcmVoZWFkZXJfZWRnZSk6IEFzc2VydCB0aGF0IGxvb3BzIGhhdmUgcHJlaGVhZGVycy4KCSogY2ZnbG9vcC5oIChMT09QX0NMT1NFRF9TU0EpOiBOZXcgY29uc3RhbnQuCgkqIHRyZWUtY2ZnLmMgKHRyZWVfc3BsaXRfZWRnZSk6IE1ha2UgYW4gYXNzZXJ0IG1vcmUgcHJlY2lzZS4KCSogdHJlZS1zc2EtdGhyZWFkZWRnZS5jICh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBDb21tZW50IHRoZSBmdW5jdGlvbgoJYXJndW1lbnRzLgoKMjAwNy0wNC0wOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS5oIChtYXliZV9mb2xkX29mZnNldF90b19jb21wb25lbnRfcmVmKTogRGVjbGFyZS4KCSogdHJlZS1zc2EtY2NwLmMgKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2NvbXBvbmVudF9yZWYpOiBFeHBvcnQuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF91bmFyeSk6IFVzZSBpdC4KCjIwMDctMDQtMDggIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogUmVtb3ZlIGNhbGwgdG8KCWxhbmdfaG9va3MuZGVjbHMucHJlcGFyZV9hc3NlbWJsZV92YXJpYWJsZS4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1BSRVBBUkVfQVNTRU1CTEVfVkFSSUFCTEUpOiBLaWxsLgoJKExBTkdfSE9PS1NfREVDTFMpOiBSZW1vdmUgTEFOR19IT09LU19QUkVQQVJFX0FTU0VNQkxFX1ZBUklBQkxFLgoJKiBsYW5naG9va3MuaCAobGFuZ19ob29rc19mb3JfZGVjbHMpOiBSZW1vdmUKCXByZXBhcmVfYXNzZW1ibGVfdmFyaWFibGUuCgoyMDA3LTA0LTA4ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogVXNlIGluYy9kZWMgb24gQ29yZTIuCgoyMDA3LTA0LTA4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBsYW5naG9va3MuYyAobGhkX3RyZWVfaW5saW5pbmdfYWRkX3BlbmRpbmdfZm5fZGVjbHMsCglsaGRfdHJlZV9pbmxpbmluZ19hbm9uX2FnZ3JfdHlwZV9wLCBsaGRfdHJlZV9pbmxpbmluZ19zdGFydF9pbmxpbmluZywKCWxoZF90cmVlX2lubGluaW5nX2VuZF9pbmxpbmluZyk6IFJlbW92ZS4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl90cmVlX2lubGluaW5nKTogUmVtb3ZlIHRoZW4KCWFkZF9wZW5kaW5nX2ZuX2RlY2xzLCBhbm9uX2FnZ3JfdHlwZV9wLCBzdGFydF9pbmxpbmluZywgYW5kCgllbmRfaW5saW5pbmcgaG9va3MuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3RyZWVfaW5saW5pbmdfYWRkX3BlbmRpbmdfZm5fZGVjbHMsCglsaGRfdHJlZV9pbmxpbmluZ19hbm9uX2FnZ3JfdHlwZV9wLCBsaGRfdHJlZV9pbmxpbmluZ19zdGFydF9pbmxpbmluZywKCWxoZF90cmVlX2lubGluaW5nX2VuZF9pbmxpbmluZyk6IFJlbW92ZSBwcm90b3R5cGVzLgoJKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19BRERfUEVORElOR19GTl9ERUNMUywKCUxBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19BTk9OX0FHR1JfVFlQRV9QLAoJTEFOR19IT09LU19UUkVFX0lOTElOSU5HX1NUQVJUX0lOTElOSU5HLAoJTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VORF9JTkxJTklORyk6IFJlbW92ZS4KCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0FOT05fQUdHUl9UWVBFX1ApOiBEbwoJbm90IHNldCBpdC4KCjIwMDctMDQtMDggIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCglQUiB0YXJnZXQvMjk5MzIKCSogY29uZmlnL2F2ci9wcmVkaWNhdGVzLm1kIChpb19hZGRyZXNzX29wZXJhbmQpOiBEZWxldGUgcHJlZGljYXRlLgoJKGxvd19pb19hZGRyZXNzX29wZXJhbmQpOiBEb24ndCB1c2UgJ21vZGUnIGFyZ3VtZW50LgoJKGhpZ3RoX2lvX2FkZHJlc3Nfb3BlcmFuZCk6IFJlbmFtZSAuLi4KCShoaWdoX2lvX2FkZHJlc3Nfb3BlcmFuZCk6IC4uLiB0byB0aGlzLiBEb24ndCB1c2UgJ21vZGUnIGFyZ3VtZW50LgoJKiBjb25maWcvYXZyL2F2ci5tZCAoKnNiaXhfYnJhbmNoX3RtcCwgKnNiaXhfYnJhbmNoX3RtcF9iaXQ3KTogQWRqdXN0Cglmb3IgYWJvdmUgY2hhbmdlLgoKMjAwNy0wNC0wNyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJUmV2ZXJ0IGNoYW5nZSByZW1vdmluZyBzdGF0aWNwLgoKMjAwNy0wNC0wNyAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCVBSIHRhcmdldC8zMDI4OQoJKiBjb25maWcvYXZyL2F2ci5tZCAoKmNscm1lbXFpLCAqY2xybWVtaGkpOiBNYXJrIG9wZXJhbmQgNCBhcwoJZWFybHljbG9iYmVyLgoKMjAwNy0wNC0wNyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBjLm9wdDogQWRkIC1XZm9ybWF0LWNvbnRhaW5zLW51bC4KCSogYy1mb3JtYXQuYyAoc2V0X1dmb3JtYXQpOiBTZXQgd2Fybl9mb3JtYXRfY29udGFpbnNfbnVsIHRvIHRoZQoJICAtV2Zvcm1hdCBzZXR0aW5nLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBDaGVjayBPUFRfV2Zvcm1hdF9jb250YWluc19udWwgYmVmb3JlIGVtaXR0aW5nCgl0aGUgTlVMIGJ5dGUgd2FybmluZy4KCjIwMDctMDQtMDcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIFNTU0UzLgoKMjAwNy0wNC0wNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLmMgKHN0YXRpY3ApOiBObyBsb25nZXIgdXNlIHN0YXRpY3AgbGFuZ2hvb2suCgkqIGxhbmdob29rcy5jIChsaGRfc3RhdGljcCk6IFJlbW92ZWQuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6IFJlbW92ZSBzdGF0aWNwLgoJKiBjLWNvbW1vbi5jIChjX3N0YXRpY3ApOiBSZW1vdmUuCgkqIGMtY29tbW9uLmggKGNfc3RhdGljcCk6IERpdHRvLgoJKiBsYW5naG9va3MtZGVmcy5oIChsaGRfc3RhdGljcCk6IERpdHRvLgoJKExIRF9IT09LU19TVEFUSUNQKTogRGl0dG8KCSogdHJlZS5oIChnY2NfYXNzZXJ0X2xvd2VyZWQpOiBOZXcgbWFjcm8uCgoyMDA3LTA0LTA2ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChpZHhfaW5mZXJfbG9vcF9ib3VuZHMpOiBBZGQgYW5kIHVzZQoJYXJndW1lbnQgInJlbGlhYmxlIi4KCShpbmZlcl9sb29wX2JvdW5kc19mcm9tX3JlZiwgaW5mZXJfbG9vcF9ib3VuZHNfZnJvbV9hcnJheSk6CglBZGQgYXJndW1lbnQgInJlbGlhYmxlIi4gIFByb3BhZ2F0ZSBpdCB0aHJvdWdoIGNhbGxzLgoJKGluZmVyX2xvb3BfYm91bmRzX2Zyb21fdW5kZWZpbmVkKTogRGVyaXZlIG51bWJlciBvZiBpdGVyYXRpb25zCgllc3RpbWF0ZXMgZnJvbSByZWZlcmVuY2VzIGluIGJsb2NrcyB0aGF0IGRvIG5vdCBkb21pbmF0ZSBsb29wIGxhdGNoLgoJKGdjb3ZfdHlwZV90b19kb3VibGVfaW50KTogTmV3IGZ1bmN0aW9uLgoJKGVzdGltYXRlX251bWJlcnNfb2ZfaXRlcmF0aW9uc19sb29wKTogVXNlIGdjb3ZfdHlwZV90b19kb3VibGVfaW50CglhbmQgZXhwZWN0ZWRfbG9vcF9pdGVyYXRpb25zX3VuYm91bmRlZC4KCSogY2ZnbG9vcGFuYWwuYyAoZXhwZWN0ZWRfbG9vcF9pdGVyYXRpb25zX3VuYm91bmRlZCk6IE5ldyBmdW5jdGlvbi4KCShleHBlY3RlZF9sb29wX2l0ZXJhdGlvbnMpOiBVc2UgZXhwZWN0ZWRfbG9vcF9pdGVyYXRpb25zX3VuYm91bmRlZC4KCSogdHJlZS1kYXRhLXJlZi5jIChlc3RpbWF0ZWRfbG9vcF9pdGVyYXRpb25zKTogRXhwb3J0LgoJKGdldF9yZWZlcmVuY2VzX2luX3N0bXQpOiBGaXggLS0gZG8gbm90IHJldHVybiBhZGRyZXNzZXMgb2YgbG9jYWwKCW9iamVjdHMuCgkqIGNmZ2xvb3AuaCAoZXhwZWN0ZWRfbG9vcF9pdGVyYXRpb25zX3VuYm91bmRlZCwKCWVzdGltYXRlZF9sb29wX2l0ZXJhdGlvbnMpOiBEZWNsYXJlLgoKMjAwNy0wNC0wNiAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6Lm9yZz4KCgkqIHRyZWUtc3JhLmMgKHNyYV9idWlsZF9lbHRfYXNzaWdubWVudCk6IEluaXRpYWxpemUgbWluL21heHNoaWZ0LgoKMjAwNy0wNC0wNiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGV4dGVuZDxtb2RlPnhmMik6IFJlbmFtZSBmcm9tIGV4dGVuZHNmeGYyCglhbmQgZXh0ZW5kZGZ4ZjIuIE1hY3JvaXplIGV4cGFuZGVyIHVzaW5nIFg4N01PREVGMTIgbW9kZSBtYWNyby4KCSgqdHJ1bmNkZnNmX21peGVkLCAqdHJ1bmNkZnNmX2kzODcsICp0cnVuY2Rmc2YyX2kzODdfMSk6CglVc2Ugb3V0cHV0XzM4N19yZWdfbW92ZSgpLgoJKCp0cnVuY3hmPG1vZGU+Mik6IFJlbmFtZSBmcm9tICp0cnVuY3hmc2YyIGFuZCB0cnVuY3hmZGYyLiBNYWNyb2l6ZQoJZXhwYW5kZXIgdXNpbmcgWDg3TU9ERUYxMiBtb2RlIG1hY3JvLgoJKCp0cnVuY3hmc2YyX21peGVkKTogQ29tYmluZSBhbHRlcm5hdGl2ZXMsIGlnbm9yZSAiciIgYWx0ZXJuYXRpdmUgd2hlbgoJY2hvb3NpbmcgcmVnaXN0ZXIgcHJlZmVyZW5jZXMuICBVc2Ugb3V0cHV0XzM4N19yZWdfbW92ZSgpLgoJKCp0cnVuY3hmZGYyX21peGVkKTogQ29tYmluZSBhbHRlcm5hdGl2ZXMsIHVzZSAiciIgYWx0ZXJuYXRpdmUKCWluc3RlYWQgb2YgIngiLiAgVXNlIG91dHB1dF8zODdfcmVnX21vdmUoKS4KCSgqdHJ1bmN4Zjxtb2RlPjJfaTM4N19ub29wKTogUmVuYW1lIGZyb20gKnRydW5jeGZzZjJfaTM4N19ub29wIGFuZAoJKnRydW5jeGZkZjJfaTM4N19ub29wLiAgTWFjcm9pemUgaW5zbiB1c2luZyBYODdNT0RFRjEyIG1vZGUgbWFjcm8uCgkoKnRydW5jeGY8bW9kZT4yX2kzODcpOiBSZW5hbWUgZnJvbSAqdHJ1bmN4ZnNmMl9pMzg3IGFuZAoJKnRydW5jeGZkZjJfaTM4Ny4gIE1hY3JvaXplIGluc24gdXNpbmcgWDg3TU9ERUYxMiBtb2RlIG1hY3JvLgoJVXNlIG91dHB1dF8zODdfcmVnX21vdmUoKS4KCSgqdHJ1bmN4Zj9mX21peGVkIHNwbGl0dGVyKTogTWFjcm9pemUgc3BsaXR0ZXIgdXNpbmcgWDg3TU9ERUYxMgoJbW9kZSBtYWNyby4KCSgqdHJ1bmN4Zj9mX2kzODcgc3BsaXR0ZXIpOiBEaXR0by4KCjIwMDctMDQtMDYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0lOSVRJQUxJWkVSKTogUmVtb3ZlCglMQU5HX0hPT0tTX1NBRkVfRlJPTV9QLgoJKiBleHByLmMgKHNhZmVfZnJvbV9wKTogUmVtb3ZlIGxhbmdob29rIGNhbGwuCgkqIGxhbmdob29rcy5oIChsYW5nX2hvb2tzKTogUmVtb3ZlIHNhZmVfZnJvbV9wLgoJKGxoZF9zYWZlX2Zyb21fcCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGxhbmdob29rcy5jIChsaGRfc2FmZV9mcm9tX3ApOiBSZW1vdmUuCgoyMDA3LTA0LTA2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGRlY2lkZV9pc19mdW5jdGlvbl9uZWVkZWQpOiBEbyBub3Qga2VlcCBhbHdheXNfaW5saW5lCglmdW5jdGlvbnMuCgoyMDA3LTA0LTA2ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdXRwdXRfMzg3X3JlZ19tb3ZlKTogSGFuZGxlIG1lbW9yeSBvcGVyYW5kWzBdLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqbW92c2ZfMSwgKm1vdmRmX25vaW50ZWdlciwKCSptb3ZkZl9pbnRlZ2VyX3JleDY0LCAqbW92ZGZfaW50ZWdlciwgKm1vdnhmX25vaW50ZWdlciwKCSptb3Z4Zl9pbnRlZ2VyKTogVXNlIG91dHB1dF8zODdfcmVnX21vdmUoKSBmb3IgeDg3IHJlZy0+bWVtCglhbHRlcm5hdGl2ZS4KCSgqZXh0ZW5kc2ZkZjJfbWl4ZWQsICpleHRlbmRzZmRmMl9pMzg3LCAqZXh0ZW5kc2Z4ZjJfaTM4NywKCSpleHRlbmRkZnhmMl9pMzg3LCAqdHJ1bmNkZnNmX2Zhc3RfbWl4ZWQpOiBEaXR0by4KCjIwMDctMDQtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAocHJpbnRfb3BlcmFuZCkgWytdOiBSZW1vdmUuCgkoYWxwaGFfZW5kX2Z1bmN0aW9uKTogUHJpbnQgbm9wIGlmIGNhbGwgYXQgZW5kIG9mIGZ1bmN0aW9uLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogUmVtb3ZlICsuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoVU5TUEVDX0xER1AxKTogTmV3LgoJKGNhbGxfb3NmXzFfZXJfbm9yZXR1cm4sIGNhbGxfdmFsdWVfb3NmXzFfZXJfbm9yZXR1cm4pOiBOZXcuCgkoY2FsbF9vc2ZfMl9lcl9ub2dwLCBjYWxsX3ZhbHVlX29zZl8yX2VyX25vZ3ApOiBOZXcuCgkoY2FsbF9vc2ZfMl9lciwgY2FsbF92YWx1ZV9vc2ZfMl9lcik6IE1lcmdlIHRoZSBsZGdwIGhpZ2hwYXJ0IGludG8KCXRoZSBjYWxsIHBhdHRlcm4uIFVwZGF0ZSBwZWVwaG9sZXMgdG8gbWF0Y2guCgoyMDA3LTA0LTA1ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoT3RoZXIgQnVpbHRpbnMpOiBBZGQgZGVjaW1hbCBmbG9hdCB2YXJpYW50cwoJb2Ygc2lnbmJpdC4KCSogYnVpbHRpbnMuZGVmOiBEaXR0by4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBEaXR0by4KCjIwMDctMDQtMDUgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgkgICAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIHRhcmdldC8zMTQ3OAoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHNzZTJfdW11bHYyc2l2MmRpMyk6IFVzZSBWNFNJbW9kZSBpbnN0ZWFkCglvZiBWOEhJbW9kZSB3aGVuIGNhbGxpbmcgaXg4Nl9iaW5hcnlfb3BlcmF0b3Jfb2suCgkoc3NlMl9wbWFkZHdkKTogQ2FsbCBpeDg2X2JpbmFyeV9vcGVyYXRvcl9vay4KCShzZG90X3Byb2R2OGhpKTogT3BlcmFuZHMgMSBhbmQgMiBtdXN0IGJlIHJlZ2lzdGVyLgoKMjAwNy0wNC0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNyYS5jICh0cnlfaW5zdGFudGlhdGVfbXVsdGlwbGVfZmllbGRzKTogTmVlZGxlc3NseQoJaW5pdGlhbGl6ZSBhbGlnbiB0byBzaWxlbmNlIGJvZ3VzIHdhcm5pbmcuCgoyMDA3LTA0LTA1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzIyMTU2CgkqIHRyZWUtc3JhLmMgKHN0cnVjdCBzcmFfZWx0KTogQWRkIGluX2JpdGZsZF9ibG9jay4gIFJlbW92ZQoJYWxsX25vX3dhcm5pbmcuCgkoc3RydWN0IHNyYV93YWxrX2Zucyk6IFJlbW92ZSB1c2VfYWxsIHBhcmFtZXRlciBmcm9tIHVzZS4KCShzcmFfaGFzaF90cmVlKTogSGFuZGxlIEJJVF9GSUVMRF9SRUZzLgoJKHNyYV9lbHRfaGFzaCk6IERvbid0IGhhc2ggYml0ZmxkIGJsb2Nrcy4KCShzcmFfZWx0X2VxKTogU2tpcCB0aGVtIGluIHBhcmVudCBjb21wYXJlcyBhcyB3ZWxsLiAgSGFuZGxlCglCSVRfRklFTERfUkVGcy4KCShzcmFfd2Fsa19leHByKTogRG9uJ3QgbWFpbnRhaW4gb3IgcGFzcyBkb3duIHVzZV9hbGxfcC4KCShzY2FuX3VzZSk6IFJlbW92ZSB1c2VfYWxsIHBhcmFtZXRlci4KCShzY2FsYXJpemVfdXNlKTogTGlrZXdpc2UuICBSZS1leHBhbmQgYXNzaWdubWVudCB0bwoJQklUX0ZJRUxEX1JFRiBvZiBnaW1wbGVfcmVnLiAgRGUtc2NhbGFyaXplIGJlZm9yZSBpbnB1dCBvcgoJb3V0cHV0LCBhbmQgcmUtc2NhbGFyaXplIGFmdGVyIG91dHB1dC4gIERvbid0IG1hcmsgYW55dGhpbmcKCWZvciBubyB3YXJuaW5nLgoJKHNjYWxhcml6ZV9sZHN0KTogQWRqdXN0LgoJKHNjYWxhcml6ZV93YWxrX2dpbXBsZV9tb2RpZnlfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoYnVpbGRfZWxlbWVudF9uYW1lXzEpOiBIYW5kbGUgQklUX0ZJRUxEX1JFRnMuCgkoaW5zdGFudGlhdGVfZWxlbWVudCk6IERvbid0IHdhcm4gZm9yIGFueSBlbGVtZW50IHdob3NlIHBhcmVudAoJaXMgdXNlZCBhcyBhIHdob2xlLgoJKGluc3RhbnRpYXRlX21pc3NpbmdfZWxlbWVudHNfMSk6IFJldHVybiB0aGUgc3JhX2VsdC4KCShjYW5vbl90eXBlX2Zvcl9maWVsZCk6IE5ldy4KCSh0cnlfaW5zdGFudGlhdGVfbXVsdGlwbGVfZmllbGRzKTogTmV3LgoJKGluc3RhbnRpYXRlX21pc3NpbmdfZWxlbW50cyk6IFVzZSB0aGVtLgoJKG1hcmtfbm9fd2FybmluZyk6IFJlbW92ZWQuCgkoZ2VuZXJhdGVfb25lX2VsZW1lbnRfcmVmKTogSGFuZGxlIEJJVF9GSUVMRF9SRUZzLgoJKFJFUExEVVAsIHNyYV9idWlsZF9lbHRfYXNzaWdubWVudCk6IE5ldy4KCShnZW5lcmF0ZV9jb3B5X2lub3V0KTogVXNlIHRoZW0uCgkoZ2VuZXJhdGVfZWxlbWVudF9jb3B5KTogTGlrZXdpc2UuICBIYW5kbGUgYml0ZmxkIGRpZmZlcmVuY2VzLgoJKGdlbmVyYXRlX2VsZW1lbnRfemVybyk6IERvbid0IHJlY3Vyc2UgZm9yIGJsb2Nrcy4gIFVzZQoJc3JhX2J1aWxkX2VsdF9hc3NpZ25tZW50LgoJKGdlbmVyYXRlX29uZV9lbGVtZW50X2ludCk6IFRha2UgZWx0IGluc3RlYWQgb2YgdmFyLiAgVXNlCglzcmFfYnVpbGRfZWx0X2Fzc2lnbm1lbnQuCgkoZ2VuZXJhdGVfZWxlbWVudF9pbml0XzEpOiBBZGp1c3QuCgkoc2NhbGFyaXplX3VzZSwgc2NhbGFyaXplX2NvcHkpOiBVc2UgUkVQTERVUC4KCShzY2FsYXJpemVfbGRzdCk6IE1vdmUgYXNzZXJ0IGJlZm9yZSBkZXJlZmVyZW5jZS4KCShkdW1wX3NyYV9lbHRfbmFtZSk6IEhhbmRsZSBCSVRfRklFTERfUkVGcy4KCjIwMDctMDQtMDUgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIHJlZ21vdmUuYzogRml4IHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncyBkdWUgdG8gcHJldmlvdXMgY29tbWl0LgoKMjAwNy0wNC0wNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogcmVnbW92ZS5jIChTVEFDS19HUk9XU19ET1dOV0FSRCk6IERvbid0IGJvb2xlYW4taXplLgoJKHJlZ21vdmVfYmJfaGVhZCk6IFJlbW92ZS4KCShjb3B5X3NyY190b19kZXN0KTogRG9uJ3QgdXBkYXRlIHJlZ21vdmVfYmJfaGVhZCBhbmQgQkJfSEVBRC4KCShyZWdtb3ZlX29wdGltaXplKTogRG9uJ3QgZG8gdW5uZWNlc3NhcnkgQ0ZHIGZpeGVzIGZvciBub24tZXhpc3RpbmcKCXByb2JsZW1zIHdpdGggZml4dXBfbWF0Y2hfMS4KCURvbid0IGluaXRpYWxpemUvZnJlZSByZWdtb3ZlX2JiX2hlYWQuCgoJKHJlZ19pc19yZW1vdGVfY29uc3RhbnRfcCk6IElmIGFuIGluc24gaXMgaW4gdGhlIHNhbWUgYmFzaWMgYmxvY2sKCWJ1dCBub3QgYmVmb3JlIElOU04sIGNvbnNpZGVyIGl0IHJlbW90ZSwgdG9vLgoKMjAwNy0wNC0wNSAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCVBSIHRhcmdldC8yNTQ0OAoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUpOiBVc2UgdGhlCglERUNMX0FTU0VNQkxFUl9OQU1FLCBub3QgdGhlIERFQ0xfTkFNRS4KCjIwMDctMDQtMDUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBSZWZvcm1hdC4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IExpa2V3aXNlLgoKMjAwNy0wNC0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9saWIxZnVuY3MuYXNtOiBSZW1vdmUgdW51c2VkIGZpbGUuCgoyMDA3LTA0LTA0ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBvdGhlci8zMTM1NgoJKiBvcHRzLmMgKHByaW50X3NwZWNpZmljX2hlbHApOiBGaXggLS1oZWxwPTxsYW5ndWFnZT4KCWhlYWRlciBsaW5lLgoJKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogU3VwcG9ydCAtLWhlbHA9Y29tbW9uLgoKMjAwNy0wNC0wNCAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgb3RoZXIvMzEzNTMKCSogZ2NjLmMgKG1haW4pOiBEbyBub3QgcnVuIHRoZSBsaW5rZXIgaWYKCXByaW50X3N1YnByb2Nlc3NfaGVscCBpbmRpY2F0ZXMgdGhhdCBpdCBzaG91bGRuJ3QgYmUKCXJ1bi4KCjIwMDctMDQtMDQgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGRvYy8zMTM1NQoJKiBkb2MvaW52b2tlLnRleGkgKC0taGVscD0pOiBEb2N1bWVudCA8bGFuZ3VhZ2VzPiB2YWx1ZSwgZml4Cglmb3JtYXR0aW5nIGluIHRhYmxlcyBvZiB2YWx1ZXMuCgoyMDA3LTA0LTA0ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGgudXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvd2lubnQtY3h4LmMgKGkzODZfcGVfdHlwZV9kbGxpbXBvcnRfcCk6IERvbid0IGlnbm9yZQoJZGxsaW1wb3J0IGF0dHJpYnV0ZSBvZiB2aXJ0dWFsIG1ldGhvZHMuCgoyMDA3LTA0LTA0ICBDaGVuIExpcWluICA8bGlxaW5Ac3Vubm9ydGguY29tLmNuPgoKCSogY29uZmlnL3Njb3JlL2NydGkuYXNtOiBDaGFuZ2UgX2Jzc19zdGFydCB0byBfX2Jzc19zdGFydC4KCSogY29uZmlnL3Njb3JlL3Njb3JlLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogQWRkZWQuCgkoT1VUR09JTkdfUkVHX1BBUk1fU1RBQ0tfU1BBQ0UpIHVwZGF0ZS4KCSogY29uZmlnL3Njb3JlL3Njb3JlLm9wdDogYWRkIG9wdGlvbnMgdG8gbWFrZSBiYWNrZW5kIHN1cHBvcnQKCXNjb3JlNSwgc2NvcmU1dSwgc2NvcmU3IGFuZCBzY29yZTdkLgoJKiBjb25maWcvc2NvcmUvc2NvcmUubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvc2NvcmUvbWlzYy5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zY29yZS9tYWMubWQ6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvbWQudGV4aTogdXBkYXRlIGNvbnN0cmFpbnRzIGRlZmluZS4KCjIwMDctMDQtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBJZiBnZXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUgZG9lc24ndCB5aWVsZAoJYW4gYXBwcm9wcmlhdGUgdHlwZSwgdXNlIHRoZSBtb2RlIGluc3RlYWQuCgoyMDA3LTA0LTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHMtd3JzLXZ4d29ya3MpOiBBZGQgdngtY29tbW9uLmggdG8gdG1fZmlsZS4KCVNldCB0aGUgZGVmYXVsdCAtLXdpdGgtYXJjaCBzZXR0aW5nIHRvIG1pcHMyLgoJKiBjb25maWcvbWlwcy90LXZ4d29ya3MgKE1VTFRJTElCX09QVElPTlMsIE1VTFRJTElCX01BVENIRVMpCgkoTVVMVElMSUJfRVhDRVBUSU9OUyk6IFJlZGVmaW5lIHdpdGggbmV3IG11bHRpbGlicy4KCShNVUxUSUxJQl9PU0RJUk5BTUVTKTogRGVsZXRlLgoJKE1VTFRJTElCX0RJUk5BTUVTKTogRGVmaW5lLgoJKiBjb25maWcvbWlwcy92eHdvcmtzLmggKExJTktfU1BFQyk6IEFkZCBWWFdPUktTX0xJTktfU1BFQy4KCShMSUJfU1BFQywgU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IERlZmluZS4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogSW5jb3Jwb3JhdGUgb2xkIFNVQlRBUkdFVF9DUFBfU1BFQwoJZGVmaW5pdGlvbnMsIGV4Y2VwdCBmb3IgX1dSU19SM0tfRVhDX1NVUFBPUlQuICBDYWxsCglWWFdPUktTX09TX0NQUF9CVUlMVElOUy4KCShTVUJUQVJHRVRfQ1BQX1NQRUMpOiBSZWRlZmluZSB0byBWWFdPUktTX0FERElUSU9OQUxfQ1BQX1NQRUMuCgkoTUlQU19ERUJVR0dJTkdfSU5GTyk6IFVuZGVmaW5lLgoJKEZVTkNUSU9OX1BST0ZJTEVSKTogRGVmaW5lIHRvIFZYV09SS1NfRlVOQ1RJT05fUFJPRklMRVIuCgoyMDA3LTA0LTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwNzA0CgkqIGZvbGQtY29uc3QuYyAobmF0aXZlX2VuY29kZV9yZWFsKTogRW5jb2RlIHJlYWwuYyBwcm92aWRlZCBsb25ncwoJYXMgYSBzZXJpZXMgb2YgMzItYml0IG5hdGl2ZSBpbnRlZ2Vycy4KCShuYXRpdmVfaW50ZXJwcmV0X3JlYWwpOiBJbnRlcnByZXQgYnVmZmVyIGFzIGEgc2VyaWVzIG9mIDMyLWJpdAoJbmF0aXZlIGludGVnZXJzLgoKMjAwNy0wNC0wMyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZ2VucHJlZHMuYyAod3JpdGVfaW5zbl9jb25zdHJhaW50X2xlbik6IFdyaXRlIGZ1bmN0aW9uCglvcHRpbWl6ZWQgZm9yIENPTlNUUkFJTlRfTEVOIGltcGxlbWVudGF0aW9uLgoJKHdyaXRlX3RtX3ByZWRzX2gpOiBPdXRwdXQgaW5zbl9jb25zdHJhaW50X2xlbiBpbmxpbmUgYW5kCgl1c2UgaXQgZm9yIENPTlNUUkFJTlRfTEVOLgoJKHdyaXRlX2luc25fcHJlZHNfYyk6IERvbid0IG91dHB1dCBpbnNuX2NvbnN0cmFpbnRfbGVuLgoJKiBkb2MvbWQudGV4aSAoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQpOiBEb2N1bWVudCBtdWx0aS1sZXR0ZXIKCWNvbnN0cmFpbnRzIHNoYWxsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGlmIHRoZXkgc3RhcnQgd2l0aCB0aGUgc2FtZQoJbGV0dGVyLgoKMjAwNy0wNC0wMyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMzExNzUKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoaXNpbmY8bW9kZT4yKTogRXhwYW5kIG9ubHkgd2hlbgoJVEFSR0VUX0M5OV9GVU5DVElPTlMgaXMgc2V0LgoKMjAwNy0wNC0wMyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi1saW51eCopOiBBZGQgaTM4Ni90LWNydHBjIHRvIHRtLWZpbGUuCgkoeDg2XzY0LSotbGludXgqKTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtcGMpOiBOZXcgb3B0aW9uLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJycmlkZV9vcHRpb25zKTogSGFuZGxlCglpeDg3X3ByZWNpc2lvbl9zdHJpbmcuCgkqIGNvbmZpZy9pMzg2L2NydHByZWMuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L3QtY3J0cGM6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9saW51eC5oIChFTkRGSUxFX1NQRUMpOiBBZGQgaGFuZGxpbmcgb2YgLW1wYzMyLCAtbXBjNjQKCWFuZCAtbXBjODAgb3B0aW9ucy4KCSogY29uZmlnL2kzODYvbGludXg2NC5oIChFTkRGSUxFX1NQRUMpOiBEaXR0by4KCSogY29uZmlnL2kzODYvdC1saW51eDY0IChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IEFkZAoJY3J0cHJlYzMyLm8sIGNydHByZWM2NC5vIGFuZCBjcnRwcmVjODAuby4KCgkqIGRvYy9pbnZva2UudGV4aSAoTWFjaGluZSBEZXBlbmRlbnQgT3B0aW9ucyk6IEFkZCAtbXBjMzIsIC1tcGM2NAoJYW5kIC1tcGM4MCBvcHRpb25zLgoJKGkzODYgYW5kIHg4Ni02NCBPcHRpb25zKTogRG9jdW1lbnQgLW1wYzMyLCAtbXBjNjQgYW5kIC1tcGM4MCBvcHRpb25zLgoKMjAwNy0wNC0wMiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoaTM4NiBhbmQgeDg2LTY0IE9wdGlvbnMpOiBEb2N1bWVudCAtbTY0CglsaW1pdGF0aW9ucyBvbiBkYXJ3aW4uCgoyMDA3LTA0LTAyICBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJUFIgdGFyZ2V0LzMxMTM3CgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9ydHhfY29zdHMpOiBBZGQgbWlzc2luZyAnYnJlYWsnIHN0YXRlbWVudHMuCgoyMDA3LTA0LTAyICBEYXZlIEtvcm4gIDxkYXZlLmtvcm5AYXJ0aW1pLmNvbT4KCgkqIGRvYy90bS50ZXhpIChGVU5DVElPTl9NT0RFKTogVXBkYXRlIGFuZCBleHRlbmQgZG9jdW1lbnRhdGlvbi4KCjIwMDctMDQtMDIgIERhdmUgS29ybiAgPGRhdmUua29ybkBhcnRpbWkuY29tPgoKCSogbGliZ2NjMi5oIChleGNlcHRpb25fZGVzY3JpcHRvcik6IERvbid0IGZvcndhcmQtZGVjbGFyZS4KCShfX2dldF9laF90YWJsZV9sYW5ndWFnZSwgX19nZXRfZWhfdGFibGVfdmVyc2lvbik6IERlbGV0ZQoJcHJvdG90eXBlcyBvZiBsb25nLWRlYWQgZnVuY3Rpb25zLgoKMjAwNy0wNC0wMSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBlYml0bWFwLmg6IE5ldyBmaWxlCgkqIGViaXRtYXAuYzogTmV3IGZpbGUKCSogTWFrZWZpbGUuaW4gKGViaXRtYXAubyk6IE5ldyB0YXJnZXQuCgoyMDA3LTA0LTAxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBlbWl0LXJ0bC5jIChlbWl0X2luc25fYmVmb3JlX3NldGxvYyk6IERvIG5vdCBJQ0Ugd2hlbiBhc2tlZCB0byBlbWl0CgliZWZvcmUgdmVyeSBmaXJzdCBpbnN0cnVjdGlvbi4KCjIwMDctMDQtMDEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdnYy1wYWdlLmMgKGdnY19wcmludF9zdGF0aXN0aWNzKTogRml4IGZvcm1hdHRpbmcgc3RyaW5nIHRvIGF2b2lkCgl3YXJpbmcgb24gNjRiaXQgaG9zdHMuCgkqIGJpdG1hcC5oOiBGaXggdHlwbyBpbiBiaXRtYXBfaGVhZF9kZWYuCgoyMDA3LTA0LTAxICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMTM5MQoJKiBjZmdjbGVhbnVwLmMgKHRyeV9vcHRpbWl6ZV9jZmcpOiBJZiBhIHJlbW92ZWQgbGFiZWwgaXMgdHVybmVkCglpbnRvIGEgREVMRVRFRF9MQUJFTCBub3RlLCBhbmQgdGhlIGxhYmVsIGlzIGluIGFuIGVtcHR5IGJhc2ljCglibG9jaywgdXBkYXRlIEJCX0VORCBhcyB3ZWxsIGFzIEJCX0hFQUQuCgoyMDA3LTA0LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxMTY5CgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV9iaW5hcnlfZXhwcikgPFJTSElGVF9FWFBSPjogRHJvcAoJdG8gdmFyeWluZyBpZiB0aGUgcmFuZ2UgaXMgb3V0c2lkZSBbMCwgIHByZWMtMV0uCgoyMDA3LTA0LTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMzEzODgKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobG9hZF9jb25zdF9ncCk6IE5ldyBpbnNuLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3BsaXRfc3ltYm9sKTogQXZvaWQgdXNpbmcgb3IgY3JlYXRpbmcKCXRoZSBNSVBTMTYgR1AgcHNldWRvIHJlZ2lzdGVyIGlmIG5vX25ld19wc2V1ZG9zLgoJKG1pcHMxNl9ncF9wc2V1ZG9fcmVnKTogVXNlIGdlbl9sb2FkX2NvbnN0X2dwLgoKMjAwNy0wMy0zMSAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgdGFyZ2V0LzMxMzY0CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChjYWxsKTogQ29udmVydCB0byBMUiBoYXJkIHJlZyBmb3IKCXNlY3VyZXBsdC4KCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDA3LTAzLTMxICBXb2xmZ2FuZyBCYW5nZXJ0aCAgPGJhbmdlcnRoQGRlYWxpaS5vcmc+CgkgICAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJUFIgMTQ3MzcKCSogZG9jL2ludm9rZS50ZXhpOiAob3B0aW1pemF0aW9uIG9wdGlvbnMpOiBSZXdvcmQgZGVzY3JpcHRpb24KCW9mIC1mZmFzdC1tYXRoLiBEb2N1bWVudCBpdHMgcHJpbWFyeSBwdXJwb3NlLgoKMjAwNy0wMy0zMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogb21wLWxvdy5jIChzcGxheS10cmVlLmgpOiBJbmNsdWRlLgoJKGxvb2t1cF9kZWNsKTogUmVwbGFjZSBzcGxheS10cmVlIHVzYWdlIGJ5IHBvaW50ZXItbWFwLgoJKG1heWJlX2xvb2t1cF9kZWNsKTogTGlrZXdpc2UuCgkobmV3X29tcF9jb250ZXh0KTogTGlrZXdpc2UuCgkoZGVsZXRlX29tcF9jb250ZXh0KTogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmMgKHNwbGF5LXRyZWUuaCk6IEluY2x1ZGUuCgkqIHRyZWUtaW5saW5lLmMgKGluc2VydF9kZWNsX21hcCk6IFJlcGxhY2Ugc3BsYXktdHJlZSB1c2FnZSBieQoJcG9pbnRlci1tYXAuCgkocmVtYXBfc3NhX25hbWUpOiBMaWtld2lzZS4KCShyZW1hcF9kZWNsKTogTGlrZXdpc2UuCgkocmVtYXBfdHlwZV8xKTogTGlrZXdpc2UuCgkocmVtYXBfdHlwZSk6IExpa2V3aXNlLgoJKGNvcHlfYm9keV9yKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogTGlrZXdpc2UuCgkoY2xvbmVfYm9keSk6IExpa2V3aXNlLgoJKGNvcHlfdHJlZV9yKTogTGlrZXdpc2UuCgkocmVtYXBfc2F2ZV9leHByKTogTGlrZXdpc2UuCgkodW5zYXZlX3IpOiBMaWtld2lzZS4KCSh1bnNhdmVfZXhwcl9ub3cpOiBMaWtld2lzZS4KCSh0cmVlX2Z1bmN0aW9uX3ZlcnNpb25pbmcpOiBMaWtld2lzZS4KCShidWlsZF9kdXBsaWNhdGVfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5oIChwb2ludGVyLXNldC5oKTogSW5jbHVkZSBpbnN0ZWFkIG9mIHNwbGF5LXRyZWUuaC4KCShzdHJ1Y3QgY29weV9ib2R5X2RhdGEpOiBSZXBsYWNlIHNwbGF5LXRyZWUgYnkgcG9pbnRlci1tYXAuCgkqIE1ha2VmaWxlLmluIChUUkVFX0lOTElORV9IKTogRGVwZW5kIG9uIHBvaW50ZXItbWFwLmgsCglub3QgJChTUExBWV9UUkVFX0gpLgoJKGdpbXBsaWZ5Lm8pOiBEZXBlbmQgb24gJChTUExBWV9UUkVFX0gpLgoJKG9tcC1sb3cucCk6IExpa2V3aXNlLgoKMjAwNy0wMy0zMSAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9wcmVkaWNhdGVzLm1kIChldmVuX3JlZ2lzdGVyX29wZXJhbmQsCglvZGRfcmVnaXN0ZXJfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGVzLgoJKiBjb25maWcvYXZyL2F2ci5tZCAobW92dyBwZWVwaG9sZTIpOiBOZXcuCgkobW92d19yIHBlZXBob2xlMik6IE5ldy4KCjIwMDctMDMtMzAgIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxlc3BpbmRvbGFAZ29vZ2xlLmNvbT4KCgkqIHRyZWUuaCAoZ2V0X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogTmV3LgoJKiBmb2xkLWNvbnN0LmMgKG9wZXJhbmRfZXF1YWxfZm9yX2NvbXBhcmlzb25fcCk6IFVzZQoJZ2V0X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlIGluc3RlYWQgb2YKCWxhbmdfaG9va3MudHlwZXMuc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUuCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IERpdHRvLgoJKiBsYW5naG9va3MuYyAoZ2V0X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogTmV3LgoJKGxoZF9zaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6IE5ldy4KCSogbGFuZ2hvb2tzLmggKGxoZF9zaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6IE5ldy4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1NJR05FRF9PUl9VTlNJR05FRF9UWVBFKTogRGVmaW5lLgoKMjAwNy0wMy0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkocHJvZHVjZV9tZW1vcnlfZGVjbF9ydGwpOiBQYXNzIHRoZSBydHggdGhyb3VnaCBlbmNvZGVfc2VjdGlvbl9pbmZvLgoJKGdldF9hZGRyZXNzX2Nvc3QpOiBGb3JjZSBTWU1CT0xfRkxBR19MT0NBTCBzZXQuCgkoZm9yY2VfZXhwcl90b192YXJfY29zdCk6IFVzZSBwcm9kdWNlX21lbW9yeV9kZWNsX3J0bC4KCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLWxvb3AtaXZvcHRzLm8pOiBEZXBlbmQgb24gVEFSR0VUX0guCgoyMDA3LTAzLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIEthaSBUaWV0eiAgPGthaS50aWV0ekBvbmV2aXNpb24uY29tPgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChEV0FSRjJfREVCVUdHSU5HX0lORk8pOiBFbmFibGUgYnkKCWRlZmF1bHQgZm9yIDY0LWJpdC4KCShQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBQcmVmZXIgZHdhcmYyIGZvciA2NC1iaXQuCgkoVEFSR0VUXzY0QklUX01TX0FCSSk6IE5ldy4KCShEQlhfUkVHSVNURVJfTlVNQkVSKTogSGFuZGxlIDY0LWJpdC4KCShTSVpFX1RZUEUsIFBUUkRJRkZfVFlQRSk6IFVzZSBsb25nIGxvbmcgZm9yIDY0LWJpdC4KCShMT05HX1RZUEVfU0laRSk6IEZvcmNlIHRvIDMyLgoJKFJFR19QQVJNX1NUQUNLX1NQQUNFKTogTmV3LgoJKE9VVEdPSU5HX1JFR19QQVJNX1NUQUNLX1NQQUNFKTogTmV3LgoJKFJFR1BBUk1fTUFYLCBTU0VfUkVHUEFSTV9NQVgpOiBOZXcuCgkoSEFORExFX1BSQUdNQV9QVVNIX1BPUF9NQUNSTyk6IE5ldy4KCShTVEFDS19CT1VOREFSWSk6IFVzZSAxMjggZm9yIDY0LWJpdC4KCSogY29uZmlnL2kzODYvY3lnd2luLmFzbTogVXNlIHB1c2gvcmV0IHRvIHByZXNlcnZlIGNhbGwgc3RhY2suCglBZGQgNjQtYml0IGltcGxlbWVudGF0aW9uLgoJKiBjb25maWcvaTM4Ni9ndGhyLXdpbjMyLmMgKF9fZ3Rocl93aW4zMl9rZXlfY3JlYXRlKTogTWFyayBkdG9yCglhcmd1bWVudCB1bnVzZWQuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoeDg2XzY0X21zX2FiaV9pbnRfcGFyYW1ldGVyX3JlZ2lzdGVycyk6IE5ldy4KCShvdmVycmlkZV9vcHRpb25zKTogU2V0IGl4ODZfY21vZGVsIGZvciBUQVJHRVRfNjRCSVRfTVNfQUJJLgoJV2FybiBmb3IgLW1yZWdwYXJtLCAtbXJ0ZCBpbiA2NC1iaXQgbW9kZTsgZm9yY2UgaXg4Nl9yZWdwYXJtCglmb3IgNjQtYml0OyB1c2UgVEFSR0VUX1NVQlRBUkdFVDY0X0RFRkFVTFQuCgkoaXg4Nl9oYW5kbGVfY2NvbnZfYXR0cmlidXRlKTogRG9uJ3Qgd2FybiB3aGVuIGlnbm9yaW5nIGlmCglUQVJHRVRfNjRCSVRfTVNfQUJJLgoJKGl4ODZfZnVuY3Rpb25fYXJnX3JlZ25vX3ApOiBIYW5kbGUgVEFSR0VUXzY0QklUX01TX0FCSS4KCShpeDg2X3Bhc3NfYnlfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkoaXg4Nl9mdW5jdGlvbl92YWx1ZV9yZWdub19wKTogTGlrZXdpc2UuCgkoaXg4Nl9idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBMaWtld2lzZS4KCShpeDg2X3ZhX3N0YXJ0LCBpeDg2X2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlX21zXzY0KTogTmV3LgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogQ2FsbCBpdC4KCShmdW5jdGlvbl9hcmdfbXNfNjQpOiBOZXcuCgkoZnVuY3Rpb25fYXJnKTogQ2FsbCBpdC4KCShmdW5jdGlvbl92YWx1ZV9tc182NCk6IE5ldy4KCShpeDg2X2Z1bmN0aW9uX3ZhbHVlXzEpOiBDYWxsIGl0LgoJKHJldHVybl9pbl9tZW1vcnlfbXNfNjQpOiBOZXcuCgkoaXg4Nl9yZXR1cm5faW5fbWVtb3J5KTogQ2FsbCBpdC4KCShzZXR1cF9pbmNvbWluZ192YXJhcmdzX21zXzY0KTogTmV3LgoJKGl4ODZfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IENhbGwgaXQuCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBIYW5kbGUgNjQtYml0IHN0YWNrIHByb2JpbmcuCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IEhhbmRsZSBUQVJHRVRfNjRCSVRfTVNfQUJJLgoJKG91dHB1dF9waWNfYWRkcl9jb25zdCk6IExpa2V3aXNlLgoJKHg4Nl90aGlzX3BhcmFtZXRlcik6IExpa2V3aXNlLgoJKHg4Nl9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSh4ODZfZnVuY3Rpb25fcHJvZmlsZXIpOiBMaWtld2lzZS4KCShUQVJHRVRfU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfU1VCVEFSR0VUNjRfREVGQVVMVCk6IE5ldy4KCShUQVJHRVRfNjRCSVRfTVNfQUJJKTogTmV3LgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogSGFuZGxlIFRBUkdFVF82NEJJVF9NU19BQkkuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFsbG9jYXRlX3N0YWNrX3dvcmtlcik6IFJlbW92ZS4KCShhbGxvY2F0ZV9zdGFja193b3JrZXJfMzIpOiBSZW5hbWUgZnJvbSBhbGxvY2F0ZV9zdGFja193b3JrZXJfMTsKCWRlc2NyaWJlIHRoZSBjbG9iYmVyIG9mIGVheCB3aXRob3V0IGEgbWF0Y2hfc2NyYXRjaC4KCShhbGxvY2F0ZV9zdGFja193b3JrZXJfcG9zdHJlbG9hZCk6IFJlbW92ZS4KCShhbGxvY2F0ZV9zdGFja193b3JrZXJfNjQpOiBSZW5hbWUgZnJvbSBhbGxvY2F0ZV9zdGFja193b3JrZXJfcmV4NjQ7CglkZXNjcmliZSB0aGUgY2xvYmJlcnMgb2YgcmF4LCByMTAsIHIxMSBwcm9wZXJseTsgdXNlIF9fY2hrc3RrIHN5bWJvbC4KCShhbGxvY2F0ZV9zdGFja193b3JrZXJfcmV4NjRfcG9zdHJlbG9hZCk6IFJlbW92ZS4KCShhbGxvY2F0ZV9zdGFjayk6IEhhbmRsZSA2NC1iaXQuCgkqIGNvbmZpZy9pMzg2L2kzODZlbGYgKFRBUkdFVF9TVUJUQVJHRVRfREVGQVVMVCk6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvbWluZ3czMi5oIChUQVJHRVRfVkVSU0lPTik6IFNldCBjb3JyZWN0bHkgZm9yIDY0LWJpdC4KCShFWFRSQV9PU19DUFBfQlVJTFRJTlMpOiBIYW5kbGUgNjQtYml0LgoJKFNUQU5EQVJEX0lOQ0xVREVfRElSKTogSGFuZGxlIFRBUkdFVF82NEJJVF9ERUZBVUxULgoJKFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni91bml4LmggKFRBUkdFVF9TVUJUQVJHRVQ2NF9ERUZBVUxUKTogTmV3LgoJKiBjb25maWcuYnVpbGQgKHg4Nl82NC0qLW1pbmd3Kik6IE5ldyBob3N0LgoJKiBjb25maWcuaG9zdCAoeDg2XzY0LSotbWluZ3cqKTogTmV3IGhvc3QuCgkqIGNvbmZpZy5nY2MgKHg4Nl82NC0qLW1pbmd3Kik6IE5ldyB0YXJnZXQuCgkqIGd0aHItd2luMzIuaCAoX19ndGhyZWFkX2tleV9jcmVhdGUpOiBNYXJrIGR0b3IgdW51c2VkLgoKMjAwNy0wMy0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBLYWkgVGlldHogIDxrYWkudGlldHpAb25ldmlzaW9uLmNvbT4KCgkqIGMtcHJhZ21hLmMgKHN0cnVjdCBkZWZfcHJhZ21hX21hY3JvX3ZhbHVlKTogTmV3LgoJKHN0cnVjdCBkZWZfcHJhZ21hX21hY3JvKTogTmV3LgoJKHB1c2hlZF9tYWNyb190YWJsZSk6IE5ldy4KCShkcG1faGFzaCwgZHBtX2VxKTogTmV3LgoJKGhhbmRsZV9wcmFnbWFfcHVzaF9tYWNybywgaGFuZGxlX3ByYWdtYV9wb3BfbWFjcm8pOiBOZXcuCgkoaW5pdF9wcmFnbWEpOiBJbnN0YWxsIHRoZW0uCgkqIGRvYy90bS50ZXhpIChIQU5ETEVfUFJBR01BX1BVU0hfUE9QX01BQ1JPKTogTmV3LgoKMjAwNy0wMy0zMCAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX292ZXJyaWRlX29wdGlvbnMpOiBDbGVhcgoJJ2ZsYWdfZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3MnLgoKMjAwNy0wMy0zMCAgUGFvbG8gQ2FybGluaSAgPHBjYXJsaW5pQHN1c2UuZGU+CgoJUFIgYysrLzI2MDk5CgkqIGMtY29tbW9uLmggKGVudW0gcmlkKTogQWRkIFJJRF9IQVNfTk9USFJPV19BU1NJR04sCglSSURfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IsIFJJRF9IQVNfTk9USFJPV19DT1BZLAoJUklEX0hBU19UUklWSUFMX0FTU0lHTiwgUklEX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SLAoJUklEX0hBU19UUklWSUFMX0NPUFksIFJJRF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SLAoJUklEX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IsIFJJRF9JU19BQlNUUkFDVCwgUklEX0lTX0JBU0VfT0YsCglSSURfSVNfQ09OVkVSVElCTEVfVE8sIFJJRF9JU19DTEFTUywgUklEX0lTX0VNUFRZLCBSSURfSVNfRU5VTSwKCVJJRF9JU19QT0QsIFJJRF9JU19QT0xZTU9SUEhJQywgUklEX0lTX1VOSU9OLCBhcwoJQysrIGV4dGVuc2lvbnMuCgkqIGRvYy9leHRlbmQudGV4aSAoRXh0ZW5zaW9ucyB0byB0aGUgQysrIExhbmd1YWdlKTogQWRkIFR5cGUgVHJhaXRzLgoKMjAwNy0wMy0zMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogcmVnbW92ZS5jOiBNb3ZlIGFsbCBvZiBwYXNzX3N0YWNrX2FkanVzdG1lbnRzIGZyb20gaGVyZS4uLgoJKiBjb21iaW5lLXN0YWNrLWFkai5jOiAuLi50byB0aGlzIG5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbjogQWRkIHJ1bGVzIGZvciBjb21iaW5lLXN0YWNrLWFkai5vLgoKMjAwNy0wMy0zMCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTM4MwoJKiB0cmVlLWRhdGEtcmVmLmMgKGFmZmluZV9mdW5jdGlvbl9lcXVhbF9wKTogRG8gbm90IHJlcXVpcmUgdGhlCgl2ZWN0b3JzIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLgoKMjAwNy0wMy0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIG1pZGRsZS1lbmQvMzA3MDAKCSogZHdhcmYyb3V0LmMgKHJlZmVyZW5jZV90b191bnVzZWQpOiBBc2sgY2dyYXBoIGZvciBmdW5jdGlvbnMKCWF2YWlsYWJsaWxpdHk7IGFkZCBtb3JlIHNhbml0eSBjaGVja2luZzsgYXNrIHZhcnBvb2wgb25seSBhYm91dAoJVkFSX0RFQ0wuCgoyMDA3LTAzLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdW53aW5kLWdlbmVyaWMuaCAoX3NsZWIxMjhfdCwgX3VsZWIxMjhfdCk6IERvbid0IHVzZSBIQVZFX0xPTkdfTE9ORwoJdG8gZGVjaWRlLCBidXQgX19TSVpFT0ZfTE9OR19MT05HX18uCgoyMDA3LTAzLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZW11dGxzLmMgKHN0cnVjdCBfX2VtdXRsc19hcnJheSk6IE5ldy4KCShlbXV0bHNfZGVzdHJveSk6IFVzZSBpdCBpbnN0ZWFkIG9mIGNhc3RpbmcgZWxlbWVudCAwIGZyb20gdm9pZCouCgkoX19lbXV0bHNfZ2V0X2FkZHJlc3MpOiBMaWtld2lzZS4KCjIwMDctMDMtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IERvbid0IGRlbnkKCURFQ0xfRExMSU1QT1JUX1Agb24gZnVuY3Rpb25zLgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oOiBSZW1vdmUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKFNVQlRBUkdFVF9FTkNPREVfU0VDVElPTl9JTkZPKTogRG9uJ3QgdW5kZWYgZmlyc3QuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IFJlbW92ZS4KCShDT01NT05fQVNNX09QKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfQ09NTU9OKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0NPTU1PTik6IE5ldy4KCShBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IFVzZSBpMzg2X3BlX21heWJlX3JlY29yZF9leHBvcnRlZF9zeW1ib2wuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LWludGVyaXguaCAoU1VCVEFSR0VUX0VOQ09ERV9TRUNUSU9OX0lORk8pOgoJUmVuYW1lIGZyb20gVEFSR0VUX0VOQ09ERV9TRUNUSU9OX0lORk8uCgkqIGNvbmZpZy9pMzg2L25ldHdhcmUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogVHVybiBpZmRlZgoJb2YgVEFSR0VUX0RMTElNUE9SVF9ERUNMX0FUVFJJQlVURVMgaW50byBzdHJhaWdodCBpZi4KCShsZWdpdGltYXRlX2NvbnN0YW50X3ApOiBSZWplY3QgZGxsaW1wb3J0cy4KCShkbGxpbXBvcnRfbWFwLCBnZXRfZGxsaW1wb3J0X2RlY2wpOiBOZXcuCgkobGVnaXRpbWl6ZV9kbGxpbXBvcnRfc3ltYm9sKTogTmV3LgoJKGxlZ2l0aW1pemVfYWRkcmVzcywgaXg4Nl9leHBhbmRfbW92ZSk6IFVzZSBpdC4KCShUQVJHRVRfQklORFNfTE9DQUxfUCk6IFJlZGVmaW5lIGZvciBUQVJHRVRfRExMSU1QT1JUX0RFQ0xfQVRUUklCVVRFUy4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChETExfSU1QT1JUX0VYUE9SVF9QUkVGSVgpOiBSZW1vdmUuCgkoU1lNQk9MX0ZMQUdfRExMSU1QT1JULCBTWU1CT0xfUkVGX0RMTElNUE9SVF9QKTogTmV3LgoJKFNZTUJPTF9GTEFHX0RMTEVYUE9SVCwgU1lNQk9MX1JFRl9ETExFWFBPUlRfUCk6IE5ldy4KCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQpOiBPbmx5CglhY2NlcHQgc3ltYm9sczsgcmVqZWN0IGRsbGltcG9ydF9wIHN5bWJvbHMuCgkqIGNvbmZpZy9pMzg2L3V3aW4uaCAoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IFVzZQoJaTM4Nl9wZV9tYXliZV9yZWNvcmRfZXhwb3J0ZWRfc3ltYm9sLgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChETExfSU1QT1JUX1BSRUZJWCwgRExMX0VYUE9SVF9QUkVGSVgpOiBSZW1vdmUuCgkoaTM4Nl9wZV9kZXRlcm1pbmVfZGxsZXhwb3J0X3ApOiBSZW5hbWUgZnJvbSBpMzg2X3BlX2RsbGV4cG9ydF9wLgoJKGkzODZfcGVfZGV0ZXJtaW5lX2RsbGltcG9ydF9wKTogUmVuYW1lIGZyb20gaTM4Nl9wZV9kbGxpbXBvcnRfcDsKCXRydXN0IHRoZSBzZXR0aW5nIG9mIERFQ0xfRExMSU1QT1JUX1AuCgkoaTM4Nl9wZV9kbGxleHBvcnRfbmFtZV9wLCBpMzg2X3BlX2RsbGltcG9ydF9uYW1lX3ApOiBSZW1vdmUuCgkoaTM4Nl9wZV9tYXJrX2RsbGV4cG9ydCwgaTM4Nl9wZV9tYXJrX2RsbGltcG9ydCk6IFJlbW92ZS4KCShnZW5fc3RkY2FsbF9vcl9mYXN0Y2FsbF9zdWZmaXgpOiBSZXR1cm4gTlVMTCBpZiBubyBjaGFuZ2UgcmVxdWlyZWQ7Cgl0aWR5IHRoZSBhcmd1bWVudCBzY2FubmluZyBsb29wLgoJKGkzODZfcGVfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFNldCBTWU1CT0xfRkxBR19ETExJTVBPUlQgYW5kCglTWU1CT0xfRkxBR19ETExFWFBPUlQgaW4gU1lNQk9MX1JFRl9GTEFHUy4KCShpMzg2X3BlX3N0cmlwX25hbWVfZW5jb2RpbmcpOiBSZW1vdmUuCgkoaTM4Nl9wZV9iaW5kc19sb2NhbF9wKTogTmV3LgoJKGkzODZfcGVfc3RyaXBfbmFtZV9lbmNvZGluZ19mdWxsKTogVXNlIGRlZmF1bHRfc3RyaXBfbmFtZV9lbmNvZGluZy4KCShpMzg2X3BlX291dHB1dF9sYWJlbHJlZik6IFJlbW92ZS4KCShpMzg2X3BlX2FzbV9vdXRwdXRfYWxpZ25lZF9kZWNsX2NvbW1vbik6IE5ldy4KCShpMzg2X3BlX21heWJlX3JlY29yZF9leHBvcnRlZF9zeW1ib2wpOiBSZW5hbWUgZnJvbQoJaTM4Nl9wZV9yZWNvcmRfZXhwb3J0ZWRfc3ltYm9sOyBjaGVjayBmb3IgZGxsZXhwb3J0ZWQgc3ltYm9scy4KCjIwMDctMDMtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQG1ydG9jay51Y3NkLmVkdT4KCgkqIGdlbmd0eXBlLmMgKG9wcmludGYpOiBNb3N0bHkgcmV2ZXJ0IGNoYW5nZXMgZnJvbSAyMDA3LTAzLTI2OwoJYWRkIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgdnNucHJpbnRmIGNhbm5vdCBiZSB1c2VkLgoKMjAwNy0wMy0yOSAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzA2NjYKCSogdHJlZS5jIChidWlsZF9jb21wbGV4X3R5cGUpOiBXaGVuIGNyZWF0aW5nIHR5cGUgbmFtZXMgZm9yIERXQVJGMgoJZGVidWcgaW5mbywgY3JlYXRlIFRZUEVfREVDTHMgZm9yIFRZUEVfTkFNRSBpbnN0ZWFkIG9mCglJREVOVElGSUVSX05PREVzLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBVc2UgYnVpbGRfY29tcGxleF90eXBlIHdoZW4gYnVpbGRpbmcKCXByZWRlZmluZWQgY29tcGxleCB0eXBlcywgdG8gcHJlc2VydmUgY2Fub25pY2FsIHR5cGVzLgoKMjAwNy0wMy0yOSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogaWZjdnQuYyAoc3RydWN0IG5vY2VfaWZfaW5mbyk6IEFkZCB0aGVuX2Vsc2VfcmV2ZXJzZWQgZmllbGQuCgkobm9jZV9nZXRfYWx0X2NvbmRpdGlvbik6IExvb2sgYXQgaXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8KCXJldmVyc2UgdGhlIGNvbmRpdGlvbiBvciBub3QuCgkobm9jZV9nZXRfY29uZGl0aW9uKTogU3Vic3RpdHV0ZSB0aGUgdHJ1dGggZm9yIGxpZXMuCgkobm9jZV9maW5kX2lmX2Jsb2NrKTogU2V0IHRoZSB0aGVuX2Vsc2VfcmV2ZXJzZWQgZmllbGQuCgoyMDA3LTAzLTI5ICBMYXJzIFBvZXNjaGVsIDxsYXJzaUB3aDIudHUtZHJlc2Rlbi5kZT4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAubWQgKG1vdmRpKTogRG8gbm90IGFjY2VwdCBpbW1lZGlhdGVzIGFzIHRoZQoJZGVzdGluYXRpb24gb2YgdGhpcyBpbnNuLgoJKiBjb25maWcvZnIzMC9mcjMwLmMgKGZyMzBfbW92ZV9kb3VibGUpOiBVc2UgZW1pdF9tb3ZlX2luc24gcmF0aGVyCgl0aGFuIGNhbGxpbmcgZ2VuX3J0eF9TRVQgZGlyZWN0bHkuICBVc2UgcjAgdG8gaG9sZCB0aGUgdmFsdWUgb2YKCSdhZGRyZXNzICsgNCcgcmF0aGVyIHRoYW4gYSBzdGFjayBiYXNlZCB0ZW1wb3Jhcnkgd2hpY2ggY2FuIGJlCgltaXMtb3B0aW1pemVkIGF3YXkuCgoyMDA3LTAzLTI5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3NlY29uZGFyeV9pbnB1dF9yZWxvYWRfY2xhc3MsCglzMzkwX3NlY29uZGFyeV9vdXRwdXRfcmVsb2FkX2NsYXNzKTogRnVuY3Rpb25zIHJlbW92ZWQuCgkoczM5MF9zZWNvbmRhcnlfcmVsb2FkKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9TRUNPTkRBUllfUkVMT0FEKTogVGFyZ2V0IG1hY3JvIGRlZmluZWQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoU0VDT05EQVJZX0lOUFVUX1JFTE9BRF9DTEFTUywKCVNFQ09OREFSWV9PVVRQVVRfUkVMT0FEX0NMQVNTKTogTWFjcm8gZGVmaW5pdGlvbnMgcmVtb3ZlZC4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoInJlbG9hZF9vdXR0aSIsICJyZWxvYWRfb3V0ZGkiLAoJInJlbG9hZF9pbmRpIiwgInJlbG9hZF9pbnNpIiwgInJlbG9hZF9vdXQ8bW9kZT4iLCAicmVsb2FkX2luPG1vZGU+IiwKCSJyZWxvYWRfb3V0PG1vZGU+Iik6IEV4cGFuZGVycyByZW1vdmVkLgoJKCJyZWxvYWQ8bW9kZT5fcGx1cyIsICJyZWxvYWQ8bW9kZT5fbm9ub2ZmbWVtX2luIiwKCSJyZWxvYWQ8bW9kZT5fbm9ub2ZmbWVtX291dCIpOiBFeHBhbmRlcnMgYWRkZWQuCgoyMDA3LTAzLTI5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogcmVnbW92ZS5jIChvcHRpbWl6ZV9yZWdfY29weV8xKTogRG9uJ3QgcGVyZm9ybSBERVNULT5TUkMgcmVwYWlyCglhY3Rpb24gaWYgU1JDLT5ERVNUIHJlcGxhY2VtZW50IGZhaWxlZCBhbnl3YXkuCgoyMDA3LTAzLTI4ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW45LmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBBZGQuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoTUFYX09GSUxFX0FMSUdOTUVOVCk6IEZpeC4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTik6IFJlbW92ZWQgI3VuZGVmLgoKMjAwNy0wMy0yOCAgRHdhcmFrYW5hdGggUmFqYWdvcGFsICA8ZHdhcmFrLnJhamFnb3BhbEBhbWQuY29tPgoKCSogY29uZmlnLmdjYzogQWNjZXB0IGJhcmNlbG9uYSBhcyBhIHZhcmlhbnQgb2YgYW1kZmFtMTAuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGk6IExpa2V3aXNlLgoKMjAwNy0wMy0yOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUtZGZhLmMgKGdldF9yZWZfYmFzZV9hbmRfZXh0ZW50KTogRG8gbm90IGV4cGVjdCBwb3NpdGl2ZQoJb2Zmc2V0cyBmb3IgQklUX0ZJRUxEX1JFRiBhbmQgQ09NUE9ORU5UX1JFRi4KCjIwMDctMDMtMjggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUuYyAoaXNfZ2xvYmFsX3Zhcik6IE1vdmUgLi4uCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoaXNfZ2xvYmFsX3Zhcik6IC4uLiBoZXJlLgoJKiB0cmVlLmggKGlzX2dsb2JhbF92YXIpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgoyMDA3LTAzLTI4ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChYODZfVFVORV9QUk9NT1RFX0hJTU9ERV9JTVVMKTogTmV3IHR1bmluZwoJb3B0aW9uLgoJKFRBUkdFVF9UVU5FX1BST01PVEVfSElNT0RFX0lNVUwpOiBOZXcgZGVmaW5lLiBVc2UgbmV3IHR1bmluZyBvcHRpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl90dW5lX2ZlYXR1cmVzKTogSW5pdGlhbGl6ZSBuZXcKCXR1bmluZyBvcHRpb24uCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKHByb21vdGFibGVfYmluYXJ5X29wZXJhdG9yKTogVXNlCglUQVJHRVRfVFVORV9QUk9NT1RFX0hJTU9ERV9JTVVMLgoKMjAwNy0wMy0yOCAgR3JpZ29yeSBaYWdvcm9kbmV2IDxncmlnb3J5X3phZ29yb2RuZXZAbGludXguaW50ZWwuY29tPgoKCVBSIHRhcmdldC8zMTM4MAoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHVtaW52MTZxaTMpOiBVc2UgVU1JTiBpbnN0ZWFkIG9mIFVNQVguCgoyMDA3LTAzLTI4ICBMYXJzIFBvZXNjaGVsIDxsYXJzaUB3aDIudHUtZHJlc2Rlbi5kZT4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAubWQgKG1vdnNpX2ludGVybmFsKTogQ2hhbmdlIGRlc3RpbmF0aW9uCgljb25zdHJhaW50IGZyb20gbSB0byBWIGFuZCBhZGQgbSB0byB0aGUgZW5kLgoKMjAwNy0wMy0yOCAgQ2hyaXN0aWFuIEJydWVsICA8Y2hyaXN0aWFuLmJydWVsQHN0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZCAobW92c2lfaSk6IEZpeCB0eXBlIGF0dHJpYnV0ZS4KCjIwMDctMDMtMjggIENocmlzdGlhbiBCcnVlbCAgPGNocmlzdGlhbi5icnVlbEBzdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKG1vdnNpX2llKTogRml4IG1lbW9yeSBjb25zdHJhaW50cyBhdHRyaWJ1dGUgbGVuZ3RoLgoJKG1vdnNmX2llKTogTGlrZXdpc2UuCgoyMDA3LTAzLTI4ICBDaHJpc3RpYW4gQnJ1ZWwgIDxjaHJpc3RpYW4uYnJ1ZWxAc3QuY29tPgoKCSogY29uZmlnLmdjYzogQWRkIHNoNC0zMDAgdG8gbXVsdGlsaWIuCgkqIGNvbmZpZy9zaC90LW1saWItc2g0LTMwMDogTmV3IGZpbGUuCgoyMDA3LTAzLTI4ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImZpeF90cnVuYzxtb2RlPmRpMiIpOiBOZXcgZXhwYW5kZXIuCgkoImZpeF90cnVuYzxERlA6bW9kZT5kaTJfZGZwIik6IE5ldyBpbnNuIGRlZmluaXRpb24gcmVuYW1lZCBmcm9tCglmaXhfdHJ1bmM8bW9kZT5kaTIuCgkoImZpeHVuc190cnVuY2RkZGkyIiwgImZpeHVuc190cnVuY3RkZGkyIik6IFVzZQoJZml4X3RydW5jPERGUDptb2RlPmRpMl9kZnAgaW5zdGVhZCBvZiBmaXhfdHJ1bmM8bW9kZT5kaTIuCgkoImZpeF90cnVuY2Rmc2kyIiwgImZpeF90cnVuY3Nmc2kyIiwgImZpeHVuc190cnVuY2RkZGkyIiwKCSJmaXh1bnNfdHJ1bmN0ZGRpMiIpOiBXaGl0ZXNwYWNlIGZpeC4KCjIwMDctMDMtMjggIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmggKENBTExfQ09PS0lFX1JFVF9UUkFNUF9TSElGVCk6IE1vdmUgYWZ0ZXIKCXRoZSBkZWZpbml0aW9uIG9mIHN0cnVjdCBzaF9hcmdzLgoJKENBTExfQ09PS0lFX1JFVF9UUkFNUCwgQ0FMTF9DT09LSUVfU1RBQ0tTRVFfU0hJRlQsCglDQUxMX0NPT0tJRV9JTlRfUkVHX0dFVCk6IExpa2V3aXNlLgoKMjAwNy0wMy0yOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogaWZjdnQuYyAoY29uZF9leGVjX2ZpbmRfaWZfYmxvY2spOiBSZXR1cm4gRkFMU0UgaWYgbm8KCXRyYW5zZm9ybWF0aW9ucyBhcmUgYXBwbGllZCBzdWNjZXNzZnVsbHkuCgoyMDA3LTAzLTI3ICBEb3VnbGFzIEdyZWdvciAgPGRvdWcuZ3JlZ29yQGdtYWlsLmNvbT4KCgkqIHRyZWUuYyAodHJlZV9jb250YWluc19zdHJ1Y3QpOiBQZXJtaXQgNTEyIHRyZWUgY29kZXMuCgkqIHRyZWUuaCAodHJlZV9jb250YWluc19zdHJ1Y3QpOiBEaXR0by4KCShNQVhfVFJFRV9DT0RFUyk6IERpdHRvLgoJKHN0cnVjdCB0cmVlX2Jhc2UpOiBNYWtlIENPREUgMTYgYml0cywgaW5zdGVhZCBvZiA4IGJpdHMuIEFkZAoJU1BBUkUgbWVtYmVyIHRvIHN0b3JlIHJlbWFpbmluZyBwYWRkaW5nIGJpdHMuCgoyMDA3LTAzLTI3ICBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbWN1X3R5cGVzKTogTW92ZSBhdDkwdXNiODIgZGV2aWNlIHRvICdhdnI0JwoJYXJjaGl0ZWN0dXJlLgoKMjAwNy0wMy0yNyAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBjb25maWd1cmUuYWM6IEZpeCBhc3NlbWJsZXIgdGVzdCBmb3IgcG93ZXJwYyotbGludXggZGVjaW1hbCBmbG9hdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlIHVzaW5nIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgYXV0b2NvbmYuCgoyMDA3LTAzLTI3ICBBbmF0b2x5IFNva29sb3YgIDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX2hhcmRfcmVnbm9fbW9kZV9vayk6IERpc2FsbG93IFFJbW9kZSBpbiBzdGFjawoJcG9pbnRlciByZWdzLgoJKiBjb25maWcvYXZyL2F2ci5oIChSRUdJU1RFUl9OQU1FUyk6IFJlbmFtZSAiX19TUExfXyIgYW5kICJfX1NQSF9fIgoJcmVncyB0byAiX19TUF9MX18iIGFuZCAiX19TUF9IX18iLgoKMjAwNy0wMy0yNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1kZmEuYyAoZ2V0X3JlZl9iYXNlX2FuZF9leHRlbnQpOiBSZXBsYWNlIGJpdF9vZmZzZXQgYW5kCgljb21wdXRhdGlvbnMgd2l0aCBpdCB3aXRoIGEgSE9TVF9XSURFX0lOVCB2YXJpYWJsZS4KCjIwMDctMDMtMjYgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoREFSV0lOX01JTlZFUlNJT05fU1BFQyk6IEFkZAoJb2JqZWN0aXZlLWMtaGVhZGVyLCBvYmplY3RpdmUtYysrLWhlYWRlciBhbmQgb2JqYysrLWNwcC1vdXRwdXQKCXN1cHBvcnQuCgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChEQVJXSU5fTUlOVkVSU0lPTl9TUEVDKTogTGlrZXdpc2UuCgoyMDA3LTAzLTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zMTM2MQoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKElYODZfQlVJTFRJTl9QU0xMRFExMjgsIElYODZfQlVJTFRJTl9QU0xMVzEyOCwKCUlYODZfQlVJTFRJTl9QU0xMRDEyOCwgSVg4Nl9CVUlMVElOX1BTTExRMTI4LCBJWDg2X0JVSUxUSU5fUFNSQVcxMjgsCglJWDg2X0JVSUxUSU5fUFNSQUQxMjgsIElYODZfQlVJTFRJTl9QU1JMVzEyOCwgSVg4Nl9CVUlMVElOX1BTUkxEMTI4LAoJSVg4Nl9CVUlMVElOX1BTUkxRMTI4KTogTmV3LgoJKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogQWRkIHRoZW0uCgkoaXg4Nl9leHBhbmRfYnVpbHRpbik6IEV4cGFuZCB0aGVtLgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKGFzaHI8bW9kZT4zLCBsc2hyPG1vZGU+MywgYXNobDxtb2RlPjMpOiBNYWtlCglvcGVyYW5kIDIgYmUgVEltb2RlLgoJKiBjb25maWcvaTM4Ni9lbW1pbnRyaW4uaCAoX21tX3NsbGlfZXBpNjQsIF9tbV9zcmFpX2VwaTE2LAoJX21tX3NyYWlfZXBpMzIsIF9tbV9zcmxpX2VwaTE2LCBfbW1fc3JsaV9lcGkzMiwKCV9tbV9zcmxpX2VwaTY0KTogTWFyayBfX0IgY29uc3QuCgkoX21tX3NybGlfc2kxMjgsIF9tbV9zcmxpX3NpMTI4KTogRml4IGRpc2FibGVkIGlubGluZSB2ZXJzaW9ucy4KCShfbW1fc2xsX2VwaTE2LCBfbW1fc2xsX2VwaTMyLCBfbW1fc2xsX2VwaTY0LCBfbW1fc3JhX2VwaTE2LAoJX21tX3NyYV9lcGkzMiwgX21tX3NybF9lcGkxNiwgX21tX3NybF9lcGkzMiwgX21tX3NybF9lcGk2NCk6IFVzZQoJbmV3IHR3by12ZWN0b3Igc2hpZnQgYnVpbHRpbnMuCgoyMDA3LTAzLTI2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxMzQ1CgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV9iaW5hcnlfZXhwcik6IFR1cm4gcmFuZ2VzIGxpa2UKCVsrSU5GLCArSU5GKE9WRildIGludG8gVkFSWUlORy4KCjIwMDctMDMtMjYgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBnZW5ndHlwZS1wYXJzZS5jOiBOZXcgZmlsZS4KCSogZ2VuZ3R5cGUteWFjYy55OiBEZWxldGUuCgkqIGdlbmd0eXBlLWxleC5sOiBEb24ndCBpbmNsdWRlIGdlbmd0eXBlLXlhY2MuaC4KCURlZmluZSBZWV9ERUNMIGFuZCB5eXRlcm1pbmF0ZSBhcHByb3ByaWF0ZWx5IGZvciByZWN1cnNpdmUKCWRlc2NlbnQgcGFyc2VyLiAgeXlsdmFsIGlzIG5vdyBhIHN0cmluZyBvdXQtcGFyYW1ldGVyIHRvIHl5bGV4LgoJKEhXUywgRU9JRCk6IE5ldyBzaG9ydGhhbmQuCgkoSVdPUkQpOiBBZGQgYSBjb3VwbGUgbW9yZSB0eXBlcy4KCSh5eWxleCk6IEFkZCBhIHNldHVwIHN0YW56YS4gIFJlbW92ZSB0aGUgY29tcGxleCBydWxlcyBmb3IKCWRldGVjdGluZyBHVFknZWQgdHlwZXMgYW5kIHR5cGVkZWZzOyByZXBsYWNlIHdpdGggc2ltcGxlCglrZXl3b3JkIGRldGVjdG9ycy4gIEFkanVzdCBldmVyeXRoaW5nIGZvciB0aGUgY2hhbmdlZAoJZGVmaW5pdGlvbiBvZiB5eWx2YWwuICBJZ25vcmUgYWxsIHBwLWRpcmVjdGl2ZXMsIG5vdCBqdXN0ICNkZWZpbmUuCgkoeXllcnJvcik6IERlbGV0ZS4KCShwYXJzZV9maWxlKTogUmVuYW1lIHl5YmVnaW47IGRvIG5vdCBjYWxsIHl5cGFyc2UuCgkoeXllbmQpOiBOZXcuCgkqIGdlbmd0eXBlLmMgKHhhc3ByaW50Zik6IEV4cG9ydCBhZ2Fpbi4KCSh0aGlzX2ZpbGUpOiBOZXcuICBVc2UgZXZlcnl3aGVyZSBfX0ZJTEVfXyB3YXMgYmVpbmcgdXNlZC4KCShnZXRfbGFuZ19iaXRtYXApOiBTcGVjaWFsIGNhc2UgdHlwZXMgZGVmaW5lZCBpbiBnZW5ndHlwZS5jLgoJKGRvX3R5cGVkZWYsIG5ld19zdHJ1Y3R1cmUpOiBTdXBwcmVzcyBkZWZpbml0aW9uIG9mIGNlcnRhaW4gdHlwZXMuCgkobmV3X3N0cnVjdHVyZSk6IEltcHJvdmUgZGlhZ25vc3RpY3Mgb2YgZHVwbGljYXRlIGRlZmluaXRpb25zLgoJTWFrZSBzdXJlIGxvY2F0aW9uX3MgaXMgYXNzb2NpYXRlZCB3aXRoIGlucHV0LmguCgkobnJldmVyc2VfcGFpcnMsIGRlZmluZV9sb2NhdGlvbl9zdHJ1Y3R1cmVzKTogTmV3IGZ1bmN0aW9ucy4KCShtYWluKTogSW1wcm92ZSB0YWdnaW5nIG9mIGtsdWRnZSB0eXBlcy4gIFJlbW92ZSBvbGQga2x1ZGdlcwoJZm9yIGlucHV0LmggdHlwZXM7IHVzZSBkZWZpbmVfbG9jYXRpb25fc3RydWN0dXJlcy4KCSogZ2VuZ3R5cGUuaDogVXBkYXRlIHByb3RvdHlwZXMuICBEZWZpbmUgdG9rZW4gY29kZXMgaGVyZS4KCSogTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBnZW5ndHlwZS15YWNjLgoJQWRkIHJ1bGVzIGZvciBnZW5ndHlwZS1wYXJzZS5vLiAgQWRqdXN0IHJ1bGVzIGZvciBnZW5ndHlwZS1sZXgubwoJYW5kIGdlbmd0eXBlLgoJKiBiaXRtYXAuaCAoc3RydWN0IGJpdG1hcF9oZWFkX2RlZik6IENvYWxlc2NlIGRlZmluaXRpb25zLAoJYWRkIEdUWSgoc2tpcCkpIHRvIHRoZSBmaWVsZCB0aGF0J3Mgb25seSBjb25kaXRpb25hbGx5IHRoZXJlLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCB0aGF0IEJpc29uIGlzIG5vIGxvbmdlciByZXF1aXJlZAoJdW5sZXNzIGJ1aWxkaW5nIHRyZWVsYW5nLgoKCSogZ2VuZ3R5cGUuYzogRG9uJ3QgaW5jbHVkZSBndHlwLWdlbi5oLgoJKHNyY2Rpcik6IERlY2xhcmUgaGVyZS4KCShiYXNlX2ZpbGVzLCBsYW5nX2Rpcl9uYW1lcyk6IEFsbG9jYXRlIGR5bmFtaWNhbGx5LgoJKGd0X2ZpbGVzLCBudW1fZ3RfZmlsZXMsIG51bV9sYW5nX2RpcnMpOiBOZXcgZ2xvYmFscy4KCShtZWFzdXJlX2lucHV0X2xpc3QsIHJlYWRfaW5wdXRfbGluZSwgcmVhZF9pbnB1dF9saXN0KQoJKHNldF9sYW5nX2JpdG1hcCk6IE5ldyBmdW5jdGlvbnMuCgkoZ2V0X2Jhc2VfZmlsZV9iaXRtYXApOiBSZW5hbWUgZ2V0X2xhbmdfYml0bWFwIGFuZCBkcmFzdGljYWxseQoJc2ltcGxpZnksIHJlbHlpbmcgb24gcmVhZF9pbnB1dF9saXN0IHRvIHNldCB1cCB0aGUgYml0bWFwcy4KCShtYWluKTogQXJndW1lbnRzIGFyZSBubyBsb25nZXIgdW51c2VkLiAgQ2hlY2sgZm9yIGNvcnJlY3QgbnVtYmVyCglvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLCBzZXQgc3JjZGlyIGFuZCBzcmNkaXJfbGVuLCB0aGVuIGNhbGwKCXJlYWRfaW5wdXRfbGlzdCwgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuICBObyBuZWVkIHRvIHdvcnJ5CglhYm91dCBkdXBsaWNhdGVzIGluIG1haW4gbG9vcC4KCSogY29uZmlndXJlLmFjOiBTaW1wbGlmeSB0aGUgY2FsY3VsYXRpb24gb2YgYWxsX2d0ZmlsZXMuCglQdXQgbGFuZ3VhZ2UgdGFncyBpbiB0aGVyZS4gIERvbid0IHNldCBvciBzdWJzdGl0dXRlCglhbGxfZ3RmaWxlc19maWxlc19sYW5ncyBvciBhbGxfZ3RmaWxlc19maWxlc19mcmFncy4KCSogTWFrZWZpbGUuaW46IFJldmFtcCB0aGUgd2F5IGdlbmd0eXBlIGlzIGludm9rZWQsIG5vdyB0aGF0IGl0Cgl0YWtlcyBhIGZpbGUgb24gaXRzIGNvbW1hbmQgbGluZSB3aXRoIGEgbXVjaCBzaW1wbGVyIGZvcm1hdC4KCVJlbW92ZSBvciByZXBsYWNlIHdpdGggZ3R5cC1pbnB1dC5saXN0IGFsbCByZWZlcmVuY2VzIHRvIGd0eXAtZ2VuLmguCgkoR1RGSUxFUyk6IFJlbW92ZSBkdXBsaWNhdGVzIGFuZCBDIHNvdXJjZSBmaWxlcy4KCSogYy1jb25maWctbGFuZy5pbiwgY3AvY29uZmlnLWxhbmcuaW4sIG9iamMvY29uZmlnLWxhbmcuaW4KCSogb2JqY3AvY29uZmlnLWxhbmcuaW46IEFkZCBjLXByYWdtYS5oIHRvIGd0ZmlsZXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGdlbmd0eXBlLmg6IFJlbW92ZSBhbGwgdHlwZSBkZWZpbml0aW9ucyB0byBnZW5ndHlwZS5jOyBsZWF2ZQoJb25seSBkZWZpbml0aW9ucyBvZiBvcHRpb25zX3AsIHR5cGVfcCwgYW5kIHBhaXJfcCBhcyBvcGFxdWUKCXBvaW50ZXJzLiAgVXBkYXRlIHByb3RvdHlwZXMuCgkqIGdlbmd0eXBlLmM6IE1hbnkgdHlwZSBkZWZpbml0aW9ucyBtb3ZlZCBoZXJlIGZyb20gZ2VuZ3R5cGUuaC4KCUNvbnNvbGlkYXRlIHR5cGUgZGVmaW5pdGlvbnMgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4KCSh4dmFzcHJpbnRmKTogRGVsZXRlLgoJKHhhc3ByaW50Zik6IE1ha2Ugc3RhdGljLgoJKGNyZWF0ZV9uZXN0ZWRfcG9pbnRlcl9vcHRpb24pOiBBZGQgJ25leHQnIHBhcmFtZXRlci4KCShjcmVhdGVfZmllbGRfYWxsLCBjcmVhdGVfZmllbGRfYXQpOiBOZXcgZnVuY3Rpb25zLgoJKGNyZWF0ZV9maWVsZCk6IE5vdyBhIHRoaW4gd3JhcHBlciBhcm91bmQgY3JlYXRlX2ZpZWxkX2FsbC4KCShjcmVhdGVfb3B0aW9uYWxfZmllbGQpOiBSZW5hbWUgY3JlYXRlX29wdGlvbmFsX2ZpZWxkXyBhbmQgYWRkCglsaW5lIGFyZ3VtZW50LiAgT3JpZ2luYWwgbmFtZSBpcyBub3cgYSBtYWNybyB3aGljaCBzdXBwbGllcwoJX19MSU5FX18uCgkob3ByaW50Zik6IFVzZSB2c25wcmludGYgZGlyZWN0bHkuCgkoY2xvc2Vfb3V0cHV0X2ZpbGVzKTogVXNlIGZhdGFsIHJhdGhlciB0aGFuIHBlcnJvci9leGl0LgoJKG5vdGVfZGVmX3ZlYywgbm90ZV9kZWZfdmVjX2FsbG9jKTogVXNlIGNyZWF0ZV9maWVsZF9hdC4KCShtYWluKTogU2V0IHByb2duYW1lLiAgRG9uJ3QgdXNlIGV4aXQuCgkqIGdlbmd0eXBlLXlhY2MueSAoc3RydWN0X2ZpZWxkcyk6IFVzZSBjcmVhdGVfZmllbGRfYXQuCgkob3B0aW9uLCBvcHRpb25zZXFvcHQpOiBEZWxldGUuCgkob3B0aW9uc2VxKTogQ29uc29saWRhdGUgcHJvZHVjdGlvbnMgZnJvbSBvcHRpb24gaGVyZSBzbyB3ZQoJY2FuIHVzZSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gY3JlYXRlX29wdGlvbi4KCgkqIGdlbmd0eXBlLWxleC5sOiBEaXN0aW5ndWlzaCB1bmlvbnMgZnJvbSBzdHJ1Y3R1cmVzIGluIHRoZQoJdG9rZW4gdHlwZS4gIERvbid0IGNhbGwgZmluZF9zdHJ1Y3R1cmU7IHJldHVybiB0aGUgdGFnIGFzIGEgc3RyaW5nLgoJKiBnZW5ndHlwZS15YWNjLnk6IEFkZCBuZXcgdG9rZW4gdHlwZXMgRU5UX1RZUEVERUZfVU5JT04gYW5kCglFTlRfVU5JT04uICBUeXBlIG9mIHRoZXNlLCBFTlRfVFlQRURFRl9TVFJVQ1QsIGFuZCBFTlRfU1RSVUNUIGlzCglzdHJpbmcuICBSZW9yZ2FuaXplIHR5cGVkZWZfc3RydWN0IHByb2R1Y3Rpb24gYWNjb3JkaW5nbHkuCglVc2UgY3JlYXRlX25lc3RlZF9wdHJfb3B0aW9uLgoJKiBnZW5ndHlwZS5jIChjcmVhdGVfbmVzdGVkX3B0cl9vcHRpb24pOiBOZXcgZnVuY3Rpb24uCgkqIGdlbmd0eXBlLmg6IERlY2xhcmUgaXQuCgoJKiBnZW5ndHlwZS5oIChzdHJ1Y3QgdHlwZSk6IFJlcGxhY2UgJ3NjJyB3aXRoIGJvb2xlYW4sIHNjYWxhcl9pc19jaGFyLgoJKHN0cmluZ190eXBlKTogRG9uJ3QgZGVjbGFyZS4KCShkb19zY2FsYXJfdHlwZWRlZik6IERlY2xhcmUuCgkoY3JlYXRlX3NjYWxhcl90eXBlKTogVXBkYXRlIHByb3RvdHlwZS4KCSogZ2VuZ3R5cGUuYyAoc3RyaW5nX3R5cGUpOiBNYWtlIHN0YXRpYy4KCShzY2FsYXJfbm9uY2hhciwgc2NhbGFyX2NoYXIpOiBOZXcuCgkoZG9fc2NhbGFyX3R5cGVkZWYpOiBFeHBvcnQuICBBbHdheXMgdXNlIHNjYWxhcl9ub25jaGFyIGZvciB0aGUgdHlwZS4KCShyZXNvbHZlX3R5cGVkZWYpOiBVc2Ugc2NhbGFyX25vbmNoYXIgZm9yIGVycm9yIHJlY292ZXJ5LgoJKGNyZWF0ZV9zY2FsYXJfdHlwZSk6IFJlbW92ZSBuYW1lX2xlbiBmaWVsZC4gIFJldHVybiBzY2FsYXJfY2hhcgoJb3Igc2NhbGFyX25vbmNoYXIgYXMgYXBwcm9wcmlhdGUuCgkoYWRqdXN0X2ZpZWxkX3R5cGUpOiBMb29rIGF0IHNjYWxhcl9pc19jaGFyIGJvb2xlYW4gdG8gZGVjaWRlIHdoZXRoZXIKCXRvIHVzZSBzdHJpbmdfdHlwZS4KCSh0aHJvdWdob3V0KTogVXNlIHNjYWxhcl9ub25jaGFyIGluc3RlYWQgb2YgY2FsbGluZwoJY3JlYXRlX3NjYWxhcl90eXBlLCB3aGVuZXZlciBwb3NzaWJsZS4KCShtYWluKTogSW5pdGlhbGl6ZSBzY2FsYXJfY2hhciBhbmQgc2NhbGFyX25vbmNoYXIgYmVmb3JlIGNhbGxpbmcKCWdlbl9ydHhfbmV4dC4KCSogZ2VuZ3R5cGUtbGV4Lmw6IEFkanVzdCBmb3IgcmVtb3ZhbCBvZiBzZWNvbmQgYXJndW1lbnQgdG8KCWNyZWF0ZV9zY2FsYXJfdHlwZS4gIFVzZSB5eWx2YWwucyBpbnN0ZWFkIG9mIHl5bHZhbC50IHdoZW4KCXJldHVybmluZyBTQ0FMQVIuCgkqIGdlbmd0eXBlLXlhY2MueTogVHlwZSBvZiBTQ0FMQVIgaXMgc3RyaW5nLiAgQ2FsbAoJY3JlYXRlX3NjYWxhcl90eXBlIGZyb20gdHlwZTpTQ0FMQVIgcnVsZS4gIEFkanVzdCBmb3IgcmVtb3ZhbCBvZgoJc2Vjb25kIGFyZ3VtZW50IHRvIGNyZWF0ZV9zY2FsYXJfdHlwZS4KCgkqIHZlYy5oOiBSZW1vdmUgYWxsICNpZiBJTl9HRU5HVFlQRSBibG9ja3MuCglBZGQgY29tbWVudCBzYXlpbmcgdGhhdCBjaGFuZ2VzIG1heSByZXF1aXJlIGFkanVzdG1lbnRzIHRvIGdlbmd0eXBlLgoJKiBnZW5ndHlwZS5jOiBEb24ndCBpbmNsdWRlIGNvcmV0eXBlcy5oIG9yIHRtLmguCglBZGQgY29tbWVudCB0byBpbmNsdXNpb24gb2YgZXJyb3JzLmguCgkobm90ZV9kZWZfdmVjLCBub3RlX2RlZl92ZWNfYWxsb2MpOiBOZXcgZnVuY3Rpb25zLgoJKiBnZW5ndHlwZS5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbnMuCgkqIGdlbmd0eXBlLWxleC5sOiBEb24ndCBpbmNsdWRlIGNvcmV0eXBlcy5oLgoJKFlZX0lOUFVULCBtYWNyb19pbnB1dCwgcHVzaF9tYWNyb19leHBhbnNpb24sIG1hbmdsZV9tYWNyb19uYW1lKToKCURlbGV0ZS4KCSh1cGRhdGVfbGluZW5vKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHByb3RvdHlwZS4KCShERUZfVkVDXyogcnVsZXMpOiBTaW1wbGlmeSB1c2luZyBub3RlX2RlZl92ZWMgLyBub3RlX2RlZl92ZWNfYWxsb2MuCgkoVkVDIHJ1bGUpOiBKdXN0IHJldHVybiBWRUNfVE9LRU4uCgkqIGdlbmd0eXBlLXlhY2MueSAoVkVDX1RPS0VOKTogTmV3IHRva2VuIHR5cGUuCgkodHlwZSk6IEFkZCBhIHByb2R1Y3Rpb24gZm9yIFZFQyhhLGIpLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCgkqIGdlbmd0eXBlLWxleC5sOiBSZW1vdmUgcnVsZXMgZm9yIHBhcnNpbmcgcG9pbnRlci10by1mdW5jdGlvbgoJdHlwZWRlZnMgdGhhdCB1c2UgdGhlIG9sZCBQQVJBTVMgbWFjcm8uCgoJKiBnZW5ndHlwZS1sZXgubDogUmVtb3ZlIGFsbCBydWxlcyBhbmQgc3RhdGVzIHJlbGF0aW5nIHRvIHlhY2MKCWlucHV0IGZpbGVzLgoJKiBnZW5ndHlwZS15YWNjLnk6IFNpbWlsYXJseS4KCSogZ2VuZ3R5cGUuYyAobm90ZV95YWNjX3R5cGUpOiBEZWxldGUgZnVuY3Rpb24uCgkqIGdlbmd0eXBlLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoKMjAwNy0wMy0yNiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IFJlcG9ydCBwcmVjaXNpb24gb2YKCXVubmFtZWQgaW50ZWdlciB0eXBlcy4KCjIwMDctMDMtMjYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIGlmY3Z0LmMgKG5vY2VfdHJ5X3N0b3JlX2ZsYWdfY29uc3RhbnRzKTogRG9uJ3QgY2hlY2sKCW5vX25ld19wc2V1ZG9zIGhlcmUuCgkobm9jZV90cnlfc3RvcmVfZmxhZ19jb25zdGFudHMpOiBEb24ndCBjaGVjayBub19uZXdfcHNldWRvcy4KCShub2NlX3RyeV9hZGRjYywgbm9jZV90cnlfc3RvcmVfZmxhZ19tYXNrLCBub2NlX3RyeV9jbW92ZV9hcml0aCwKCW5vY2VfdHJ5X2Ntb3ZlX2FyaXRoLCBub2NlX3RyeV9taW5tYXgsIG5vY2VfdHJ5X2FicywKCW5vY2VfdHJ5X3NpZ25fbWFzayk6IExpa2V3aXNlLgoJKGlmX2NvbnZlcnQpOiBDaGVjayBub19uZXdfcHNldWRvcyBoZXJlLgoKCShjb25kX2V4ZWNfcHJvY2Vzc19pZl9ibG9jaywgbm9jZV9wcm9jZXNzX2lmX2Jsb2NrLCBmaW5kX2lmX2Jsb2NrKToKCVJlbW92ZSBwcm90b3R5cGVzLgoJKHN0cnVjdCBub2NlX2lmX2luZm8pOiBBZGQgdGhlbl9iYiwgZWxzZV9iYiwgam9pbl9iYiBtZW1iZXJzLgoJKG5vY2VfZ2V0X2NvbmRpdGlvbik6IEhhbmRsZSBuZXcgdGhlbl9lbHNlX3JldmVyc2VkIGFyZ3VtZW50LgoJKG5vY2VfaW5pdF9pZl9pbmZvKTogUmVtb3ZlLCBmb2xkIGludG8gbm9jZV9maW5kX2lmX2Jsb2NrLgoJKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IFRha2UgYSBzdHJ1Y3Qgbm9jZV9pZl9pbmZvIGFzIHRoZQoJYXJndW1lbnQuICBEb24ndCBzZXQgdXAgb25lIGJhc2VkIG9uIGNlX2lmX2luZm8uICBVcGRhdGUgcG9pbnRlcgoJcmVmZXJlbmNlcyBhY2NvcmRpbmdseS4KCShjb25kX21vdmVfcHJvY2Vzc19pZl9ibG9jayk6IExpa2V3aXNlLgoJKHByb2Nlc3NfaWZfYmxvY2spOiBSZW1vdmVkLgoJKGZpbmRfaWZfYmxvY2spOiBSZW1vdmVkLiAgTW92ZSBmdW5jdGlvbmFsaXR5IHR3byBuZXcgZnVuY3Rpb25zLAoJbm9jZV9maW5kX2lmX2Jsb2NrIGFuZCBjb25kX2V4ZWNfZmluZF9pZl9ibG9jay4KCShub2NlX2ZpbmRfaWZfYmxvY2spOiBOZXcgZnVuY3Rpb24uICBCZSBhd2FyZSBvZiBJRi1USEVOLUpPSU4KCWJsb2NrcyBhbmQgdGhlIHN5bW1ldHJpYyBJRi1FTFNFLUpPSU4gY2FzZS4KCShjb25kX2V4ZWNfZmluZF9pZl9ibG9jayk6IEFsc28gbmV3IGZ1bmN0aW9uIG1vc3RseSBiYXNlZCBvbiBvbGQKCWZpbmRfaWZfYmxvY2sgYW5kIHByb2Nlc3NfaWZfYmxvY2suCgkoZmluZF9pZl9oZWFkZXIpOiBSZXBsYWNlIGZpbmRfaWZfYmxvY2sgY2FsbCB3aXRoIHNlcGFyYXRlbHkKCWd1YXJkZWQgY2FsbHMgdG8gbm9jZV9maW5kX2lmX2Jsb2NrIGFuZCBjb25kX2V4ZWNfZmluZF9pZl9ibG9jay4KCShmaW5kX2NvbmRfdHJhcCk6IFVwZGF0ZSBub2NlX2dldF9jb25kaXRpb24gY2FsbC4KCShkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCjIwMDctMDMtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChJWDg2X0JVSUxUSU5fQ01QTkVQRCwgSVg4Nl9CVUlMVElOX0NNUE5FU0QpOgoJUmVtb3ZlLgoJKElYODZfQlVJTFRJTl9QU0xMVzEyOCwgSVg4Nl9CVUlMVElOX1BTTExEMTI4LCBJWDg2X0JVSUxUSU5fUFNMTFExMjgsCglJWDg2X0JVSUxUSU5fUFNSQVcxMjgsIElYODZfQlVJTFRJTl9QU1JBRDEyOCwgSVg4Nl9CVUlMVElOX1BTUkxXMTI4LAoJSVg4Nl9CVUlMVElOX1BTUkxEMTI4LCBJWDg2X0JVSUxUSU5fUFNSTFExMjgpOiBSZW1vdmUuCgkoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBSZW1vdmUgdjhoaV9mdHlwZV92OGhpX3YyZGkgYW5kCgl2NHNpX2Z0eXBlX3Y0c2lfdjJkaS4gIFJlbW92ZSBfX2J1aWx0aW5faWEzMl9wc2xsdzEyOCwKCV9fYnVpbHRpbl9pYTMyX3BzbGxkMTI4LCBfX2J1aWx0aW5faWEzMl9wc2xscTEyOCwKCV9fYnVpbHRpbl9pYTMyX3Bzcmx3MTI4LCBfX2J1aWx0aW5faWEzMl9wc3JsZDEyOCwKCV9fYnVpbHRpbl9pYTMyX3BzcmxxMTI4LCBfX2J1aWx0aW5faWEzMl9wc3JhdzEyOCBhbmQKCV9fYnVpbHRpbl9pYTMyX3BzcmFkMTI4IGJ1aWx0aW5zLgoKMjAwNy0wMy0yNiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIHJlZy1zdGFjay5jIChyZXBsYWNlX3JlZyk6IFVzZSBJTl9SQU5HRSBtYWNybyBpbiBnY2NfYXNzZXJ0KCkuCgkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCgkoZGVmaW5lX2NvbnN0cmFpbnQgIkkiKTogVXNlIElOX1JBTkdFIG1hY3JvLgoJKGRlZmluZV9jb25zdHJhaW50ICJKIik6IERpdHRvLgoJKGRlZmluZV9jb25zdHJhaW50ICJLIik6IERpdHRvLgoJKGRlZmluZV9jb25zdHJhaW50ICJNIik6IERpdHRvLgoJKGRlZmluZV9jb25zdHJhaW50ICJOIik6IERpdHRvLgoJKGRlZmluZV9jb25zdHJhaW50ICJPIik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kCgkoZGVmaW5lX3ByZWRpY2F0ZSAicmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIik6IFVzZSBJTl9SQU5HRSBtYWNyby4KCShkZWZpbmVfcHJlZGljYXRlICJjb25zdF8wX3RvXzNfb3BlcmFuZCIpOiBEaXR0by4KCShkZWZpbmVfcHJlZGljYXRlICJjb25zdF8wX3RvXzdfb3BlcmFuZCIpOiBEaXR0by4KCShkZWZpbmVfcHJlZGljYXRlICJjb25zdF8wX3RvXzE1X29wZXJhbmQiKTogRGl0dG8uCgkoZGVmaW5lX3ByZWRpY2F0ZSAiY29uc3RfMF90b182M19vcGVyYW5kIik6IERpdHRvLgoJKGRlZmluZV9wcmVkaWNhdGUgImNvbnN0XzBfdG9fMjU1X29wZXJhbmQiKTogRGl0dG8uCgkoZGVmaW5lX3ByZWRpY2F0ZSAiY29uc3RfMV90b18zMV9vcGVyYW5kIik6IERpdHRvLgoJKGRlZmluZV9wcmVkaWNhdGUgImNvbnN0XzJfdG9fM19vcGVyYW5kIik6IERpdHRvLgoJKGRlZmluZV9wcmVkaWNhdGUgImNvbnN0XzRfdG9fN19vcGVyYW5kIik6IERpdHRvLgoKMjAwNy0wMy0yNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBBbHdheXMgY2xvYmJlciBMUgoJaW4gU0ltb2RlIGZvciBzYXZlX3dvcmxkLgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKHNhdmVfd29ybGQsIHJlc3RvcmVfd29ybGQpOiBDb252ZXJ0IHRvCglMUiBoYXJkIHJlZy4KCjIwMDctMDMtMjUgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzA3ODQKCSogZm9sZC1jb25zdC5jIChmb2xkX3Rlcm5hcnkpOiBIYW5kbGUgQ09OU1RSVUNUT1IgaW4gY2FzZQoJQklUX0ZJRUxEX1JFRi4KCjIwMDctMDMtMjUgIFJldml0YWwgRXJlcyAgPGVyZXNAaWwuaWJtLmNvbT4KCgkqIHRyZWUtaWYtY29udi5jIChpZl9jb252ZXJ0aWJsZV9naW1wbGVfbW9kaWZ5X3N0bXRfcCk6CgkgIEZvbGQgbW92ZW1lbnRfcG9zc2liaWxpdHkgZnVuY3Rpb24gaW50byBpdC4KCjIwMDctMDMtMjUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLm1kIChsb2FkX21hY2hvX3BpY2Jhc2UpOiBJZ25vcmUgb3BlcmFuZCAwLgoJKGxvYWRfbWFjaG9fcGljYmFzZV97c2ksZGl9KTogQ29udmVydCB0byBMUiBoYXJkIHJlZy4KCShjYWxsX2luZGlyZWN0X25vbmxvY2FsX2RhcndpbjY0KTogU2FtZS4KCShjYWxsX25vbmxvY2FsX2RhcndpbjY0KTogU2FtZS4KCShjYWxsX3ZhbHVlX2luZGlyZWN0X25vbmxvY2FsX2RhcndpbjY0KTogU2FtZS4KCShjYWxsX3ZhbHVlX25vbmxvY2FsX2RhcndpbjY0KTogU2FtZS4KCShzaWJjYWxsX25vbmxvY2FsX2RhcndpbjY0KTogU2FtZS4KCShzaWJjYWxsX3ZhbHVlX25vbmxvY2FsX2RhcndpbjY0KTogU2FtZS4KCShzaWJjYWxsX3N5bWJvbGljXzY0KTogU2FtZS4KCShzaWJjYWxsX3ZhbHVlX3N5bWJvbGljXzY0KTogU2FtZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2xlZ2l0aW1pemVfdGxzX2FkZHJlc3MpOiBSZW1vdmUKCUxSIHBzZXVkby4KCShyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSk6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAocmVzdG9yZV93b3JsZCk6IENvbnZlcnQgdG8gTFIgaGFyZCByZWcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtdWxoX2NhbGwpOiBDb252ZXJ0IHRvIExSIGhhcmQgcmVnLgoJKG11bGxfY2FsbCk6IFNhbWUuCgkoZGl2c3NfY2FsbCk6IFNhbWUuCgkoZGl2dXNfY2FsbCk6IFNhbWUuCgkocXVvc3NfY2FsbCk6IFNhbWUuCgkocXVvdXNfY2FsbCk6IFNhbWUuCgkobG9hZF90b2NfdjRfcGljX3NpKTogU2FtZQoJKGxvYWRfdG9jX3Y0X1BJQ18xKTogU2FtZS4KCShsb2FkX3RvY192NF9QSUNfMWIpOiBTYW1lLgoJKGNhbGxfaW5kaXJlY3RfYWl4ezMyLDY0fSk6IFNhbWUuCgkoY2FsbF92YWx1ZV9pbmRpcmVjdF9haXh7MzIsNjR9KTogU2FtZS4KCShjYWxsKTogU2FtZS4KCShjYWxsX3ZhbHVlKTogU2FtZS4KCShjYWxsX2xvY2FsezMyLDY0fSk6IFNhbWUuCgkoY2FsbF92YWx1ZV9sb2NhbHszMiw2NH0pOiBTYW1lLgoJKGNhbGxfaW5kaXJlY3Rfbm9ubG9jYWxfYWl4ezMyLDY0fSk6IFNhbWUuCgkoY2FsbF9ub25sb2NhbF9haXh7MzIsNjR9KTogU2FtZS4KCShjYWxsX3ZhbHVlX2luZGlyZWN0X25vbmxvY2FsX2FpeHszMiw2NH0pOiBTYW1lLgoJKGNhbGxfdmFsdWVfbm9ubG9jYWxfYWl4ezMyLDY0fSk6IFNhbWUuCgkoY2FsbF9pbmRpcmVjdF9ub25sb2NhbF9zeXN2PG1vZGU+KTogU2FtZS4KCShjYWxsX25vbmxvY2FsX3N5c3Y8bW9kZT4pOiBTYW1lLgoJKGNhbGxfdmFsdWVfaW5kaXJlY3Rfbm9ubG9jYWxfc3lzdjxtb2RlPik6IFNhbWUuCgkoY2FsbF92YWx1ZV9ub25sb2NhbF9zeXN2PG1vZGU+KTogU2FtZS4KCShzaWJjYWxsKTogU2FtZS4KCShzaWJjYWxsX2xvY2FsezMyLDY0fSk6IFNhbWUuCgkoc2liY2FsbF92YWx1ZV9sb2NhbHszMiw2NH0pOiBTYW1lLgoJKHNpYmNhbGxfbm9ubG9jYWxfYWl4ezMyLDY0fSk6IFNhbWUuCgkoc2liY2FsbF92YWx1ZV9ub25sb2NhbF9haXh7MzIsNjR9KTogU2FtZS4KCShzaWJjYWxsX25vbmxvY2FsX3N5c3Y8bW9kZT4pOiBTYW1lLgoJKHNpYmNhbGxfdmFsdWUpOiBTYW1lLgoJKHNpYmNhbGxfdmFsdWVfbm9ubG9jYWxfc3lzdjxtb2RlPik6IFNhbWUuCgoyMDA3LTAzLTI0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtIChkaXYwKTogVXNlIEFSTV9GVU5DX1NUQVJUIGFuZCBkb19wdXNoLgoJKiBjb25maWcvYXJtL2xpbnV4LWVhYmkuaDogUmVtb3ZlIGxlZ2FjeSBzeXNjYWxsIGhhY2suCgoyMDA3LTAzLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvY29uc3RyYWludHMubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvaWE2NC9wcmVkaWNhdGVzLm1kOiBSZXBsYWNlIENPTlNUX09LX0ZPUl8/IHdpdGgKCXNhdGlzZmllc19jb25zdHJhaW50Xz8uCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9tb3ZlX29rLCBpYTY0X2xlZ2l0aW1hdGVfY29uc3RhbnRfcCwKCWlhNjRfcmVsb2FkX2dwLCBzcGlsbF9yZXN0b3JlX21lbSwgaWE2NF9leHBhbmRfcHJvbG9ndWUsCglpYTY0X2V4cGFuZF9lcGlsb2d1ZSwgaWE2NF9zcGxpdF9yZXR1cm5fYWRkcl9ydHgsIGlhNjRfcnR4X2Nvc3RzLAoJaWE2NF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCShpYTY0X2NvbnN0X29rX2Zvcl9sZXR0ZXJfcCk6IFJlbW92ZS4KCShpYTY0X2NvbnN0X2RvdWJsZV9va19mb3JfbGV0dGVyX3ApOiBSZW1vdmUuCgkoaWE2NF9leHRyYV9jb25zdHJhaW50KTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IFJlbW92ZS4KCShDT05TVF9PS19GT1JfSSwgQ09OU1RfT0tfRk9SX0osIENPTlNUX09LX0ZPUl9LLCBDT05TVF9PS19GT1JfTCwKCUNPTlNUX09LX0ZPUl9NLCBDT05TVF9PS19GT1JfTiwgQ09OU1RfT0tfRk9SX08sIENPTlNUX09LX0ZPUl9QLAoJQ09OU1RfT0tfRk9SX0xFVFRFUl9QLCBDT05TVF9ET1VCTEVfT0tfRk9SX0csCglDT05TVF9ET1VCTEVfT0tfRk9SX0xFVFRFUl9QLCBFWFRSQV9DT05TVFJBSU5ULAoJRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQpOiBSZW1vdmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQ6IEluY2x1ZGUgY29uc3RyaWFudHMubWQuICBSZXBsYWNlCglDT05TVF9PS19GT1JfPyB3aXRoIHNhdGlzZmllc19jb25zdHJhaW50Xz8uCgoyMDA3LTAzLTIzICBNaWNoYWVsIE1laXNzbmVyICA8bWljaGFlbC5tZWlzc25lckBhbWQuY29tPgoJICAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9kZnAtYml0LmggKERQRF9CSURfTkFNRSk6IE5ldyBtYWNybyB0byBnaXZlIGVpdGhlciB0aGUKCURQRCBvciBCSUQgbmFtZS4KCShuYW1lIG1hY3Jvcyk6IFVzZSBEUERfQklEX05BTUUgdG8gY29udmVydCBuYW1lcyBwcm9wZXJseS4KCgkqIG9wdGFicy5jIChERUNJTUFMX1BSRUZJWCk6IFByZWZpeCBzdHJpbmcgdG8gdXNlIGZvciB0aGUgY3VycmVudAoJZGVjaW1hbCBmbG9hdGluZyBwb2ludCBmb3JtYXQuCgkoaW5pdF9mbG9hdGluZ19saWJmdW5jcyk6IENoYW5nZSBkZWNpbWFsIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkKCWhhdmUgYSAiYmlkXyIgcHJlZml4IGlmIHRoZSBkZWNpbWFsIHN5c3RlbSB1c2VzIHRoZSBCSUQgZm9ybWF0LAoJYW5kICJkcGRfIiBwcmVmaXggaWYgdGhlIGRlY2ltYWwgc3lzdGVtIHVzZXMgdGhlIERQRCBmb3JtYXQuCgkoaW5pdF9pbnRlcmNsYXNzX2NvbnZfbGliZnVuY3MpOiBEaXR0by4KCShpbml0X2ludHJhY2xhc3NfY29udl9saWJmdW5jcyk6IERpdHRvLgoKCSogY29uZmlnLmluIChFTkFCTEVfREVDSU1BTF9CSURfRk9STUFUKTogTmV3IG1hY3JvIHRvIHNheSB3ZSBhcmUKCXVzaW5nIHRoZSBCSUQgZm9ybWF0LgoKCSogY29uZmlndXJlLmFjIChFTkFCTEVfREVDSU1BTF9CSURfRk9STUFUKTogU2V0IHRvIDEvMCB0byBzYXkKCXdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBCSUQgZGVjaW1hbCBmb3JtYXQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGMtY3BwYnVpbHRpbi5jIChjX2NwcF9idWlsdGlucyk6IERlZmluZSBfX1NURENfV0FOVF9ERUNfRlBfXyBpZgoJdGhlIGNvbXBpbGVyIGhhcyBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGVuYWJsZWQuICBEZWZpbmUKCV9fREVDSU1BTF9CSURfRk9STUFUX18gaWYgQklEIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgaXMgdXNlZAoJaW5zdGVhZCBvZiBEUEQuCgoJKiBjb25maWcuaW4gKEVOQUJMRV9ERUNJTUFMX0JJRF9GT1JNQVQpOiBOZXcgbWFjcm8gdG8gc2F5IHdlIGFyZQoJdXNpbmcgdGhlIEJJRCBmb3JtYXQuCgoJKiBjb25maWd1cmUuYWMgKEVOQUJMRV9ERUNJTUFMX0JJRF9GT1JNQVQpOiBTZXQgdG8gMS8wIHRvIHNheQoJd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEJJRCBkZWNpbWFsIGZvcm1hdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogYy1jcHBidWlsdGluLmMgKGNfY3BwX2J1aWx0aW5zKTogRGVmaW5lIF9fU1REQ19XQU5UX0RFQ19GUF9fIGlmCgl0aGUgY29tcGlsZXIgaGFzIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgZW5hYmxlZC4gIERlZmluZQoJX19ERUNJTUFMX0JJRF9GT1JNQVRfXyBpZiBCSUQgZGVjaW1hbCBmbG9hdGluZyBwb2ludCBpcyB1c2VkCglpbnN0ZWFkIG9mIERQRC4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQpOiBEb2N1bWVudCBCSUQgYW5kIERQRAoJb3B0aW9ucywgYW5kIHRoYXQgaXQgaXMgZW5hYmxlZCBmb3IgaTM4Ni94ODZfNjQgc3lzdGVtcy4KCgkqIE1ha2VmaWxlLmluIChlbmFibGVfZGVjaW1hbF9mbG9hdCk6IE5ldy4KCShERUNOVU1GTVQpOiBOZXcuCgkoREVDTlVNSU5DKTogQWRkICAtSSQoREVDTlVNRk1UKS4KCShERUNOVU1fSCk6IE1vdiBkZWNpbWFsMzIuaCwgZGVjaW1hbDY0LmggYW5kIGRlY2ltYWwxMjguaAoJdG8gJChERUNOVU1GTVQpIGZyb20gJChERUNOVU0pLgoKCSogY29uZmlndXJlLmFjOiBTdXBwb3J0ICogLS1lbmFibGUtZGVjaW1hbC1mbG9hdD17bm8seWVzLGJpZCxkcGR9LgoJU3Vic3RpdHV0ZSBlbmFibGVfZGVjaW1hbF9mbG9hdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCglQUiBvdGhlci8zMDUyOQoJKiBjb25maWcvZGZwLWJpdC5jIChfX2RlY19ieXRlX3N3YXApOiBVc2UgdWludDMyX3QgaW5zdGVhZCBvZgoJdW5zaWduZWQgbG9uZy4KCgkqIGNvbmZpZ3VyZS5hYzogRW5hYmxlIGRlY2ltYWwgZmxvYXQgZm9yIHg4Nl82NC0qLWxpbnV4Ki4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCglQUiBvdGhlci8zMDUzMAoJKiBkZnAuYyAoZGVjaW1hbF9yZWFsX2FyaXRobWV0aWMpOiBVc2UgZGVjaW1hbDEyOEZsaXBTaWduIGFuZAoJZGVjaW1hbDEyOENsZWFyU2lnbiB0byBmbGlwIGFuZCBjbGVhciB0aGUgc2lnbiBiaXQgaW4gZGVjaW1hbDEyOC4KCShkZWNpbWFsX3JlYWxfbWF4dmFsKTogU2V0IGRlY2ltYWwxMjhTZXRTaWduIHRvIHNldCB0aGUgc2lnbgoJYml0IGluIGRlY2ltYWwxMjguCgoyMDA3LTAzLTIzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IENvcnJlY3Qgd2FybmluZyBmb3IgWCAtIGMgPj0gWC4KCjIwMDctMDMtMjMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiB0cmVlLWR1bXAuYyAoZHVtcF9maWxlcyk6IENvcnJlY3QgY29tbWVudC4KCjIwMDctMDMtMjMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiB0cmVlLXZycC5jIChvcGVyYW5kX2xlc3NfcCk6IElnbm9yZSBmb2xkIG92ZXJmbG93IHdhcm5pbmdzLgoKMjAwNy0wMy0yMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogdHJhY2VyLmMgKHRyYWNlcik6IERvbid0IHRha2UgRkxBR1MgYXJndW1lbnQuICBBc3NlcnQgd2UgYXJlCglpbiBjZmdsYXlvdXQgbW9kZS4gIERvbid0IGdvIGludG8gYW5kIG91dCBvZiBjZmdsYXlvdXQgbW9kZS4KCUxpbmsgdGhlIGJsb2NrcyBpbiB0aGUgb3JkZXIgb2YgdGhlIGNvbnN0cnVjdGVkIHRyYWNlcy4KCShyZXN0X29mX2hhbmRsZV90cmFjZXIpOiBBZGp1c3QgY2FsbCB0byB0cmFjZXIuCgkqIGxvb3AtaW5pdC5jIChydGxfbG9vcF9pbml0KTogQXNzZXJ0IHdlIGFyZSBpbiBjZmdsYXlvdXQgbW9kZS4KCURvbid0IGdvIGludG8gY2ZnbGF5b3V0IG1vZGUuCgkocnRsX2xvb3BfZG9uZSk6IERvbid0IGdvIG91dCBvZiBjZmdsYXlvdXQgbW9kZS4KCSogY2ZnbGF5b3V0LmMgKHJlbGlua19ibG9ja19jaGFpbik6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShmaXh1cF9yZW9yZGVyX2NoYWluKTogLi4uaGVyZS4gIFJlbW92ZSByZWR1bmRhbnQgY2hlY2tpbmcuCgkoY2ZnX2xheW91dF9maW5hbGl6ZSk6IERvbid0IGNsZWFyIHRoZSBoZWFkZXIsIGZvb3RlciwgYW5kIGF1eAoJZmllbGRzIGhlcmUsIG1vdmUgdGhlIGNvZGUgdG8gZG8gc28gdG8gcmVsaW5rX2Jsb2NrX2NoYWluLiAgTGlrZXdpc2UKCWZvciBmcmVlX29yaWdpbmFsX2NvcHlfdGFibGVzLgoJKiBydGwuaCAodHJhY2VyKTogVXBkYXRlIHByb3RvdHlwZS4KCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IHRha2UgRkxBR1MgYXJndW1lbnQuCglBc3NlcnQgd2UgYXJlIGluIGNmZ2xheW91dCBtb2RlLiAgRG9uJ3QgZ28gaW50byBhbmQgb3V0IG9mIGNmZ2xheW91dAoJbW9kZS4gIFVzZSByZWxpbmtfYmxvY2tfY2hhaW4gdG8gc2VyaWFsaXplIHRoZSBDRkcgYWNjb3JkaW5nIHRvIHRoZQoJbmV3IGJhc2ljIGJsb2NrIG9yZGVyLiAgTW92ZSB0YXJnZXRtLmNhbm5vdF9tb2RpZnlfanVtcHNfcCBjaGVjayBmcm9tCgloZXJlLi4uCgkoZ2F0ZV9oYW5kbGVfcmVvcmRlcl9ibG9ja3MpOiAuLi50byBoZXJlLgoJKGR1cGxpY2F0ZV9jb21wdXRlZF9nb3Rvcyk6IE1vdmUgdGFyZ2V0bS5jYW5ub3RfbW9kaWZ5X2p1bXBzX3AgY2hlY2sKCWZyb20gaGVyZS4uLgoJKGdhdGVfZHVwbGljYXRlX2NvbXB1dGVkX2dvdG9zKTogLi4udG8gaGVyZS4KCShyZXN0X29mX2hhbmRsZV9yZW9yZGVyX2Jsb2Nrcyk6IERvbid0IHNlZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZCwKCXNvbWV0aGluZyBhbHdheXMgY2hhbmdlcyB3aGVuIGdvaW5nIGludG8gYW5kIG91dCBvZiBjZmdsYXlvdXQgbW9kZS4KCVBlcmZvcm0gYW4gZXhwZW5zaXZlIGNmZyBjbGVhbnVwIHdoaWxlIGdvaW5nIGludG8gY2ZnbGF5b3V0IG1vZGUuCglBbHdheXMgdXBkYXRlIGxpdmVuZXNzIGluZm9ybWF0aW9uIG9uIEhBVkVfY29uZGl0aW9uYWxfZXhlY3V0aW9uCgl0YXJnZXRzLiAgUmVzZXJpYWxpemUgdGhlIGJhc2ljIGJsb2NrcyBhbmQgZ28gb3V0IG9mIGNmZ2xheW91dCBtb2RlLgoJKiByZWctc3RhY2suYzogSW5jbHVkZSBjZmdsYXlvdXQuaC4KCShyZXN0X29mX2hhbmRsZV9zdGFja19yZWdzKTogR28gaW50byBhbmQgb3V0IG9mIGNmZ2xheW91dCBtb2RlIGFyb3VuZAoJdGhlIGNhbGwgdG8gcmVvcmRlcl9iYXNpY19ibG9ja3MuCgkqIGJhc2ljLWJsb2NrLmggKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogVXBkYXRlIHByb3RvdHlwZS4KCShyZWxpbmtfYmxvY2tfY2hhaW4pOiBOZXcgcHJvdG90eXBlLgoJKiBwYXNzZXMuYyAocGFzc19vdXRvZl9jZmdfbGF5b3V0X21vZGUpOiBNb3ZlIGFmdGVyIGNzZTIuCgoyMDA3LTAzLTIzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHR5cGUsIGhhemFyZCwgKm1vdmRpXzMyYml0LAoJKm1vdmRpX2dwMzJfZnA2NCwgKm1vdmRpXzY0Yml0LCAqbW92c2lfaW50ZXJuYWwsIG1vdmNjLAoJKm1vdmhpX2ludGVybmFsLCAqbW92cWlfaW50ZXJuYWwsICptb3ZzZl9oYXJkZmxvYXQsCgkqbW92ZGZfaGFyZGZsb2F0XzY0Yml0LCAqbW92ZGZfaGFyZGZsb2F0XzMyYml0LCAqbW92ZGZfc29mdGZsb2F0LAoJbW92djJzZl9oYXJkZmxvYXRfNjRiaXQsIGxvYWRfZGZfbG93LCBsb2FkX2RmX2hpZ2gsIHN0b3JlX2RmX2hpZ2gsCgltdGhjMSwgbWZoYzEpOiBDaGFuZ2UgeGZlciBpbnN0cnVjdGlvbiB0eXBlIHRvIG1mYyBhbmQgbXRjLCBhcwoJYXBwbGljYWJsZS4KCShtb3ZjYyk6IENoYW5nZSBmaXJzdCB4ZmVyIHRvIG11bHRpLgoJKiBjb25maWcvbWlwcy8yNGsubWQsIGNvbmZpZy9taXBzLzQxMDAubWQsIGNvbmZpZy9taXBzLzQzMDAubWQsCgljb25maWcvbWlwcy81MDAwLm1kLCBjb25maWcvbWlwcy81NDAwLm1kLCBjb25maWcvbWlwcy81NTAwLm1kLAoJY29uZmlnL21pcHMvNWsubWQsIGNvbmZpZy9taXBzLzcwMDAubWQsIGNvbmZpZy9taXBzLzkwMDAubWQsCgljb25maWcvbWlwcy9nZW5lcmljLm1kOiBDaGFuZ2UgcmVzZXJ2YXRpb25zIHVzaW5nICJ4ZmVyIiB0byB1c2UKCSJtZmMsbXRjIi4KCSogY29uZmlnL21pcHMvc2IxLm1kIChpcl9zYjFfbXR4ZmVyKTogVXNlICJtdGMiIGluc3RlYWQgb2YKCXVzaW5nIG1hdGNoX29wZXJhbmQuCgkoaXJfc2IxX21meGZlcik6IFVzZSAibWZjIiBpbnN0ZWFkIG9mIHVzaW5nIG1hdGNoX29wZXJhbmQuCgkqIGNvbmZpZy9taXBzL3NyNzFrLm1kIChpcl9zcjcwX3hmZXJfZnJvbSk6IFVzZSAibWZjIiBpbnN0ZWFkIG9mCglleGFtaW5pbmcgbW9kZS4KCShpcl9zcjcwX3hmZXJfdG8pOiBVc2UgIm10YyIgaW5zdGVhZCBvZiBleGFtaW5pbmcgbW9kZS4KCjIwMDctMDMtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCglNb3ZlIHRhcmdldG0gZGVmaW5pdGlvbiwgYW5kIGFsbCByZWxhdGVkIG1hY3JvcywgdG8gdGhlIGVuZCBvZgoJdGhlIGZpbGUuICBSZXNvcnQgc29tZSBmdW5jdGlvbnMgdG8gcHV0IGRlZmluaXRpb25zIGJlZm9yZSB1c2VzLgoJKGl4ODZfYXR0cmlidXRlX3RhYmxlKTogTWFrZSBzdGF0aWMuICBNb3ZlIHRvIGVuZCBvZiBmaWxlLgoJKGl4ODZfZ2ltcGxpZnlfdmFfYXJnKTogTWFrZSBzdGF0aWMuCgoyMDA3LTAzLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX3JlZ3Bhcm0pOiBFYXJseSBleGl0IGZvciA2NC1iaXQ7Cglkb24ndCBpbmNyZWFzZSBsb2NhbF9yZWdwYXJtIHdpdGggZm9yY2VfYWxpZ25fYXJnX3BvaW50ZXIgY2hlY2suCgkoaXg4Nl9mdW5jdGlvbl9zc2VyZWdwYXJtKTogQXNzZXJ0IDMyLWJpdC4KCSh0eXBlX2hhc192YXJpYWRpY19hcmdzX3ApOiBOZXcuCgkoaXg4Nl9yZXR1cm5fcG9wc19hcmdzKTogRWFybHkgZXhpdCBmb3IgNjQtYml0LiAgUmVpbmRlbnQ7IHVzZQoJdHlwZV9oYXNfdmFyaWFkaWNfYXJnc19wLgoJKGl4ODZfZnVuY3Rpb25fYXJnX3JlZ25vX3ApOiBVc2UgPT0gMCBpbnN0ZWFkIG9mICEgdGVzdCBmb3IgZWF4LgoJKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogUmVtb3ZlIFRBUkdFVF9ERUJVR19BUkcuICBSZW1vdmUgemVyb19jdW07Cgl1c2UgbWVtc2V0IGluc3RlYWQuICBEbyBtYXliZV92YWFyZyBjaGVjayBmaXJzdDsgc2tpcCBhdHRyaWJ1dGUKCXRlc3RzIGlmIHRydWU7IHNraXAgYXR0cmlidXRlIHRlc3RzIGZvciA2NC1iaXQuCgkoY29uc3RydWN0X2NvbnRhaW5lcik6IFJlbW92ZSBUQVJHRVRfREVCVUdfQVJHLgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlXzMyLCBmdW5jdGlvbl9hcmdfYWR2YW5jZV82NCk6IFNwbGl0IG91dCAuLi4KCShmdW5jdGlvbl9hcmdfYWR2YW5jZSk6IC4uLiBmcm9tIGhlcmUuCgkoZnVuY3Rpb25fYXJnXzMyLCBmdW5jdGlvbl9hcmdfNjQpOiBTcGxpdCBvdXQgLi4uCgkoZnVuY3Rpb25fYXJnKTogLi4uIGZyb20gaGVyZS4KCShpeDg2X3Bhc3NfYnlfcmVmZXJlbmNlKTogVGlkeS4KCShpeDg2X2Z1bmN0aW9uX3ZhbHVlX3JlZ25vX3ApOiBSZWFycmFuZ2Ugdy8gc3dpdGNoIG9uIHJlZ25vLgoJKGZ1bmN0aW9uX3ZhbHVlXzMyKTogTmV3LCBmcm9tIHBhcnRzIG9mIGl4ODZfZnVuY3Rpb25fdmFsdWUKCWFuZCBpeDg2X3ZhbHVlX3JlZ25vLgoJKGZ1bmN0aW9uX3ZhbHVlXzY0KTogTmV3LCBmcm9tIHBhcnRzIG9mIGl4ODZfZnVuY3Rpb25fdmFsdWUKCWFuZCBpeDg2X2xpYmNhbGxfdmFsdWUuCgkoaXg4Nl9mdW5jdGlvbl92YWx1ZV8xKTogTmV3LgoJKGl4ODZfZnVuY3Rpb25fdmFsdWUsIGl4ODZfbGliY2FsbF92YWx1ZSk6IFVzZSBpdC4KCShyZXR1cm5faW5fbWVtb3J5XzMyLCByZXR1cm5faW5fbWVtb3J5XzY0KTogU3BsaXQgb3V0IC4uLgoJKGl4ODZfcmV0dXJuX2luX21lbW9yeSk6IC4uLiBmcm9tIGhlcmUuCgkoaXg4Nl9zdHJ1Y3RfdmFsdWVfcnR4KTogU2tpcCBmb3IgNjQtYml0LgoJKGl4ODZfbGliY2FsbF92YWx1ZSwgaXg4Nl92YWx1ZV9yZWdubyk6IFJlbW92ZS4KCShzZXR1cF9pbmNvbWluZ192YXJhcmdzXzY0KTogU3BsaXQgb3V0IC4uLgoJKGl4ODZfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IC4uLiBmcm9tIGhlcmUuCgkoaXg4Nl92YV9zdGFydCk6IFJlbW92ZSBUQVJHRVRfREVCVUdfQVJHLgoJKGxlZ2l0aW1hdGVfYWRkcmVzc19wLCBsZWdpdGltaXplX2FkZHJlc3MpOiBSZW1vdmUgVEFSR0VUX0RFQlVHX0FERFIuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfZnVuY3Rpb25fdmFsdWUpOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChUQVJHRVRfREVCVUdfQUREUiwgVEFSR0VUX0RFQlVHX0FSRyk6IFJlbW92ZS4KCjIwMDctMDMtMjIgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCVBSIG90aGVyLzIzNTcyCgkqIGMtbGV4LmMgKGludGVycHJldF9mbG9hdCk6IE9uIG92ZXJmbG93LCBlbWl0IHBlZGFudGljIHdhcm5pbmcgaWYKCWluZmluaXRpZXMgbm90IHN1cHBvcnRlZCwgb3RoZXJ3aXNlIGVtaXQgd2FybmluZyBpZiAtV292ZXJmbG93LiBPbgoJdW5kZXJmbG93LCBlbWl0IHdhcm5pbmcgaWYgLVdvdmVyZmxvdy4KCSogcmVhbC5jIChyZWFsX2Zyb21fc3RyaW5nKTogUmV0dXJuIC0xIGlmIHVuZGVyZmxvdywgKzEgaWYgb3ZlcmZsb3cKCWFuZCAwIG90aGVyd2lzZS4KCSogcmVhbC5oIChyZWFsX2Zyb21fc3RyaW5nKTogVXBkYXRlIGRlY2xhcmF0aW9uCgoyMDA3LTAzLTIyICBLYWkgVGlldHogIDxrYWkudGlldHpAb25ldmlzaW9uLmNvbT4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVmYXVsdHMuaCAoT1VUR09JTkdfUkVHX1BBUk1fU1RBQ0tfU1BBQ0UpOiBQcm92aWRlIGRlZmF1bHQuCgkqIGNhbGxzLmMgKGNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZSwgZXhwYW5kX2NhbGwsCgllbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogRG9uJ3QgaWZkZWYgT1VUR09JTkdfUkVHX1BBUk1fU1RBQ0tfU1BBQ0UuCgkqIGV4cHIuYyAoYmxvY2tfbW92ZV9saWJjYWxsX3NhZmVfZm9yX2NhbGxfcGFybSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChTVEFDS19EWU5BTUlDX09GRlNFVCk6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aSAoT1VUR09JTkdfUkVHX1BBUk1fU1RBQ0tfU1BBQ0UpOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS91bmljb3Ntay5oLCBjb25maWcvYmZpbi9iZmluLmgsIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmgsCgljb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCwgY29uZmlnL210L210LmgsCgljb25maWcvcGEvcGEuaCwgY29uZmlnL3JzNjAwMC9yczYwMDAuaCwgY29uZmlnL3Njb3JlL3Njb3JlLmgsCgljb25maWcvc3B1L3NwdS5oLCBjb25maWcvdjg1MC92ODUwLmggKE9VVEdPSU5HX1JFR19QQVJNX1NUQUNLX1NQQUNFKToKCVNldCB0byAxLgoKMjAwNy0wMy0yMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWluY3BhdGguYyAoYWRkX3N5c3Jvb3RfdG9fY2hhaW4pOiBOZXcuCgkobWVyZ2VfaW5jbHVkZV9jaGFpbnMpOiBBZGQgc3lzcm9vdCBhcmd1bWVudC4gIENhbGwKCWFkZF9zeXNyb290X3RvX2NoYWluIGlmIHN5c3Jvb3RlZC4KCShyZWdpc3Rlcl9pbmNsdWRlX2NoYWlucyk6IFVwZGF0ZSBjYWxsIHRvIG1lcmdlX2luY2x1ZGVfY2hhaW5zLgoJKiBkb2MvY3Bwb3B0cy50ZXhpOiBEb2N1bWVudCB1c2Ugb2YgJz0nIGluIGluY2x1ZGUgZGlyZWN0b3J5Cglhcmd1bWVudHMuCgoyMDA3LTAzLTIyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoY21wPG1vZGU+KTogUmVuYW1lIGZyb20gY21wc2YgYW5kIGNtcGRmLgoJTWFjcm9pemUgZXhwYW5kZXIgdXNpbmcgU1NFTU9ERUYgbW9kZSBtYWNyby4gIFVzZSBTU0VfRkxPQVRfTU9ERV9QLgoJKCpjbXBmcF88bW9kZT4pOiBSZW5hbWUgZnJvbSAqY21wZnBfc2YgYW5kICpjbXBmcF9kZi4gTWFjcm9pemUKCWluc24gcGF0dGVybiB1c2luZyBYODdNT0RFRjEyIG1vZGUgbWFjcm8uCgoyMDA3LTAzLTIxICBTZW9uZ2JhZSBQYXJrIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCgkqIHJlZ21vdmUuYyAocmVnbW92ZV9vcHRpbWl6ZSk6IFVzZSByZWdfbWVudGlvbmVkX3AKCWluc3RlYWQgb2YgcmVnX292ZXJsYXBfbWVudGlvbmVkX3AgZm9yIERTVC4KCjIwMDctMDMtMjEgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogYy5vcHQ6IEZpeHVwIGZvciBPYmplY3RpdmUtQy9DKysuCgoyMDA3LTAzLTIxICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGV4cGxvdy5jIChjb252ZXJ0X21lbW9yeV9hZGRyZXNzKTogRm9sZCBtZW1vcnkgcmVmZXJlbmNlIHdoZW4KCVBPSU5URVJTX0VYVEVORF9VTlNJR05FRCA8IDAKCjIwMDctMDMtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzMxMjQ1CgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oIChfX20xMjhpLCBfX20xMjhkKTogTWFyayBtYXlfYWxpYXMuCgkqIGNvbmZpZy9pMzg2L21taW50cmluLmggKF9fbTY0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3htbWludHJpbi5oIChfX20xMjgpOiBMaWtld2lzZS4KCjIwMDctMDMtMjEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3Z4d29ya3MuaCAoVlhXT1JLU19BRERJVElPTkFMX0NQUF9TUEVDKTogUmVtb3ZlIC1EIG9wdGlvbnMuCgkoVlhXT1JLU19PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUuCgkqIGNvbmZpZy9pMzg2L3Z4d29ya3MuaCAoVlhXT1JLU19DUFVfREVGSU5FKTogRm9sZCBpbnRvLi4uCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IC4uLmhlcmUuICBVc2UgVlhXT1JLU19PU19DUFBfQlVJTFRJTlMuCgoyMDA3LTAzLTIxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5oIChjb25zdGFudF9wb29sX3JlZmVyZW5jZV9wKTogRGVsZXRlLgoJKGZpbmRfY29uc3RhbnRfc3JjKTogRGVjbGFyZS4KCSogcnRsYW5hbC5jIChmaW5kX2NvbnN0YW50X3NyYyk6IE5ldyBmdW5jdGlvbi4KCSogc2ltcGxpZnktcnR4LmMgKGNvbnN0YW50X3Bvb2xfcmVmZXJlbmNlX3ApOiBEZWxldGUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IFVzZSBmaW5kX2NvbnN0YW50X3NyYyBpbnN0ZWFkIG9mCgljb25zdGFudF9wb29sX3JlZmVyZW5jZV9wL2F2b2lkX2NvbnN0YW50X3Bvb2xfcmVmZXJlbmNlIHBhaXJzLgoKMjAwNy0wMy0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1mcGllLCAtZlBJRSk6IERvY3VtZW50IF9fcGllX18gYW5kIF9fUElFX18uCgkqIGMtY3BwYnVpbHRpbi5jIChjX2NwcF9idWlsdGlucyk6IERlZmluZSB0aGVtLgoKMjAwNy0wMy0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKFRBUkdFVF9BU01fREVTVFJVQ1RPUik6IERlZmluZS4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2VsZl9hc21fY2R0b3IpOiBOZXcgZnVuY3Rpb24uCgkoYXJtX2VsZl9hc21fY29uc3RydWN0b3IpOiBVc2UgaXQuCgkoYXJtX2VsZl9hc21fZGVzdHJ1Y3Rvcik6IE5ldyBmdW5jdGlvbi4KCjIwMDctMDMtMjAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBqdW1wLmMgKG1hcmtfanVtcF9sYWJlbCk6IFRyZWF0IFNFUVVFTkNFIHNwZWNpYWxseS4KCjIwMDctMDMtMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvdnhsaWIuYyAodGxzX2RlbGV0ZV9ob29rKTogVXNlIFRDQiBmb3Iga2VybmVsIHRhc2tzLgoKMjAwNy0wMy0xOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzEyNjQKCSogdHJlZS12cnAuYyAocmVnaXN0ZXJfZWRnZV9hc3NlcnRfZm9yXzEpOiBEb24ndCBsb29rIHRob3VnaAoJVklFV19DT05WRVJUX0VYUFJzLgoKMjAwNy0wMy0xOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMwOTA3CgkqIGZ3cHJvcC5jIChmb3J3YXJkX3Byb3BhZ2F0ZV9pbnRvKTogTmV2ZXIgcHJvcGFnYXRlIGluc2lkZSBhIGxvb3AuCgkoZndwcm9wX2luaXQpOiBBbHdheXMgY2FsbCBsb29wX29wdGltaXplcl9pbml0aWFsaXplLgoJKGZ3cHJvcF9kb25lKTogQWx3YXlzIGNhbGwgbG9vcF9vcHRpbWl6ZXJfZmluYWxpemUuCgkoZndwcm9wKTogV2UgYWx3YXlzIGhhdmUgbG9vcCBpbmZvIG5vdy4KCShnYXRlX2Z3cHJvcF9hZGRyKTogUmVtb3ZlLgoJKHBhc3NfZndwcm9wX2FkZHIpOiBVc2UgZ2F0ZV9md3Byb3AgYXMgZ2F0ZS4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMwODQxCgkqIGRmLXByb2JsZW1zLmMgKGRmX3J1X2xvY2FsX2NvbXB1dGUsIGRmX3JkX2xvY2FsX2NvbXB1dGUsCglkZl9jaGFpbl9hbGxvYyk6IENhbGwgZGZfcmVvcmdhbml6ZV9yZWZzIHVuY29uZGl0aW9uYWxseS4KCSogZGYtc2Nhbi5jIChkZl9yZXNjYW5fYmxvY2tzLCBkZl9yZW9yZ2FuaXplX3JlZnMpOiBDaGFuZ2UKCXJlZnNfb3JnYW5pemVkIHRvIHJlZnNfb3JnYW5pemVkX3NpemUuCgkoZGZfcmVmX2NyZWF0ZV9zdHJ1Y3R1cmUpOiBVc2UgcmVmc19vcmdhbml6ZWRfc2l6ZSBpbnN0ZWFkIG9mCgliaXRtYXBfc2l6ZSBpZiByZWZzIGhhZCBiZWVuIG9yZ2FuaXplZCwgYW5kIGtlZXAgcmVmc19vcmdhbml6ZWRfc2l6ZQoJdXAtdG8tZGF0ZS4KCSogZGYuaCAoc3RydWN0IGRmX3JlZl9pbmZvKTogQ2hhbmdlIHJlZnNfb3JnYW5pemVkIHRvCglyZWZzX29yZ2FuaXplZF9zaXplLgoJKERGX0RFRlNfU0laRSwgREZfVVNFU19TSVpFKTogVXNlIHJlZnNfb3JnYW5pemVkX3NpemUgaW5zdGVhZCBvZgoJYml0bWFwX3NpemUuCgoyMDA3LTAzLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0LmMgKG91dHB1dF9mdW5jdGlvbl9leGNlcHRpb25fdGFibGUpOiBEbyBub3QgcmVmZXJlbmNlIHRoZQoJRUggcGVyc29uYWxpdHkgcm91dGluZSBmb3IgZnVuY3Rpb25zIHRoYXQgZG8gbm90IHJlcXVpcmUgYW4KCWV4Y2VwdGlvbiB0YWJsZS4KCjIwMDctMDMtMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMvMzA3NjIKCSogYy10eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IENhbGwgY29tcHR5cGVzIGZvcgoJUkVDT1JEX1RZUEUgb3IgVU5JT05fVFlQRS4KCglQUiBpbmxpbmUtYXNtLzMwNTA1CgkqIHJlbG9hZDEuYyAocmVsb2FkKTogRG8gaW52YWxpZCBBU00gY2hlY2tpbmcgYWZ0ZXIKCWNsZWFudXBfc3VicmVnX29wZXJhbmRzLgoKMjAwNy0wMy0xOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtY2ZnLmMgKGZpbmRfdGFrZW5fZWRnZSk6IFRpZ2h0ZW4gY29uZGl0aW9ucyBmb3IKCW9wdGltaXppbmcgY29tcHV0ZWQgZ290b3MuCgoyMDA3LTAzLTE5ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zeW5jX29wZXJhdGlvbiwKCWV4cGFuZF9idWlsdGluX2NvbXBhcmVfYW5kX3N3YXAsCglleHBhbmRfYnVpbHRpbl9sb2NrX3Rlc3RfYW5kX3NldCk6IENhcmUgZm9yIGV4dGVuZGluZyBDT05TVF9JTlRzCgljb3JyZWN0bHkuCgoJKiBjb25maWcvaTM4Ni9zeW5jLm1kIChzeW5jX2RvdWJsZV9jb21wYXJlX2FuZF9zd2FwZGlfcGljLAoJc3luY19kb3VibGVfY29tcGFyZV9hbmRfc3dhcF9jY2RpX3BpYyk6IFVzZSAiU0QiIGFzIGNvbnN0cmFpbnQKCWZvciBvcGVyYW5kIDMuCgoyMDA3LTAzLTE5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogZG9jL3RtLnRleGk6IEFkZCBicmFja2V0cyBhcm91bmQgdGhlIHJldHVybiB0eXBlIG9mCglUQVJHRVRfU0VDT05EQVJZX1JFTE9BRC4KCjIwMDctMDMtMTkgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoJUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxMjU0CgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwcl8xKToKCVVzZSBoYW5kbGVkX2NvbXBvbmVudF9wICgpIHdoZXJlIGFwcHJvcHJpYXRlLiAgQ29udGludWUKCXByb3BhZ2F0aW5nIGludG8gdGhlIHJocyBpZiB3ZSBwcm9wYWdhdGVkIGludG8gYW4gSU5ESVJFQ1RfUkVGCglvbiB0aGUgbGhzLgoKMjAwNy0wMy0xOSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKG9wX3R5cGUgYXR0cmlidXRlKTogUlJSIGluc3RydWN0aW9uIHR5cGUgYWRkZWQuCgkoRlAsIERGUCwgU0RfU0YsIEREX0RGLCBURF9URik6IE5ldyBtb2RlIG1hY3Jvcy4KCSh4ZGUsIHhkZWUpOiBNb2RlIGF0dHJpYnV0ZXMgYWRqdXN0ZWQgdG8gc3VwcG9ydCBERlAgbW9kZXMuCgkoUlJlciwgZjAsIG9wMSwgUmYsIGJ0LCBiZnAsIEhBTEZfVE1PREUpOiBOZXcgbW9kZSBhdHRyaWJ1dGVzIGFkZGVkLgoJKCJjbXA8bW9kZT4iLCAiKmNtcDxtb2RlPl9jc3NfMCIsICIqY21wPG1vZGU+X2NjcyIsIFRGIG1vdmUgc3BsaXR0ZXJzLAoJREYgbW92ZSBzcGxpdHRlcnMsICJmbG9hdGRpPG1vZGU+MiIsICJhZGQ8bW9kZT4zIiwgIiphZGQ8bW9kZT4zIiwKCSIqYWRkPG1vZGU+M19jYyIsICIqYWRkPG1vZGU+M19jY29ubHkiLCAic3ViPG1vZGU+MyIsICIqc3ViPG1vZGU+MyIsCgkiKnN1Yjxtb2RlPjNfY2MiLCAiKnN1Yjxtb2RlPjNfY2Nvbmx5IiwgIm11bDxtb2RlPjMiLCAiKm11bDxtb2RlPjMiLAoJImRpdjxtb2RlPjMiLCAiKmRpdjxtb2RlPjMiLCAiKm5lZzxtb2RlPjJfbm9jYyIsICIqYWJzPG1vZGU+Ml9ub2NjIiwKCSIqbmVnYWJzPG1vZGU+Ml9ub2NjIiwgImNvcHlzaWduPG1vZGU+MyIpOiBBZGp1c3RlZCB0byBzdXBwb3J0IERGUAoJbnVtYmVycy4KCSgiKm1vdnRmXzY0IiwgIiptb3Z0Zl8zMSIsICIqbW92ZGZfNjRkZnAiLCAiKm1vdmRmXzY0IiwgIiptb3ZkZl8zMSIsCgkibW92c2YiKTogSW5zbiBkZWZpbml0aW9ucyByZW1vdmVkLgoJKCIqbW92PG1vZGU+XzY0IiwgIiptb3Y8bW9kZT5fMzEiLCAibW92PG1vZGU+IiwgIiptb3Y8bW9kZT5fNjRkZnAiLAoJIiptb3Y8bW9kZT5fNjQiLCAiKm1vdjxtb2RlPl8zMSIsICJmaXhfdHJ1bmM8REZQOm1vZGU+ZGkyIiwKCSJ0cnVuY3RkZGQyIiwgInRydW5jZGRzZDIiLCAiZXh0ZW5kZGR0ZDIiLCAiZXh0ZW5kc2RkZDIiKTogSW5zbgoJZGVmaW5pdGlvbnMgYWRkZWQuCgkoImZpeHVuc190cnVuY2RkZGkyIiwgImZpeHVuc190cnVuY3RkZGkyIiwgIm1vdjxtb2RlPiIsCgkicmVsb2FkX2luPG1vZGU+IiwgInJlbG9hZF9vdXQ8bW9kZT4iKTogRXhwYW5kZXIgYWRkZWQuCgkoIm1vdnRmIiwgIm1vdmRmIiwgInJlbG9hZF9vdXR0ZiIsICJyZWxvYWRfb3V0ZGYiLCAicmVsb2FkX2ludGYiKToKCUV4cGFuZGVyIHJlbW92ZWQuCgoyMDA3LTAzLTE5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZDogT25seSBub24tZnVuY3Rpb25hbCBjaGFuZ2VzLiAgUmVuYW1lZAoJRlBSIG1vZGUgbWFjcm8gdG8gQkZQIGFsbCBvdmVyIHRoZSBmaWxlLgoKMjAwNy0wMy0xOSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKFVOU1BFQ19DT1BZU0lHTik6IE5ldyBjb25zdGFudC4KCShvcF90eXBlIGF0dHJpYnV0ZSk6IFJSRiBpbnN0cnVjdGlvbiB0eXBlIGFkZGVkLgoJKGZUMCk6IE5ldyBtb2RlIGF0dHJpYnV0ZS4KCSgiKm1vdmRpXzY0ZGZwIiwgIiptb3ZkZl82NGRmcCIsICIqbmVnPG1vZGU+Ml9ub2NjIiwgIiphYnM8bW9kZT4yX25vY2MiLAoJIipuZWdhYnM8bW9kZT4yX25vY2MiLCAiY29weXNpZ248bW9kZT4zIik6IEluc24gZGVmaW5pdGlvbnMgYWRkZWQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoU0VDT05EQVJZX01FTU9SWV9ORUVERUQpOiBEdWUgdG8gYSBuZXcKCWluc3RydWN0aW9uIG5vIHNlY29uZGFyeSBtZW1vcnkgaXMgbmVlZGVkIHdoZW4gbW92aW5nIERGbW9kZSB2YWx1ZXMKCWJldHdlZW4gR1BScyBhbmQgRlBScy4KCjIwMDctMDMtMTkgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm9wdCAoIm1oYXJkLWZsb2F0IiwgIm1zb2Z0LWZsb2F0Iik6IEJpdCB2YWx1ZQoJaW52ZXJ0ZWQgYW5kIGRvY3VtZW50YXRpb24gYWRqdXN0ZWQuCgkoIm1oYXJkLWRmcCIsICJtc29mdC1kZnAiKTogTmV3IG9wdGlvbnMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9oYW5kbGVfYXJjaF9vcHRpb24pOiBOZXcgYXJjaGl0ZWN0dXJlCglzd2l0Y2g6IHo5LWVjLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBTYW5pdHkgY2hlY2tzIGZvciB0aGUgbmV3IG9wdGlvbnMgYWRkZWQuCgkqIGNvbmZpZy5nY2M6IE5ldyBhcmNoaXRlY3R1cmUgc3dpdGNoOiB6OS1lYy4KCSogY29uZmlnL3MzOTAvczM5MC5oIChwcm9jZXNzb3JfZmxhZ3MpOiBQRl9ERlAgYWRkZWQuCgkoVEFSR0VUX0NQVV9ERlAsIFRBUkdFVF9ERlApOiBNYWNybyBkZWZpbml0aW9ucyBhZGRlZC4KCShUQVJHRVRfREVGQVVMVCk6IER1ZSB0byB0aGUgczM5MC5vcHQgY2hhbmdlcyBoYXJkIGZsb2F0IGlzIGVuYWJsZWQKCXdoZW4gdGhlIGJpdCBpcyBOT1Qgc2V0IHNvIHJlbW92ZSBpdCBmcm9tIHRoZSBkZWZhdWx0cy4KCjIwMDctMDMtMTkgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBnZW5lbWl0LmMgKG1haW4pOiBQcmludCBpbmNsdWRlIHN0YXRlbWVudCBmb3IgZGZwLmguCgkqIGRmcC5oIChkZWNpbWFsX3JlYWxfYXJpdGhtZXRpYyk6IEhpZGUgcHJvdG90eXBlIGlmIHRyZWVfY29kZSBlbnVtCglpcyBub3QgYXZhaWxhYmxlLgoKMjAwNy0wMy0xOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvY3Jpcy90LWVsZm11bHRpIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IERvIG5vdCBkZWZpbmUgaGVyZS4KCjIwMDctMDMtMTkgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8zMTAyMgoJKiBjb25maWcvc2gvc2guYyAoc2hfYWRqdXN0X2Nvc3QpOiBVc2UgdGhlIHJlc3VsdCBvZiBzaW5nbGVfc2V0CglpbnN0ZWFkIG9mIFBBVFRFUk4uCgoyMDA3LTAzLTE4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAob3V0cHV0X2RlZmVycmVkX3BsYWJlbHMsIG91dHB1dF9iYiwgb3V0cHV0X21pbGxpY29kZV9jYWxsLAoJYXR0cl9sZW5ndGhfY2FsbCwgb3V0cHV0X2NhbGwsIG91dHB1dF9pbmRpcmVjdF9jYWxsKTogQ2xlYW51cAoJZm9ybWF0dGluZyBvZiB0YXJnZXRtIGNhbGxzLgoKMjAwNy0wMy0xOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKEhBTkRMRV9QUkFHTUFfUEFDS19QVVNIX1BPUCk6IERlZmluZSB0byAxLgoKMjAwNy0wMy0xOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLm1kOiBBZGQgZnBzdG9yZV9sb2FkIGFuZCBzdG9yZV9mcGxvYWQgaW5zdHJ1Y3Rpb24gdHlwZXMuICBQcm92aWRlCglyZXNlcnZhdGlvbiwgYnlwYXNzIGFuZCBhbnRpLWJ5cGFzcyBkZXNjcmlwdGlvbnMgZm9yIHRoZXNlCglpbnN0cnVjdGlvbnMuICBVcGRhdGUgbW92ZSBwYXR0ZXJucy4KCSogcGEuYyAoaHBwYV9mcHN0b3JlX2J5cGFzc19wKTogQ2hlY2sgZm9yIGJvdGggVFlQRV9GUFNUT1JFX0xPQUQgYW5kCglUWVBFX0ZQU1RPUkUuCgoyMDA3LTAzLTE4ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jIChnZXRfaW5pdGlhbF9kZWZfZm9yX2luZHVjdGlvbik6IFJlcGxhY2UKCUdFVF9NT0RFX05VTklUUyB3aXRoIFRZUEVfVkVDVE9SX1NVQlBBUlRTLgoJKGdldF9pbml0aWFsX2RlZl9mb3JfcmVkdWN0aW9uKTogTGlrZXdpc2UuCgoyMDA3LTAzLTE2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjk5MjIKCSogdHJlZS1zc2EtcHJlLmMgKGJiX2JpdG1hcF9zZXRzKTogUmVtb3ZlIFJWVVNFXyogbWVtYmVycy4KCShnZXRfcmVwcmVzZW50YXRpdmUpOiBSZW1vdmVkLgoJKHZhbHVlX2RpZXNfaW5fYmxvY2tfeCk6IFVwZGF0ZSBmb3IgcnZ1c2UgcmVtb3ZhbC4KCSh2YWxpZF9pbl9zZXRzKTogVXBkYXRlIGZvciByZW5hbWluZyBvZiB2dXNlc19kaWVzX2luX2Jsb2NrX3guCgkoY29tcHV0ZV9hbnRpY19hdXgpOiBIYW5kbGUgd2hlbiBQSEkgbm9kZXMgYXBwZWFyIGluCglub24tc2luZ2xlLXN1Y2Nlc3NvcnMuCgkoZHVtcF9iaXRtYXBfb2ZfbmFtZXMpOiBSZW1vdmVkLgoJKGNvbXB1dGVfYW50aWNfc2FmZSk6IFJlbmFtZWQgYW5kIHJlbW92ZWQgcnZ1c2UgY2FsY3VsYXRpb24uCglDYWxjdWxhdGUgb25seSBhbnRpYyBzYWZlLgoJKGluc2VydF9pbnRvX3ByZWRzX29mX2Jsb2NrKTogUmVtb3ZlIGFzc2VydC4KCShleGVjdXRlX3ByZSk6IFVwZGF0ZSBmb3IgcmVuYW1lZCBmdW5jdGlvbnMuCgkoZGVmZXJfb3JfcGhpX3RyYW5zbGF0ZV9ibG9jayk6IE5ldyBmdW5jdGlvbi4KCjIwMDctMDMtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2FybS90aHVtYjIubWQsIGNvbmZpZy9tNjhrL202OGsuYywKCWNvbmZpZy9zcHUvc3B1LmMsIG9tZWdhLmgsIHBhc3Nlcy5jLCBwcmVkaWN0LmM6IEZpeCBjb21tZW50Cgl0eXBvcy4KCSogZG9jL2NwcC50ZXhpLCBkb2MvZXh0ZW5kLnRleGksIGRvYy9pbnZva2UudGV4aTogRml4IHR5cG9zLgoJRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKCSogdHJlZS1kYXRhLXJlZi5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgYW5hbHl6ZV9hcnJheS4KCjIwMDctMDMtMTcgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzEwNDEKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jIChnZXRfaW5pdGlhbF9kZWZfZm9yX2luZHVjdGlvbik6IENhbGwKCWZvcmNlX2dpbXBsZV9vcGVyYW5kLgoKMjAwNy0wMy0xNyAgT2xnYSBHb2xvdmFuZXZza3kgIDxvbGdhQGlsLmlibS5jb20+CgogIAkqIGlwYS10eXBlLWVzY2FwZS5jIChsb29rX2Zvcl9jYXN0cykgOiBSZXZlcnQgY29kZSB0byB1c2UKCWhhbmRsZWRfY29tcG9uZW50X3AgZHVlIHRvIGFkYSB0ZXN0IGEtbnVtYXV4LmFkYi4KCjIwMDctMDMtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogQWx0ZXIgdGhlIGNvbmRpdGlvbiBvZiBhCgljb25kaXRpb25hbCB0cmFwIGlmIHdlIGhhdmUgbm9uc3RhbmRhcmQgQ0MuCgoyMDA3LTAzLTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIGV4Y2VzcyBxdW90aW5nIGZyb20gYXNtIGxpbmUgMCB0ZXN0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDA3LTAzLTE2ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoLVdjb252ZXJzaW9uKTogRG9jdW1lbnQgd2FybmluZ3Mgc3BlY2lmaWMgdG8gQysrLgoJKiBjLWNvbW1vbi5jIChjb252ZXJ0X2FuZF9jaGVjayk6IE1vdmUgd2FybmluZyBsb2dpYyB0by4uLgoJKHdhcm5pbmdzX2Zvcl9jb252ZXJ0X2FuZF9jaGVjayk6IC4uLmhlcmUuIERlZmluZS4KCSogYy1jb21tb24uaCAod2FybmluZ3NfZm9yX2NvbnZlcnRfYW5kX2NoZWNrKTogRGVjbGFyZS4KCjIwMDctMDMtMTYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChhdHRyX2xlbmd0aF9jYWxsKTogUGFydGlhbGx5IHJldmVydCBjaGFuZ2Ugb2YgMjAwNy0wMy0wOS4KCShvdXRwdXRfY2FsbCk6IExpa2V3aXNlLgoKMjAwNy0wMy0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvdnh3b3Jrcy5oIChTVVBQT1JUU19JTklUX1BSSU9SSVRZKTogRGVmaW5lLgoKMjAwNy0wMy0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvdngtY29tbW9uLmggKFdJTlRfVFlQRSwgV0lOVF9UWVBFX1NJWkUpOiBEZWZpbmUuCgoyMDA3LTAzLTE2ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogQWRkIFBUQV9OT19TQUhGIHRvIGs4LAoJb3B0ZXJvbiwgYXRobG9uLTY0IGFuZCBhdGhsb24tZnggcHJvY2Vzc29yX2FsaWFzX3RhYmxlIGVudHJpZXMuCgoyMDA3LTAzLTE2ICBTZWJhc3RpYW4gUG9wICA8c2ViYXN0aWFuLnBvcEBpbnJpYS5mcj4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTE4MwoJKiB0cmVlLWxvb3AtbGluZWFyLmMgKGdhdGhlcl9pbnRlcmNoYW5nZV9zdGF0cywgdHJ5X2ludGVyY2hhbmdlX2xvb3BzKToKCVVzZSBkb3VibGVfaW50IGluc3RlYWQgb2YgdW5zaWduZWQgaW50IGZvciByZXByZXNlbnRpbmcgYWNjZXNzX3N0cmlkZXMuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIzMTE4My5jOiBOZXcuCgoyMDA3LTAzLTE2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzExNDYKCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAoZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByXzEpOiBSZXN0cnVjdHVyZQoJdG8gYWxsb3cgcmVjdXJzaW9uIG9mIGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwci4KCShmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2ludG9fdmFyaWFibGVfYXJyYXlfaW5kZXgpOiBMaWtld2lzZS4KCShmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2V4cHIpOiBMaWtld2lzZS4KCSh0cmVlX3NzYV9mb3J3YXJkX3Byb3BhZ2F0ZV9zaW5nbGVfdXNlX3ZhcnMpOiBMaWtld2lzZS4KCShmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2V4cHJfMSk6IFJlY3Vyc2Ugb24gc2ltcGxlIGNvcGllcwoJaW5zdGVhZCBvZiBwcm9wYWdhdGluZyBpbnRvIHRoZW0uICBEbyBzbyBmb3IgdXNlbGVzcyBjb252ZXJzaW9ucwoJYXMgd2VsbC4KCShmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2V4cHIpOiBDbGVhbiB1cCB1bnVzZWQgc3RhdGVtZW50cyBhZnRlcgoJcmVjdXJzaW9uLgoKMjAwNy0wMy0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fY2V4cGkpOiBVc2UgdGhlIHJpZ2h0IGFyZ3VtZW50Cglmb3IgdGhlIGV4cGFuc2lvbiB2aWEgY2V4cC4KCjIwMDctMDMtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjOiBEb24ndCByZXF1aXJlIEVMRiBiaW51dGlscyB0byB0b2xlcmF0ZSAjIDAgIiIuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDctMDMtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzI5OTA2CgkqIGR3YXJmMm91dC5jIChmb3JjZV90eXBlX2RpZSk6IEFkanVzdCBjb21tZW50LgoJKGR3YXJmMm91dF9pbXBvcnRlZF9tb2R1bGVfb3JfZGVjbCk6IEhhbmRsZSBiYXNlIEFUX2ltcG9ydCB0eXBlcy4KCjIwMDctMDMtMTUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9wcmVkaWNhdGVzLm1kIChtaW5tYXhfb3BlcmF0b3IpOiBEb24ndCBjaGVjayBvcGVyYW5kcwoJaGVyZS4KCjIwMDctMDMtMTUgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHJlY29yZF9lc3RpbWF0ZSk6IEFkZCAidXBwZXIiIGFyZ3VtZW50LgoJVXBkYXRlIGNvbnN0YW50IGVzdGltYXRlcyBvZiBudW1iZXIgb2YgaXRlcmF0aW9ucy4KCShyZWNvcmRfbm9ud3JhcHBpbmdfaXYpOiBBZGQgInVwcGVyIiBhcmd1bWVudC4gICJkYXRhX3NpemVfYm91bmRzX3AiCglhcmd1bWVudCByZW5hbWVkIHRvICJyZWFsaXN0aWMiLgoJKGNvbXB1dGVfZXN0aW1hdGVkX25iX2l0ZXJhdGlvbnMpOiBSZW1vdmVkLgoJKHJlY29yZF9uaXRlcl9ib3VuZCk6IE5ldyBmdW5jdGlvbi4KCShpZHhfaW5mZXJfbG9vcF9ib3VuZHMpOiBGb3IgcG9zc2libGUgYnV0IHVubGlrZWx5IHRhaWwgYXJyYXlzLAoJY2FsbCByZWNvcmRfbm9ud3JhcHBpbmdfaXYgd2l0aCB1cHBlciA9IGZhbHNlLgoJKGluZmVyX2xvb3BfYm91bmRzX2Zyb21fc2lnbmVkbmVzcyk6IFBhc3MgdXBwZXIgYXJndW1lbnQgdG8KCXJlY29yZF9ub253cmFwcGluZ19pdi4KCShlc3RpbWF0ZV9udW1iZXJzX29mX2l0ZXJhdGlvbnNfbG9vcCk6IERvIG5vdCBjYWxsCgljb21wdXRlX2VzdGltYXRlZF9uYl9pdGVyYXRpb25zLiAgUmVjb3JkIGVzdGltYXRlIGJhc2VkIG9uIHByb2ZpbGUKCWluZm9ybWF0aW9uLiAgSW5pdGlhbGl6ZSB0aGUgY29uc3RhbnQgZXN0aW1hdGVzIG9mIG51bWJlciBvZgoJaXRlcmF0aW9ucy4KCSogdHJlZS1kYXRhLXJlZi5jIChlc3RpbWF0ZWRfbG9vcF9pdGVyYXRpb25zKTogUmV0dXJuIHRoZSByZWNvcmRlZAoJZXN0aW1hdGVzLgoJKiB0cmVlLXNzYS1sb29wLXByZWZldGNoLmMgKGxvb3BfcHJlZmV0Y2hfYXJyYXlzKTogQWRkIGR1bXAgd2hlbgoJbnVtYmVyIG9mIGl0ZXJhdGlvbnMgaXMgdG9vIHNtYWxsLgoJKiBjZmdsb29wLmggKHN0cnVjdCBuYl9pdGVyX2JvdW5kKTogUmVtb3ZlICJyZWFsaXN0aWMiIGZpZWxkLgoJKEVTVF9OT1RfQVZBSUxBQkxFKTogUmVtb3ZlZC4KCShzdHJ1Y3QgbG9vcCk6IFJlcGxhY2UgZXN0aW1hdGVkX25iX2l0ZXJhdGlvbnMgYnkgYW55X3VwcGVyX2JvdW5kLAoJbmJfaXRlcmF0aW9uc191cHBlcl9ib3VuZCwgYW55X2VzdGltYXRlIGFuZCBuYl9pdGVyYXRpb25zX2VzdGltYXRlCglmaWVsZHMuCgoyMDA3LTAzLTE1ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChyZWZpbmVfYm91bmRzX3VzaW5nX2d1YXJkLCBib3VuZF9kaWZmZXJlbmNlKToKCUhhbmRsZSBORV9FWFBSIGd1YXJkcy4KCjIwMDctMDMtMTUgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCVBSIGMrKy8yNDkyNAoJKiBjLW9wdHMuYyAoY19jb21tb25fcG9zdF9vcHRpb25zKTogSGFuZGxlIEMrKyBwb3N0LXByb2Nlc3NpbmcgaGVyZS4KCVNldCBhbHNvIC1wZWRhbnRpYy1lcnJvcnMgYnkgZGVmYXVsdCBmb3IgdGhlICBwcmVwcm9jZXNzb3IgdW5sZXNzCgktZnBlcm1pc3NpdmUgaXMgZ2l2ZW4uCgoyMDA3LTAzLTE1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yOTcxOQoJUFIgbWlkZGxlLWVuZC8zMTE2MQoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9jZXhwaSk6IEFzIGEgZmFsbGJhY2sgaWYgd2UKCWRvbid0IGhhdmUgYnVpbHRpbnMgZm9yIHNpbmNvcyBvciBjZXhwIGNyZWF0ZSBhIGZ1bmN0aW9uCglkZWNsYXJhdGlvbiBmb3IgY2V4cCBhbmQgZXhwYW5kIHRvIGEgY2FsbCB0byB0aGF0LgoJKGV4cGFuZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuKTogQWx3YXlzIGZhbGwKCWJhY2sgdG8gZmxvb3IvY2VpbCBhbmQgaXRzIHZhcmlhbnRzIGV2ZW4gaWYgdGhleSBtYXkgYmUKCW5vdCBhdmFpbGFibGUuCgoyMDA3LTAzLTE1ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8zMTE1OQoJKiBjZmdsYXlvdXQuYyAoZml4dXBfcmVvcmRlcl9jaGFpbik6IFBvc3Rwb25lIGRlbGV0aW5nIGRlYWQKCWp1bXAgdGFibGVzLCBtb3ZlIHRoZSBjYWxsIHRvIGRlbGV0ZV9kZWFkX2p1bXB0YWJsZXMgZnJvbSBoZXJlLi4uCgkoY2ZnX2xheW91dF9maW5hbGl6ZSk6IC4uLnRvIGhlcmUuICBCdXQgcmVidWlsZCBqdW1wIGxhYmVscyBmaXJzdC4KCSogY2ZncnRsLmMgKGNmZ19sYXlvdXRfY2FuX21lcmdlX2Jsb2Nrc19wKTogV2hlbiBub3Qgb3B0aW1pemluZywKCWRvbid0IGFsbG93IG1lcmdpbmcgb2YgYmxvY2tzIHRoYXQgdHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wCglhbHNvIGRvZXMgbm90IGhhbmRsZSB3aGVuIG5vdCBvcHRpbWl6aW5nLgoKMjAwNy0wMy0xNSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCSAgICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh4ODZfc2FoZl8xKTogQ29ycmVjdGx5IGhhbmRsZQoJSEFWRV9BU19JWDg2X1NBSEYuCgoyMDA3LTAzLTE1ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMTE2NwoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqYWRkdGkzXzEsICphZGR0aTNfMSBzcGxpdHRlcik6IFVzZQoJeDg2XzY0X2dlbmVyYWxfb3BlcmFuZCBhcyBvcGVyYW5kWzJdIHByZWRpY2F0ZS4gIFJlbW92ZSAiaUYiCglmcm9tIG9wZXJhbmQgY29uc3RyYWludHMgYW5kIHVzZSAiZSIgY29uc3RyYWludCBpbnN0ZWFkLgoJKCpzdWJ0aTNfMSwgKnN1YnRpM18xIHNwbGl0dGVyKTogRGl0dG8uCgkoKm5lZ3RpMl8xLCAqbmVndGkyXzEgc3BsaXR0ZXIpOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgYXMKCW9wZXJhbmRbMV0gcHJlZGljYXRlLgoKMjAwNy0wMy0xNCAgU2ViYXN0aWFuIFBvcCAgPHNlYmFzdGlhbi5wb3BAaW5yaWEuZnI+CgoJKiB0cmVlLWxvb3AtbGluZWFyLmMgKGdhdGhlcl9pbnRlcmNoYW5nZV9zdGF0cyk6IEZvciBtdWx0aWRpbWVuc2lvbmFsCglhcnJheXMsIG11bHRpcGx5IHRoZSBhY2Nlc3Mgc3RyaWRlcyBieSB0aGUgc2l6ZSBvZiB0aGUgc3ViLWFycmF5LgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL2x0cmFucy01LmM6IE5ldy4KCjIwMDctMDMtMTQgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWd1cmUuYWMgKEhBVkVfQVNfSVg4Nl9TQUhGKTogT24geDg2IHRhcmdldHMgY2hlY2sgd2hldGhlcgoJdGhlIGNvbmZpZ3VyZWQgYXNzZW1ibGVyIHN1cHBvcnRzIHRoZSBzYWhmIG1uZW1vbmljLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHg4Nl9zYWhmXzEpOiBEZXBlbmRpbmcgb24gSEFWRV9BU19JWDg2X1NBSEYsCgllbWl0ICJzYWhmIiBvciAiLmJ5dGVcdDB4OWUiIGFzIGFzbSB0ZW1wbGF0ZS4KCjIwMDctMDMtMTQgIE1pY2hhZWwgTWVpc3NuZXIgIDxtaWNoYWVsLm1laXNzbmVyQGFtZC5jb20+CgoJUFIgMzEwMTgKCSogY29uZmlnL2kzODYvaTM4Ni5oIChYODZfVFVORV9TSE9SVEVOX1g4N19TU0UpOiBOZXcgdHVuaW5nCglvcHRpb24gdG8gcmVwbGFjZSBoYXJkIGNvZGVkIFRBUkdFVF94eHggaW4gbWQgZmlsZS4KCShYODZfVFVORV9BVk9JRF9WRUNUT1JfREVDT0RFKTogRGl0dG8uCgkoWDg2X1RVTkVfU0xPV19JTVVMX0lNTTMyX01FTSk6IERpdHRvLgoJKFg4Nl9UVU5FX1NMT1dfSU1VTF9JTU04KTogRGl0dG8uCgkoWDg2X1RVTkVfTU9WRV9NMV9WSUFfT1IpOiBEaXR0by4KCShYODZfVFVORV9OT1RfVU5QQUlSQUJMRSk6IERpdHRvLgoJKFg4Nl9UVU5FX05PVF9WRUNUT1JNT0RFKTogRGl0dG8uCgkoVFVORV9TSE9SVEVOX1g4N19TU0UpOiBVc2UgbmV3IHR1bmluZyBvcHRpb24uCgkoVFVORV9BVk9JRF9WRUNUT1JfREVDT0RFKTogRGl0dG8uCgkoVFVORV9TTE9XX0lNVUxfSU1NMzJfTUVNKTogRGl0dG8uCgkoVFVORV9TTE9XX0lNVUxfSU1NOCk6IERpdHRvLgoJKFRVTkVfTU9WRV9NMV9WSUFfT1IpOiBEaXR0by4KCShUVU5FX05PVF9VTlBBSVJBQkxFKTogRGl0dG8uCgkoVFVORV9OT1RfVkVDVE9STU9ERSk6IERpdHRvLgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3R1bmVfZmVhdHVyZXMpOiBGaWxsIGluIG5ldyB0dW5pbmcKCW9wdGlvbnMuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChmaXhfdHJ1bmM/Zj8xX3NzZSBwZWVwaG9sZTIpOiBVc2UgbmV3Cgl0dW5pbmcgb3B0aW9ucyBpbnN0ZWFkIG9mIGhhcmQgY29kZWQgVEFSR0VUX3h4eC4KCShmaXggc3NlbW9kZSBwZWVwaG9sZTIncyk6IERpdHRvLgoJKGltdWwgcGVlcGhvbGUyJ3MpOiBEaXR0by4KCShtb3ZzaV9vcik6IERpdHRvLgoJKG1vdmRpX29yX3JleDY0KTogRGl0dG8uCgkobW92ZSBwZWVwaG9sZTIpOiBEaXR0by4KCShub3QgcGVlcGhvbGUyJ3MpOiBEaXR0by4KCjIwMDctMDMtMTQgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJKiBjLWNvbW1vbi5oIChlbXB0eV9ib2R5X3dhcm5pbmcpOiBSZW5hbWUgdG8gZW1wdHlfaWZfYm9keV93YXJuaW5nLgoJKiBjLWNvbW1vbi5jIChlbXB0eV9pZl9ib2R5X3dhcm5pbmcpOiBSZXBocmFzZSBkaWFnbm9zdGljIG1lc3NhZ2UuCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX2lmX2JvZHkpOiBBbHdheXMgYWRkIGFuIGVtcHR5IHN0YXRlbWVudCBpbiBjYXNlCglvZiBlbXB0eSBib2R5LgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9kb19zdGF0ZW1lbnQpOiBXYXJuIGFib3V0IGVtcHR5IGJvZHkgaW4KCWRvL3doaWxlIHN0YXRlbWVudC4KCSogYy10eXBlY2sgKGNfZmluaXNoX2lmX3N0bXQpOiBDYWxsIGVtcHR5X2lmX2JvZHlfd2FybmluZy4KCSogZG9jL2ludm9rZS50ZXhpICgtV2VtcHR5LWJvZHkpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDctMDMtMTQgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCVBSIGMvMjE0MzgKCSogYy1jb21tb24uaCAod2Fybl9mb3JfZGl2X2J5X3plcm8pOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jICh3YXJuX2Zvcl9kaXZfYnlfemVybyk6IERlZmluZS4KCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogQ2FsbCB3YXJuX2Zvcl9kaXZfemVybyBpbnN0ZWFkIG9mCgl3YXJuaW5nLgoKMjAwNy0wMy0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoUFJFUFJPQ0VTU09SX0RFRklORVMpOiBBZGQgZGlyZWN0b3J5IHRlcm1pbmF0b3JzCgl0byBQUkVGSVggYW5kIFNUQU5EQVJEX1BSRUZJWC4KCjIwMDctMDMtMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoJICAgIFBoaWwgRWR3YXJkcyAgPHBoaWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGd0aHItdnh3b3Jrcy5oOiBBZGQgYW4gZXh0ZXJuICJDIiB3cmFwcGVyIGZvciBDKysuCgkoX19ndGhyZWFkX29uY2VfdCk6IFJlbW92ZSBidXN5IGZpZWxkIGZvciBSVFBzLgoJKF9fR1RIUkVBRF9PTkNFX0lOSVQpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgoyMDA3LTAzLTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgVnhXb3JrcyBvcHRpb25zLgoKMjAwNy0wMy0xNCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoaTM4NiBhbmQgeDg2LTY0IE9wdGlvbnMpOiBDbGFyaWZ5IC1tc2FoZiBvcHRpb24uCgoyMDA3LTAzLTEzICBTZW9uZ2JhZSBQYXJrIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDU5MAoJKiB0cmVlLW5ydi5jICh0cmVlX25ydik6IENoZWNrIGZvciB0aGUgcGFydGlhbCB1cGRhdGUgb2YgdGhlCglyZXR1cm4gdmFsdWUuCgoyMDA3LTAzLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZsYWdzLmggKGZsYWdfcmFuZG9tX3NlZWQpOiBSZW1vdmUgZGVjbGFyYXRpb24sIGluIGZhdm9yIG9mLi4uCgkqIHRvcGxldi5oIChnZXRfcmFuZG9tX3NlZWQsIHNldF9yYW5kb21fc2VlZCk6IC4uLiB0aGVzZS4KCSogdHJlZS5jIChnZXRfZmlsZV9mdW5jdGlvbl9uYW1lKTogVXNlIHRoZSBmb3JtZXIuCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBVc2UgdGhlIGxhdHRlci4KCSogdG9wbGV2LmMKCjIwMDctMDMtMTMgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglQUiBtaWRkbGUtZW5kLzMxMTI3CgkqIGNzZS5jIChjc2VfZmluZF9wYXRoKTogRG8gbm90IGJhaWwgb3V0IGlmIGEgYmFzaWMgYmxvY2sgdGhhdAoJd2UgYWxyZWFkeSB2aXNpdGVkIG5vdyBiZWNvbWVzIHBhcnQgb2YgYSBwYXRoIHRoYXQgc3RhcnRzIGF0IGEKCWRpZmZlcmVudCBiYXNpYyBibG9jay4gIEp1c3QgZGlzYWxsb3cgdGhpcywgdG8gbWFrZSBzdXJlIHdlCgl2aXNpdCBlYWNoIGJhc2ljIGJsb2NrIGF0IG1vc3Qgb25jZS4KCjIwMDctMDMtMTMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX21heWJlX2hvdF9lZGdlX3ApOiBMb29rIGZvciBob3QvY29sZAoJYXR0cmlidXRlcywgd2hlbiBwcm9maWxlIGVzaXRtYXRlIGlzIHByZXNlbnQsIGNhbGxzIHdpdGggdmVyeSBsb3cKCWZyZXF1ZW5jeSBhcmUgY29sZC4KCjIwMDctMDMtMTMgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzA3MzAKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2OTAwCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYzogSW5jbHVkZSBnbXAuaC4KCShib3VuZHMpOiBOZXcgdHlwZS4KCShtcHpfc2V0X2RvdWJsZV9pbnQsIGdldF90eXBlX2JvdW5kcywgbXB6X3RvX2RvdWJsZV9pbnQsCglzcGxpdF90b192YXJfYW5kX29mZnNldCwgZGV0ZXJtaW5lX3ZhbHVlX3JhbmdlLAoJYm91bmRfZGlmZmVyZW5jZV9vZl9vZmZzZXR0ZWRfYmFzZSwgcmVmaW5lX2JvdW5kc191c2luZ19ndWFyZCwKCWJvdW5kX2RpZmZlcmVuY2UsIGJvdW5kc19hZGQsIGJvdW5kc19uZWdhdGUsCgludW1iZXJfb2ZfaXRlcmF0aW9uc19uZV9tYXgsIGR1bXBfYWZmaW5lX2l2KTogTmV3IGZ1bmN0aW9ucy4KCShudW1iZXJfb2ZfaXRlcmF0aW9uc19uZSwgbnVtYmVyX29mX2l0ZXJhdGlvbnNfbHRfdG9fbmUsCglhc3NlcnRfbG9vcF9yb2xsc19sdCwgYXNzZXJ0X2xvb3Bfcm9sbHNfbGUpOiBVc2UgYm91bmRzIG9uIHRoZQoJZGlmZmVyZW5jZSBvZiBpbml0aWFsIGFuZCBmaW5hbCB2YWx1ZSBvZiBjb250cm9sIGl2IHRvIHZhbGlkYXRlCglyZXN1bHRzLgoJKG51bWJlcl9vZl9pdGVyYXRpb25zX2NvbmQpOiBBZGQgbG9vcCBwYXJhbWV0ZXIuICBEZXRlcm1pbmUgYm91bmRzCglvbiB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgZXh0cmVtZXMgb2YgdGhlIGNvbnRyb2wgaXYuICBBZGQgZHVtcHMuCgkoZXhwYW5kX3NpbXBsZV9vcGVyYXRpb25zKTogSGFuZGxlIHBoaSBub2Rlcy4KCShzaW1wbGlmeV91c2luZ19pbml0aWFsX2NvbmRpdGlvbnMpOiBEbyBub3QgcmVjb3JkIHVzZWQgY29uZGl0aW9ucy4KCShudW1iZXJfb2ZfaXRlcmF0aW9uc19leGl0KTogUGFzcyBsb29wIHRvIG51bWJlcl9vZl9pdGVyYXRpb25zX2NvbmQuCglEbyBub3Qgc2V0IGFkZGl0aW9uYWxfaW5mby4KCShpbXBsaWVzX25vbm5lZ2F0aXZlX3AsIGltcGxpZXNfZ2VfcCk6IFJlbW92ZWQuCgkoZGVyaXZlX2NvbnN0YW50X3VwcGVyX2JvdW5kKTogRG8gbm90IHVzZSBwYXJhbWV0ZXIgYGFkZGl0aW9uYWwnLgoJKHJlY29yZF9lc3RpbWF0ZSk6IFBhcmFtZXRlciBgYWRkaXRpb25hbCcgcmVtb3ZlZC4gIFBhcmFtZXRlcgoJYGlfYm91bmQnIGFkZGVkLiAgRG8gbm90IGNhbGwgZGVyaXZlX2NvbnN0YW50X3VwcGVyX2JvdW5kLgoJKHJlY29yZF9ub253cmFwcGluZ19pdik6IFVzZSBkZXJpdmVfY29uc3RhbnRfdXBwZXJfYm91bmQgdG8KCWJvdW5kIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBlc3RpbWF0ZS4KCShlc3RpbWF0ZV9udW1iZXJzX29mX2l0ZXJhdGlvbnNfbG9vcCk6IFBhc3MgdGhlIGVzdGltYXRlIGZyb20KCXRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBhbmFseXNpcyB0byByZWNvcmRfZXN0aW1hdGUuCgkqIHRyZWUuaCAobXVsdGlwbGVfb2ZfcCk6IERlY2xhcmUuCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jIChleHByZXNzaW9uX2V4cGVuc2l2ZV9wKTogUmVtb3ZlZC4KCShzY2V2X2NvbnN0X3Byb3ApOiBEbyBub3QgY2hlY2sgZXhwcmVzc2lvbl9leHBlbnNpdmVfcC4KCSogZm9sZC1jb25zdC5jIChtdWx0aXBsZV9vZl9wKTogRXhwb3J0ZWQuCgkqIGRvdWJsZS1pbnQuYyAoZG91YmxlX2ludF9tYXNrKTogRXhwb3J0ZWQuCgkqIGRvdWJsZS1pbnQuaCAoZG91YmxlX2ludF9tYXNrKTogRGVjbGFyZS4KCSogdHJlZS1mbG93LmggKHN0cnVjdCB0cmVlX25pdGVyX2Rlc2MpOiBSZW1vdmVkIGFkZGl0aW9uYWxfaW5mbwoJZmllbGQuICBBZGRlZCBtYXggZmllbGQuCgoyMDA3LTAzLTEzICBEYXZpZCBUYXlsb3IgIDx0YXlsb3JAY2FuZGQub3JnPgoKCVBSIGRyaXZlci8xMjQ0OAoJKiBnY2MuYyAoY3BwX3VuaXF1ZV9vcHRpb25zKTogSWYgLU1UIG9yIC1NUSBpcyBzZWVuLCBkb24ndCBwYXNzCglkZWZhdWx0IC1NUS4KCjIwMDctMDMtMTMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzMxMTIzCgkqIHBhLm1kICh2ZGVwaV9pb3IpOiBEb24ndCBhbGxvdyB6ZXJvIGxlbmd0aCBkZXBvc2l0LiAgTGlrZXdpc2UgZm9yCgl0d28gdW5hbWVkIHBhdHRlcm5zLgoKMjAwNy0wMy0xMyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtY3gxNiwgbXNhaGYpOiBOZXcgb3B0aW9ucy4KCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfY21weGNoZzE2YiwgeDg2X3NhaGYpOiBSZW1vdmUuCgkoaXg4Nl90dW5lX2ZlYXR1cmVzKSBbWDg2X1RVTkVfVVNFX1NBSEZdOiBFbmFibGUgZm9yIG1fR0VORVJJQy4KCgkqIGNvbmZpZy9pMzg2L2RyaXZlci1pMzg2LmMgKGJpdF9MQUhGX0xNKTogTmV3IGRlZmluZS4KCShob3N0X2RldGVjdF9sb2NhbF9jcHUpOiBEZXRlY3QgY3gxNiBhbmQgbGFoZl9sbSBjcHVpZCBiaXRzLgoJT3V0cHV0IC1tY3gxNiBhbmQgLW1zYWhmIG9wdGlvbnMgd2hlbiBjb3JyZXNwb25kaW5nIGJpdCBpcyBzZXQuCgoJKiBkb2MvaW52b2tlLnRleGkgKGkzODYgYW5kIHg4Ni02NCBPcHRpb25zKTogRG9jdW1lbnQgLW1jeDE2CglhbmQgLW1zYWhmIG9wdGlvbnMuCgoyMDA3LTAzLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogVGVzdCBmb3IgYXNzZW1ibGVyIHRvbGVyYW5jZSB0byAjIDAgIiIuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBFbWl0IGl0IGlmIEhBVkVfQVNfTElORV9aRVJPLgoKMjAwNy0wMy0xMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKFNwZWMgRmlsZXMpOiBVcGRhdGUgZm9yICcleywnIHNwZWMuCgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi1mYWxsYmFjay5jOiBDb21waWxlIGZpbGUgb25seSBvbiBwb3dlcnBjLgoJKGhhbmRsZV9zeXNjYWxsKTogSGFuZGxlIGRpcmVjdCBzeXN0ZW0gY2FsbHMuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEhBU19NRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBEZWxldGUuCgoyMDA3LTAzLTEyICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRml4IGNwcC5pbmZvIGNyb3NzLXJlZmVyZW5jZS4KCSogZG9jL3Bhc3Nlcy50ZXhpOiBGaXggZ2NjLmluZm8gY3Jvc3MtcmVmZXJlbmNlLgoKMjAwNy0wMy0xMiAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDgzNQoJKiBsYW1iZGEtY29kZS5jIChjYW5fY29udmVydF90b19wZXJmZWN0X25lc3QpOiBDaGVjayB3aGV0aGVyCgliYl9mb3Jfc3RtdCBpcyBub3QgTlVMTCBiZWZvcmUgYWNjZXNzaW5nIGl0LgoKMjAwNy0wMy0xMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY2MuYyAobWFpbik6IEhhbmRsZSB0YXJnZXRfc3lzcm9vdF9oZHJzX3N1ZmZpeCBiZWluZyBOVUxMIGZvcgoJc29tZSBtdWx0aWxpYnMuCgoyMDA3LTAzLTEyICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiAzMDYzNQoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCAtLWVuYWJsZS1zdGFnZTEtbGFuZ3VhZ2VzCgoyMDA3LTAzLTEyICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiB0cmVlLXBhc3MuaCAocGFzc19pbnRvX2NmZ19sYXlvdXRfbW9kZSwKCXBhc3Nfb3V0b2ZfY2ZnX2xheW91dF9tb2RlKTogRGVjbGFyZS4KCSogY2ZnbGF5b3V0LmMgKGludG9fY2ZnX2xheW91dF9tb2RlLCBvdXRvZl9jZmdfbGF5b3V0X21vZGUsCglwYXNzX2ludG9fY2ZnX2xheW91dF9tb2RlLCBwYXNzX291dG9mX2NmZ19sYXlvdXRfbW9kZSk6IE5ldy4KCSogcGFzc2VzLmMgKHBhc3NfaW50b19jZmdfbGF5b3V0X21vZGUpOiBTY2hlZHVsZSBiZWZvcmUganVtcDIuCgkocGFzc19vdXRvZl9jZmdfbGF5b3V0X21vZGUpOiBTY2hlZHVsZSBhZnRlciBwYXNzX3J0bF9pZmN2dC4KCjIwMDctMDMtMTIgIFNlb25nYmFlIFBhcmsgPHNlb25nYmFlLnBhcmtAZ21haWwuY29tPgoKCSogYy1kZWNsLmMgKHdhcm5fdmFyaWFibGVfbGVuZ3RoX2FycmF5KTogTmV3IGZ1bmN0aW9uLgoJUmVmYWN0b3JlZCBmcm9tIGdyb2tkZWNsYXJhdG9yIHRvIGhhbmRsZSB3YXJuX3ZsYQoJYW5kIGhhbmRsZSB1bm5hbWVkIGFycmF5IGNhc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBSZWZhY3RvcmVkIFZMQSB3YXJuaW5nIGNhc2UuCgkqIGMub3B0IChXdmxhKTogTmV3IGZsYWcuCgkqIGRvYy9pbnZva2UudGV4aSAoV3ZsYSk6IE5ldyB3YXJuaW5nLgoKMjAwNy0wMy0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9lbGZfc2VjdGlvbl90eXBlX2ZsYWdzKTogTmV3LgoJKFRBUkdFVF9TRUNUSU9OX1RZUEVfRkxBR1MpOiBOZXcuCgoyMDA3LTAzLTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19yZWxvY19yd19tYXNrKTogTmV3LgoJKiBjb25maWcvZGFyd2luLXByb3Rvcy5oIChtYWNob3BpY19yZWxvY19yd19tYXNrKTogRGVjbGFyZS4KCSogY29uZmlnL2Rhcndpbi5oIChUQVJHRVRfQVNNX1JFTE9DX1JXX01BU0spOiBOZXcuCgoyMDA3LTAzLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwZGVmYXVsdC5jIChjcHBfRVhFQ19QUkVGSVgpOiBOZXcgdmFyaWFibGUuCgkqIGNwcGRlZmF1bHQuaCAoY3BwX1BSRUZJWCk6IERvY3VtZW50LgoJKGNwcF9QUkVGSVhfbGVuKTogTGlrZXdpc2UuCgkoY3BwX0VYRUNfUFJFRklYKTogTmV3IHZhcmlhYmxlLgoJKiBNYWtlZmlsZS5pbiAoUFJFUFJPQ0VTU09SX0RFRklORVMpOiBBZGQgU1RBTkRBUkRfRVhFQ19QUkVGSVguCgkqIGMtaW5jcGF0aC5jIChhZGRfc3RhbmRhcmRfcGF0aHMpOiBDb3JyZWN0IGxvZ2ljIGZvciByZWxvY2F0aW5nCglwYXRocyB3aXRoaW4gcHJlZml4LgoKMjAwNy0wMy0xMiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGZpeHVuc190cnVuYzxtb2RlPmhpMik6IEltcGxlbWVudCBmcm9tCglmaXh1bnNfdHJ1bmNzZmhpMiBhbmQgZml4dW5zX3RydW5jZGZoaTIgdXNpbmcgU1NFTU9ERUYKCW1vZGUgbWFjcm8uCgkoZml4X3RydW5jPG1vZGU+ZGlfc3NlKTogSW1wbGVtZW50IGZyb20gZml4X3RydW5jc2ZkaV9zc2UgYW5kCglmaXhfdHJ1bmNkZmRpX3NzZSB1c2luZyBTU0VNT0RFRiBtb2RlIG1hY3JvLgoJKGZpeF90cnVuYzxtb2RlPnNpX3NzZSk6IEltcGxlbWVudCBmcm9tIGZpeF90cnVuY3Nmc2lfc3NlIGFuZAoJZml4X3RydW5jZGZzaV9zc2UgdXNpbmcgU1NFTU9ERUYgbW9kZSBtYWNyby4KCShmaXhfdHJ1bmM/Zj9pX3NzZSBwZWVwaG9sZTIpOiBJbXBsZW1lbnQgdXNpbmcgU1NFTU9ERUYgbW9kZSBtYWNyby4KCShmaXhfdHJ1bmM/Zj9pX3NzZSBLOCBwZWVwaG9sZTIpOiBGaXggcmVnaXN0ZXIgY29uc3RyYWludC4KCjIwMDctMDMtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAoaVs0NTY3XTg2LXdycy12eHdvcmtzLCBpWzQ1NjddODYtd3JzLXZ4d29ya3NhZSk6IEFkZAoJZWxmb3MuaCB0byB0bV9maWxlLgoKMjAwNy0wMy0xMiAgT2xnYSBHb2xvdmFuZXZza3kgIDxvbGdhQGlsLmlibS5jb20+CgogIAkqIHRyZWUuaCA6IEFkZCBtdWx0aXBsZV9vZl9wIGRlY2xhcmF0aW9uLgogIAkqIGZvbGQtY29uc3QuYyAobXVsdGlwbGVfb2ZfcCk6IE1ha2UgbXVsdGlwbGVfb2ZfcCBwdWJsaWMuCiAgCSogaXBhLXR5cGUtZXNjYXBlLmMgKHJlc3VsdHNfb2ZfbWFsbG9jKTogUmVkdW5kYW50LgogIAkodmlzaXRlZF9zdG10cyk6IE5ldy4gVmlzaXRlZCBzdG10IGZvciB3YWxrX3VzZV9kZWZfY2hhaW5zLgogIAkoY2FzdF90eXBlKTogRXh0ZW5kZWQgd2l0aCBuZXcgbWVtYmVycy4KICAJKGNoZWNrX2Nhc3QpOiBSZXR1cm5zIGNhc3RfdHlwZS4KICAJKGNhc3QpOiBOZXcgc3RydWN0dXJlIGZvciBkYXRhIG9mIHdhbGtfdXNlX2RlZl9jaGFpbnMuCiAgCShpc19tYWxsb2NfcmVzdWx0LCBpc19jYXN0X2Zyb21fbm9uX3BvaW50ZXJfMSwKICAJaXNfY2FzdF9mcm9tX25vbl9wb2ludGVyLAogIAlpc19hcnJheV9hY2Nlc3NfdGhyb3VnaF9wb2ludGVyX2FuZF9pbmRleCk6IE5ldyBmdW5jdGlvbnMuCiAgCShsb29rX2Zvcl9jYXN0cyk6IFJldHVybnMgY2FzdCB0eXBlcy4KIAkoY2hlY2tfY2FsbCk6IFJldHVybnMgdm9pZC4KICAJKG9rYXlfcG9pbnRlcl9vcGVyYXRpb24pOiBVc2Ugc3VwcG9ydCBvZiBwb2ludGVyIHBsdXMgaW5kZXgsCiAgCXBvaW50ZXIgcGx1cyBjb25zdGFudCBhbmQgYWxsb3cgYWxsIG11bHRpcGxpY2F0aW9ucy4KCjIwMDctMDMtMTEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTExNQoJKiB0cmVlLXZycC5jIChleHRyYWN0X3JhbmdlX2Zyb21fYmluYXJ5X2V4cHIpOiBNYWtlIHN1cmUKCXRoZSBzaGlmdCBjb3VudCBpcyBwb3NpdGl2ZSBhbmQgbm9uLWFudGktcmFuZ2UgZm9yIFJTSElGVF9FWFBSLgoJQSBzaGlmdCBjb3VudCBvZiB6ZXJvIGlzIG5vdCBzcGVjaWFsIGFzIHdpdGggKl9ESVZfRVhQUi4KCSh2cnBfaW50X2NvbnN0X2Jpbm9wKTogSGFuZGxlIFJTSElGVF9FWFBSIGZvciBkZXRlcm1pbmluZyBvdmVyZmxvdwoJZGlyZWN0aW9uLgoKMjAwNy0wMy0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIHRyZWUtdnJwLmMgKHZycF9pbnRfY29uc3RfYmlub3ApOiBIYW5kbGUgUExVU19FWFBSIGFuZAoJdGhlICpfRElWX0VYUFIgY29kZXMgY29ycmVjdGx5IHdpdGggb3ZlcmZsb3cgaW5maW5pdGllcy4KCjIwMDctMDMtMTEgIElyYSBSb3NlbiAgPGlyYXJAaWwuaWJtLmNvbT4KCgkqIHRyZWUtZGF0YS1yZWYuYyAoYW5hbHl6ZV9vZmZzZXQpOiBBZGQgYSByZXR1cm4gdmFsdWUgKGJvb2wpIHRvCglpbmRpY2F0ZSBzdWNjZXNzL2ZhaWx1cmUgb2YgdGhlIGFuYWx5c2lzLiBBZGQgbmVnYXRpb24gdG8gc3VidHJhaGVuZAoJaW4gY2FzZSBvZiBzdWJ0cmFjdGlvbi4gRmFpbCBpZiBib3RoIG9wZXJhbmRzIGNvbnRhaW4gY29uc3RhbnRzLgoJKGNyZWF0ZV9kYXRhX3JlZik6IEZhaWwgaWYgYW5hbHl6ZV9vZmZzZXQgZmFpbHMuCgoyMDA3LTAzLTExICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZnJuZGludHhmMik6IFJlbmFtZSB0byAuLi4KCShyaW50eGYyKTogLi4uIHRoaXMuIFJlbW92ZSBleHBhbmRlciBoYXZpbmcgc2FtZSBuYW1lLgoJKHJpbnRzZjIsIHJpbnRkZjIpOiBJbXBsZW1lbnQgdXNpbmcgU1NFTU9ERUYgbWFjcm8uCgkocm91bmRzZjIsIHJvdW5kZGYyKTogRGl0dG8uCgkobHJpbnQ8bW9kZT5kaTIsIGxyaW50PG1vZGU+c2kyKTogSW1wbGVtZW50IHVzaW5nIFNTRU1PREVJMjQgbWFjcm8uCgkobHJvdW5kPG1vZGU+ZGkyLCBscm91bmQ8bW9kZT5zaTIpOiBEaXR0by4KCjIwMDctMDMtMTEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIGxvd2VyLXN1YnJlZy5jOiBJbmNsdWRlIGV4Y2VwdC5oLgoJKGRlY29tcG9zZV9tdWx0aXdvcmRfc3VicmVncyk6IFZlcmlmeSB0aGF0IHRoZSBvbmx5IGNvbnRyb2wgZmxvdwoJaW5zbnMgd2UgY2FuIHNwbGl0IGFyZSBsb2FkcyB0byBtdWx0aS13b3JkcyBwc2V1ZG9zLgoJSGFuZGxlIGJyZWFraW5nIHN1Y2ggYmxvY2tzIGFmdGVyIHNwbGl0dGluZywgaW5zdGVhZCBvZiBjYWxsaW5nCglmaW5kX21hbnlfc3ViX2Jhc2ljX2Jsb2Nrcy4KCgkqIGxvb3AtdW5yb2xsLmMgKHNwbGl0X2VkZ2VfYW5kX2luc2VydCk6IERvbid0IHNldCBCQl9TVVBFUkJMT0NLCglvbiB0aGUgbmV3IGJhc2ljIGJsb2NrLiAgQWRkIGEgbGVuZ3RoeSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHdlCgl0aG91Z2h0IHRoaXMgd2FzIG5lY2Vzc2FyeS4KCSogY2ZnbGF5b3V0LmMgKGNmZ19sYXlvdXRfZmluYWxpemUpOiBEb24ndCBicmVhayBzdXBlcmJsb2Nrcy4KCjIwMDctMDMtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMwOTI0CgkqIHRyZWUuYyAod2Fsa190eXBlX2ZpZWxkcyk6IFJlY3Vyc2UgaW50byB0aGUgZWxlbWVudCB0eXBlIG9mCglBUlJBWV9UWVBFcyBpZiB0aGVyZSBpcyBhIHBvaW50ZXIgc2V0LgoKMjAwNy0wMy0xMCAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCgkqIGMtY29tbW9uLmMgKHdhcm5fbG9naWNhbF9vcGVyYXRvcik6IEZpeCBjb25kaXRpb24uCgoyMDA3LTAzLTEwICBUb2JpYXMgU2NobMOvwr/CvXRlciAgPHRvYmlAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoREFSV0lOX01JTlZFUlNJT05fU1BFQyk6IEFkZCBtaXNzaW5nCglxdW90YXRpb24gbWFyay4KCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19zZWxlY3Rfc2VjdGlvbik6IFJlbW92ZSBzdXBlcmZsdW91cwoJYXJndW1lbnQgaW4gY2FsbCB0byBjYXRlZ29yaXplX2RlY2xfZm9yX3NlY3Rpb24uICBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZSBzaGxpYi4KCjIwMDctMDMtMTAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjIChnbGliY19oZWFkZXJfZGlyKTogU2V0IHVzaW5nIHdpdGhfYnVpbGRfc3lzcm9vdCBpZgoJZGVmaW5lZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNy0wMy0xMCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMzExMDEKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoVU5TUEVDX0MyX0ZMQUcpOiBOZXcgY29uc3RhbnQuCgkoZnByZW14ZjRfaTM4NywgZnByZW0xeGY0X2kzODcpOiBVc2UgVU5TUEVDX0MyX0ZMQUcuCgkoZm1vZHhmMywgZm1vZDxtb2RlPjMsIHJlbWFpbmRlcnhmMywgcmVtYWluZGVyPG1vZGU+Myk6CglBZGQgTEFCRUxfTlVTRVMgdG8gZW1pdHRlZCBsYWJlbC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2VtaXRfZnBfdW5vcmRlcmVkX2p1bXApOiBBZGQKCWJyYW5jaCBwcm9iYWJpbGl0eSB2YWx1ZSB0byBlbWl0dGVkIGp1bXAgaW5zbi4KCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KVtVTlNQRUNdOiBIYW5kbGUgVU5TUEVDX0MyX0ZMQUcuCglEbyBub3QgY2hlY2sgbGlmZSBpbmZvcm1hdGlvbiBhbmQgZG8gbm90IHJlLWFycmFuZ2UgaW5wdXQgb3BlcmFuZHMKCWZvciBVTlNQRUNfRlNDQUxFX0VYUCwgVU5TUEVDX0ZQUkVNX1UgYW5kIFVOU1BFQ19GUFJFTTFfVS4KCjIwMDctMDMtMTAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoX2luc25fbGVuZ3RoX2FkanVzdG1lbnQpOiBBZGp1c3QgZm9yCgl0aGUgY2hhbmdlIG9mIGRlY29kZV9hc21fb3BlcmFuZHMuCgoyMDA3LTAzLTEwICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIG1vZGUtc3dpdGNoaW5nLmMgKGNyZWF0ZV9wcmVfZXhpdCk6IFNraXAgYmxvY2thZ2UgaW5zbi4KCjIwMDctMDMtMDkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1wYXNzLmggKFRPRE9fdXBkYXRlX3NtdF91c2FnZSk6IFJlbW92ZS4KCVVwZGF0ZSBhbGwgdXNlcnMuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwcl8xKTogUmVtb3ZlCglhcmd1bWVudCBTT01FLgoJVXBkYXRlIGFsbCB1c2Vycy4KCjIwMDctMDMtMDkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChhdHRyX2xlbmd0aF9jYWxsKTogUmV2aXNlIGNvbmRpdGlvbiBmb3IgbG9uZwoJcGMtcmVsYXRpdmUgYnJhbmNoLgoJKG91dHB1dF9jYWxsKTogVXNlICJMT05HX1BJQ19TRElGRiIgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UgZm9yIGxvbmcKCWxvY2FsIGNhbGxzIG9uIHRoZSBTT00gdGFyZ2V0LiAgRG9uJ3QgdXNlICJMT05HX1BJQ19QQ1JFTCIgY2FsbAoJc2VxdWVuY2Ugb24gU09NIHRhcmdldC4KCjIwMDctMDMtMDkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2NjLmM6IERvY3VtZW50ICV7LCBpbiBiaWcgY29tbWVudCBhdCB0b3AuCgkoaW5wdXRfc3VmZml4X21hdGNoZXMpOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBmb3IgLnMgYW5kCgkuUy4KCShpbnB1dF9zcGVjX21hdGNoZXMpOiBOZXcuCgkoaGFuZGxlX2JyYWNlcyk6IEhhbmRsZSAleywuCgkodmFsaWRhdGVfc3dpdGNoZXMpOiAnLCcgaW5kaWNhdGVzIGEgdmFsdWUgd2hpY2ggaXMgbm90IGEgc3dpdGNoLgoJKiBjb25maWcvYWxwaGEvb3NmLmggKEFTTV9GSU5BTF9TUEVDKTogVXNlICV7LCByYXRoZXIgdGhhbiAley4KCXRvIGRldGVjdCBhc3NlbWJsZXIgaW5wdXQuCgkqIGNvbmZpZy9pMzg2L3NvbDIuaCAoQ1BQX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3Z4d29ya3MuaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9seW54LmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChBU01fU1BFQ19DT01NT04pOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvZGFyd2luLmggKERBUldJTl9NSU5WRVJTSU9OX1NQRUMpOiBPYmplY3RpdmUtQyBwbHVzCgktbTY0IGNhdXNlcyBkZXBsb3ltZW50IHRhcmdldCB0byBkZWZhdWx0IHRvIDEwLjUuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKERBUldJTl9NSU5WRVJTSU9OX1NQRUMpOiBMaWtld2lzZS4KCjIwMDctMDMtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzI2MDkwCgkqIHRhcmdldC5oICh0YXJnZXRtLmFzbS5vdXQucmVsb2NfcndfbWFzayk6IE5ldy4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfQVNNX1JFTE9DX1JXX01BU0spOiBOZXcuCgkoVEFSR0VUX0FTTV9PVVQpOiBVc2UgaXQuCgkqIHRhcmdob29rcy5jLCB0YXJnaG9va3MuaCAoZGVmYXVsdF9yZWxvY19yd19tYXNrKTogTmV3LgoJKiB2YXJhc20uYyAoY2F0ZWdvcml6ZV9kZWNsX2Zvcl9zZWN0aW9uKTogUmVtb3ZlIHNobGliIGFyZ3VtZW50OwoJdXNlIHRoZSBuZXcgcmVsb2NfcndfbWFzayB0YXJnZXQgaG9vayBpbnN0ZWFkLgoJKGRlZmF1bHRfc2VjdGlvbl90eXBlX2ZsYWdzXzEpOiBNZXJnZSBpbnRvLi4uCgkoZGVmYXVsdF9zZWN0aW9uX3R5cGVfZmxhZ3MpOiAuLi4gaGVyZS4KCShkZWNsX3JlYWRvbmx5X3NlY3Rpb25fMSk6IE1lcmdlIGludG8uLi4KCShkZWNsX3JlYWRvbmx5X3NlY3Rpb24pOiAuLi4gaGVyZS4KCShkZWZhdWx0X2VsZl9zZWxlY3Rfc2VjdGlvbl8xKTogTWVyZ2UgaW50by4uLgoJKGRlZmF1bHRfZWxmX3NlbGVjdF9zZWN0aW9uKTogLi4uIGhlcmUuCgkoZGVmYXVsdF91bmlxdWVfc2VjdGlvbl8xKTogTWVyZ2UgaW50by4uLgoJKGRlZmF1bHRfdW5pcXVlX3NlY3Rpb24pOiAuLi4gaGVyZS4KCShjb21wdXRlX3JlbG9jX2Zvcl9ydHhfMSwgY29tcHV0ZV9yZWxvY19mb3JfcnR4KTogTmV3LgoJKGRlZmF1bHRfc2VsZWN0X3J0eF9zZWN0aW9uKTogVXNlIGl0LgoJKGRlZmF1bHRfZWxmX3NlbGVjdF9ydHhfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBvdXRwdXQuaDogVXBkYXRlIHRvIG1hdGNoLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0FTTV9SRUxPQ19SV19NQVNLKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZWxmX3JlbG9jX3J3X21hc2spOiBOZXcuCgkoVEFSR0VUX0FTTV9SRUxPQ19SV19NQVNLKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl82NF9lbGZfc2VsZWN0X3NlY3Rpb24pOiBBZGp1c3QgY2FsbAoJdG8gY2F0ZWdvcml6ZV9kZWNsX2Zvcl9zZWN0aW9uLgoJKHg4Nl82NF9lbGZfdW5pcXVlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaHB1eC5oIChUQVJHRVRfQVNNX1NFTEVDVF9TRUNUSU9OLAoJVEFSR0VUX0FTTV9VTklRVUVfU0VDVElPTiwgVEFSR0VUX0FTTV9TRUxFQ1RfUlRYX1NFQ1RJT04pOiBSZW1vdmUuCgkoVEFSR0VUX0FTTV9SRUxPQ19SV19NQVNLKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcndyZWxvY19zZWxlY3Rfc2VjdGlvbiwKCWlhNjRfcndyZWxvY191bmlxdWVfc2VjdGlvbiwgaWE2NF9yd3JlbG9jX3NlbGVjdF9ydHhfc2VjdGlvbik6IFJlbW92ZS4KCShpYTY0X2hwdXhfcmVsb2NfcndfbWFzaywgaWE2NF9yZWxvY19yd19tYXNrKTogTmV3LgoJKFRBUkdFVF9SV1JFTE9DKTogUmVtb3ZlLgoJKGlhNjRfc2VjdGlvbl90eXBlX2ZsYWdzKTogQWRqdXN0IGNhbGwgdG8gZGVmYXVsdF9zZWN0aW9uX3R5cGVfZmxhZ3MuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKFRBUkdFVF9BU01fUkVMT0NfUldfTUFTSyk6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VsZl9zZWN0aW9uX3R5cGVfZmxhZ3MpOiBSZW1vdmUuCgkocnM2MDAwX2VsZl9zZWxlY3Rfc2VjdGlvbiwgcnM2MDAwX2VsZl91bmlxdWVfc2VjdGlvbik6IFJlbW92ZS4KCShyczYwMDBfZWxmX3JlbG9jX3J3X21hc2ssIHJzNjAwMF94Y29mZl9yZWxvY19yd19tYXNrKTogTmV3LgoJKHJzNjAwMF94Y29mZl9zZWxlY3Rfc2VjdGlvbik6IFVzZSBkZWNsX3JlYWRvbmx5X3NlY3Rpb24uCgkocnM2MDAwX3hjb2ZmX3NlY3Rpb25fdHlwZV9mbGFncyk6IFVzZSBkZWZhdWx0X3NlY3Rpb25fdHlwZV9mbGFncy4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChUQVJHRVRfQVNNX1JFTE9DX1JXX01BU0spOiBOZXcuCgkoVEFSR0VUX0FTTV9TRUxFQ1RfU0VDVElPTiwgVEFSR0VUX0FTTV9VTklRVUVfU0VDVElPTik6IFJlbW92ZS4KCShUQVJHRVRfU0VDVElPTl9UWVBFX0ZMQUdTKTogUmVtb3ZlLgoJKiBjb25maWcvcnM2MDAwL3hjb2ZmLmggKFRBUkdFVF9BU01fUkVMT0NfUldfTUFTSyk6IE5ldy4KCjIwMDctMDMtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbXBhcmlzb24pOiBSZW1vdmUgY29tcGlsZS10aW1lIGV2YWx1YXRpb24gb2YKCWNvbXBsZXggY29uc3RhbnQgZXF1YWxpdHkvaW5lcXVhbGl0eSBjb21wYXJpc29ucyBmb3IgaGVyZS4KCShmb2xkX2JpbmFyeSkgPEVRX0VYUFI+OiBTaW1wbGlmeSBjb21wbGV4IGNvbXBhcmlzb25zIHRoYXQgYXJlCglrbm93biBhdCBjb21waWxlLXRpbWUgb3IgY2FuIGJlIHNpbXBsaWZpZWQgdG8gYSBzY2FsYXIgY29tcGFyaXNvbi4KCShmb2xkX3JlbGF0aW9uYWxfY29uc3QpOiBNb3ZlIGNvbXBpbGUtdGltZSBldmFsdWF0aW9uIG9mIGNvbXBsZXgKCWNvbnN0YW50IGVxdWFsaXR5L2luZXF1YWxpdHkgY29tcGFyaXNvbnMgdG8gaGVyZS4KCjIwMDctMDMtMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMzA2NDMKCSogY3NlLmMgKGNzZV9pbnNuKTogUmVjb21wdXRlIGRlc3RfaGFzaCBhZnRlciBpbnNlcnRfcmVncyBmb3IKCWRlc3RfYWRkcl9lbHQuCgkoZm9sZF9ydHgpOiBSZWN1cnNlLCBsaWtlIGJlZm9yZSAyMDA2LTExLTAzLgoKMjAwNy0wMy0wOSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy90LW0zMmMgKG0zMmMtcHJhZ21hLm8pOiBBZGQgVE1fSCBkZXBlbmRlbmN5IHRvCgltMzJjLXByYWdtYS5vLgoKMjAwNy0wMy0wOSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMwMzc1CgkqIHRyZWUtc3NhLWRzZS5jIChkc2VfcG9zc2libGVfZGVhZF9zdG9yZV9wKTogRG8gbm90IGVsaW1pbmF0ZSBpZgoJTEhTIG9mIHN0YXRlbWVudHMgaXMgbm90IHRoZSBzYW1lLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3NzYS1kc2UtMTAuYzogTmV3LgoKMjAwNy0wMy0wOSAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKE1JUFMgRFNQIEJ1aWx0LWluIEZ1bmN0aW9ucyk6IERvY3VtZW50IHRoZSBEU1AKCVJFViAyLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tZHNwcjIpOiBEb2N1bWVudCBuZXcgb3B0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChVTlNQRUNfQUJTUV9TX1FCIC4uIFVOU1BFQ19EUFNRWF9TQV9XX1BIKToKCU5ldyB1bnNwZWMgZm9yIERTUCBSRVYgMi4KCSg8dT5tdWxzaWRpM18zMmJpdF9pbnRlcm5hbCk6IENoZWNrIGlmICFUQVJHRVRfRFNQUjIsIGJlY2F1c2UKCXRoZXNlIGluc3RydWN0aW9ucyBhcmUgZXh0ZW5kZWQgaW4gRFNQIFJFViAyLgoJKG1pcHMtZHNwcjIubWQpOiBJbmNsdWRlLgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAobWRzcHIyKTogTmV3IG9wdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2Z1bmN0aW9uX3R5cGUpOiBBZGQgTUlQU19WNFFJX0ZUWVBFX1Y0UUksCglNSVBTX1NJX0ZUWVBFX1NJX1NJX1NJLCBNSVBTX0RJX0ZUWVBFX0RJX1VTSV9VU0ksIE1JUFNfRElfRlRZUEVfU0lfU0ksCglNSVBTX0RJX0ZUWVBFX1VTSV9VU0ksIE1JUFNfVjJISV9GVFlQRV9TSV9TSV9TSS4KCShvdmVycmlkZV9vcHRpb25zKTogQ2hlY2sgVEFSR0VUX0RTUFIyIHRvIGVuYWJsZSBNQVNLX0RTUC4KCShDT0RFX0ZPUl9taXBzX211bF9waCk6IERlZmluZSBpdCB0byBDT0RFX0ZPUl9tdWx2MmhpMy4KCShkc3BfYmRlc2MpOiBBZGQgRFNQIFJFViAyIGJ1aWx0aW5zLiAgUmVtb3ZlIDMyLWJpdCBvbmx5IERTUCBidWlsdGlucy4KCShkc3BfMzJvbmx5X2JkZXNjKTogTmV3IGRlc2NyaXB0aW9uIHRhYmxlIGZvciAzMi1iaXQgb25seSBEU1AgUkVWIDEKCWFuZCAyIGJ1aWx0aW5zLgoJKGJkZXNjX21hcCk6IEFkZCBvbmUgZmllbGQgb2YgdW5zdXBwb3J0ZWRfdGFyZ2V0X2ZsYWdzLgoJKGJkZXNjX2FycmF5cyk6IFVwZGF0ZSBlbnRyaWVzIHRvIGhhdmUgZXh0cmEgZmllbGRzLiAgQWRkCglkc3BfMzJvbmx5X2JkZXNjLgoJKG1pcHNfaW5pdF9idWlsdGlucyk6IEluaXRpYWxpemUgbmV3IGZ1bmN0aW9uIHR5cGVzLgoJQ2hlY2sgdW5zdXBwb3J0ZWRfdGFyZ2V0X2ZpbGVkcyB0byBmaWx0ZXIgb3V0IGJ1aWx0aW5zLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fbWlwc19kc3ByMiBpZgoJVEFSR0VUX0RTUFIyLgoJKEFTTV9TUEVDKTogUGFzcyBtZHNwcjIgdG8gdGhlIGFzc2VtYmxlci4KCSogY29uZmlnL21pcHMvbWlwcy1kc3ByMi5tZDogTmV3IGZpbGUuCgoyMDA3LTAzLTA5ICBTYSBMaXUgIDxzYWxpdUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kOiBGaXggdmNvbmQgcGF0dGVybnMgdXNpbmcgaWZfdGhlbl9lbHNlLgoKMjAwNy0wMy0wOSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBUcmVhdCAtV3N0cmljdC1vdmVyZmxvdyAod2l0aCBubwoJYXJndW1lbnQpIGxpa2UgLVdzdHJpY3Qtb3ZlcmZsb3c9Mi4KCSogZG9jL2ludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDctMDMtMDkgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJUFIgYysrLzE3OTQ2CgkqIGRvYy9pbnZva2UudGV4aSAoLVdsb2dpY2FsLW9wKTogRG9jdW1lbnQuCgkqIGNvbW1vbi5vcHQgKC1XbG9naWNhbC1vcCk6IE5ldy4KCSogYy1jb21tb24uaCAod2Fybl9sb2dpY2FsX29wZXJhdG9yKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAod2Fybl9sb2dpY2FsX29wZXJhdG9yKTogRGVmaW5lLgoJKiBjLXR5cGVjay5jIChwYXJzZXJfYnVpbGRfYmluYXJ5X29wKTogQ2FsbAoJd2Fybl9sb2dpY2FsX29wZXJhdG9yLgoKMjAwNy0wMy0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoZ2VuX3J0eF9BU01fSU5QVVQpOiBVc2UgIiIgaW5zdGVhZCBvZiBOVUxMIGZpbGUgbmFtZS4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogVGVzdCBmb3Igbm9uLSIiIGZpbGUgbmFtZS4KCjIwMDctMDMtMDkgIFNlYmFzdGlhbiBQb3AgIDxzZWJhc3RpYW4ucG9wQGlucmlhLmZyPgoKCSogZG9jL2xvb3AudGV4aTogRG9jdW1lbnQgdGhlIE9tZWdhIGxpbmVhciBjb25zdHJhaW50cyBzb2x2ZXIuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLWZjaGVjay1kYXRhLWRlcHMsIG9tZWdhLW1heC12YXJzLAoJb21lZ2EtbWF4LWdlcXMsIG9tZWdhLW1heC1lcXMsIG9tZWdhLW1heC13aWxkLWNhcmRzLAoJb21lZ2EtaGFzaC10YWJsZS1zaXplLCBvbWVnYS1tYXgta2V5cywgYW5kCglvbWVnYS1lbGltaW5hdGUtcmVkdW5kYW50LWNvbnN0cmFpbnRzLgoJKiB0cmVlLXBhc3MuaCAocGFzc19jaGVja19kYXRhX2RlcHMpOiBEZWNsYXJlZC4KCSogb21lZ2EuYzogTmV3LgoJKiBvbWVnYS5oOiBOZXcuCgkqIHRpbWV2YXIuZGVmIChUVl9DSEVDS19EQVRBX0RFUFMpOiBEZWNsYXJlZC4KCSogdHJlZS1zc2EtbG9vcC5jIChjaGVja19kYXRhX2RlcHMsIGdhdGVfY2hlY2tfZGF0YV9kZXBzLAoJcGFzc19jaGVja19kYXRhX2RlcHMpOiBOZXcuCgkqIHRyZWUtZGF0YS1yZWYuYyAoaW5pdF9kYXRhX3JlZik6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShkdW1wX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbik6IER1bXAgRERSX0lOTkVSX0xPT1AuCgkoYW5hbHl6ZV9hcnJheSk6IFJlbmFtZWQgaW5pdF9hcnJheV9yZWYsIG1vdmUgdXAgaW5pdGlhbGl6YXRpb25zLgoJKGluaXRfZGF0YV9yZWYpOiBSZW5hbWVkIGluaXRfcG9pbnRlcl9yZWYuICBNb3ZlZCBiZWZvcmUgaXRzIGNhbGwuCglSZW1vdmVkIGFyZ3VtZW50cyB0aGF0IGFyZSBzZXQgdG8gTlVMTC4KCShhbmFseXplX2luZGlyZWN0X3JlZik6IENvcnJlY3QgaW5kZW50YXRpb24sIGNvcnJlY3QgY2FsbCB0bwoJaW5pdF9wb2ludGVyX3JlZi4KCShvYmplY3RfYW5hbHlzaXMpOiBDYWxsIGluaXRfYXJyYXlfcmVmIGluc3RlYWQgb2YgYW5hbHl6ZV9hcnJheS4KCShpbml0aWFsaXplX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbik6IEluaXRpYWxpemUgRERSX0lOTkVSX0xPT1AuCgkoYWNjZXNzX2Z1bmN0aW9uc19hcmVfYWZmaW5lX29yX2NvbnN0YW50X3ApOiBVc2UgRFJfQUNDRVNTX0ZOUyBpbnN0ZWFkCglvZiBEUl9BQ0NFU1NfRk5TX0FERFIuCgkoaW5pdF9vbWVnYV9lcV93aXRoX2FmLCBvbWVnYV9leHRyYWN0X2Rpc3RhbmNlX3ZlY3RvcnMsCglvbWVnYV9zZXR1cF9zdWJzY3JpcHQsIGluaXRfb21lZ2FfZm9yX2Rkcl8xLCBpbml0X29tZWdhX2Zvcl9kZHIsCglkZHJfY29uc2lzdGVudF9wKTogTmV3LgoJKGNvbXB1dGVfYWZmaW5lX2RlcGVuZGVuY2UpOiBDaGVjayBjb25zaXN0ZW5jeSBvZiBkZHJzIHdoZW4KCWZsYWdfY2hlY2tfZGF0YV9kZXBzIGlzIHBhc3NlZC4KCShhbmFseXplX2FsbF9kYXRhX2RlcGVuZGVuY2VzKTogVW5jb21tZW50LgoJKHRyZWVfY2hlY2tfZGF0YV9kZXBzKTogTmV3LgoJKiB0cmVlLWRhdGEtcmVmLmg6IEluY2x1ZGUgb21lZ2EuaC4KCShEUl9BQ0NFU1NfRk5TX0FERFIpOiBSZW1vdmVkLgoJKGRhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbik6IEFkZCBpbm5lcl9sb29wLgoJKEREUl9JTk5FUl9MT09QKTogTmV3LgoJKiBjb21tb24ub3B0IChmY2hlY2stZGF0YS1kZXBzKTogTmV3LgoJKiB0cmVlLWZsb3cuaCAodHJlZV9jaGVja19kYXRhX2RlcHMpOiBEZWNsYXJlLgoJKiBNYWtlZmlsZS5pbiAoVFJFRV9EQVRBX1JFRl9IKTogRGVwZW5kIG9uIG9tZWdhLmguCgkoT0JKUy1jb21tb24pOiBEZXBlbmQgb24gb21lZ2Euby4KCShvbWVnYS5vKTogRGVmaW5lLgoJKiBwYXNzZXMuYyAocGFzc19jaGVja19kYXRhX2RlcHMpOiBTY2hlZHVsZWQuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX09NRUdBX01BWF9WQVJTLCBQQVJBTV9PTUVHQV9NQVhfR0VRUywKCVBBUkFNX09NRUdBX01BWF9FUVMsIFBBUkFNX09NRUdBX01BWF9XSUxEX0NBUkRTLAoJUEFSQU1fT01FR0FfSEFTSF9UQUJMRV9TSVpFLCBQQVJBTV9PTUVHQV9NQVhfS0VZUywKCVBBUkFNX1ZFQ1RfTUFYX1ZFUlNJT05fQ0hFQ0tTLAoJUEFSQU1fT01FR0FfRUxJTUlOQVRFX1JFRFVOREFOVF9DT05TVFJBSU5UUyk6IE5ldy4KCjIwMDctMDMtMDkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDkwNAoJUFIgbWlkZGxlLWVuZC8zMTA1OAoJKiB0cmVlLXZycC5jIChleHRyYWN0X3JhbmdlX2Zyb21fYmluYXJ5X2V4cHIpOiBIYW5kbGUgUlNISUZUX0VYUFIKCXRoZSBzYW1lIHdheSBhcyAqX0RJVl9FWFBSLgoKMjAwNy0wMy0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiByZWNvZy5jIChkZWNvZGVfYXNtX29wZXJhbmRzKTogTm8gbWl4ZWQgZGVjbGFyYXRpb25zIGFuZCBjb2RlLgoKMjAwNy0wMy0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBydGwuZGVmIChBU01fSU5QVVQpOiBBZGQgbG9jYXRpb24uCgkqIHJ0bC5oIChBU01fSU5QVVRfU09VUkNFX0xPQ0FUSU9OKTogTmV3LgoJKEFTTV9JTlBVVF9TT1VSQ0VfRklMRSwgQVNNX0lOUFVUX1NPVVJDRV9MSU5FKTogTmV3LgoJKGRlY29kZV9hc21fb3BlcmFuZHMpOiBBZGQgbG9jIG9wZXJhbmQuCgkoZ2VuX3J0eF9BU01fSU5QVVQsIGdlbl9ydHhfQVNNX0lOUFVUX2xvYyk6IERlZmluZS4KCSogc3RtdC5jIChleHBhbmRfYXNtKTogUmVuYW1lIHRvLi4uCgkoZXhwYW5kX2FzbV9sb2MpOiAuLi4gdGhpcy4gIEFkZCBsb2N1cyBhcmd1bWVudC4gIFBhc3MgaXQgb24gdG8KCWdlbl9ydHhfQVNNX0lOUFVUX2xvYy4KCShleHBhbmRfYXNtX2V4cHIpOiBBZGp1c3QuCgkqIHJlY29nLmMgKGRlY29kZV9hc21fb3BlcmFuZHMpOiBBZGQgbG9jIG9wZXJhbmQuCgkoY2hlY2tfYXNtX29wZXJhbmRzLCBleHRyYWN0X2luc24pOiBBZGp1c3QuCgkqIHJlbG9hZDEuYyAobWF5YmVfZml4X3N0YWNrX2FzbXMpOiBMaWtld2lzZS4KCSogZmluYWwuYyAoYXNtX2luc25fY291bnQpOiBMaWtld2lzZS4KCShmaW5hbF9zY2FuX2luc24pOiBPdXRwdXQgIyBsaW5lIGJlZm9yZSBhbmQgYWZ0ZXIgYXNtLgoKMjAwNy0wMy0wOSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jICh2YXJpYWJsZV9pbmZvKTogUmVtb3ZlCglmaW5pc2hlZF9zb2x1dGlvbi4KCShuZXdfdmFyX2luZm8pOiBEaXR0by4KCShzaGFyZWRfYml0bWFwX2luZm9fdCk6IE5ldyBzdHJ1Y3R1cmUuCgkoc2hhcmVkX2JpdG1hcF90YWJsZSk6IE5ldyB2YXJpYWJsZS4KCShzaGFyZWRfYml0bWFwX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoc2hhcmVkX2JpdG1hcF9lcSk6IERpdHRvCgkoc2hhcmVkX2JpdG1hcF9sb29rdXApOiBEaXR0by4KCShzaGFyZWRfYml0bWFwX2FkZCk6IERpdHRvLgoJKG1lcmdlX3NtdHNfaW50byk6IENoYW5nZSB0byB0YWtlIGJpdG1hcCBkaXJlY3RseS4KCShmaW5kX3doYXRfcF9wb2ludHNfdG8pOiBSZXdyaXRlIHRvIHVzZSBzaGFyZWQgYml0bWFwIGhhc2h0YWJsZS4KCShpbml0X2FsaWFzX3ZhcnMpOiBJbml0IHNoYXJlZCBiaXRtYXAgaGFzaHRhYmxlLgoJKGRlbGV0ZV9wb2ludHNfdG9fc2V0cyk6IERlbGV0ZSBzaGFyZWQgYml0bWFwIGhhc2h0YWJsZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYWRkX3ZpcnR1YWxfb3BlcmFuZCk6IFBhcnRpYWxseSByZXZlcnQgdGhlCglpc19hbGlhc2VkIHJlbW92YWwgYXMgYSBjaGFuZ2UgdGhhdCB3YXMgc3RpbGwgbmVjZXNzYXJ5IHdhcwoJZGVsZXRlZC4KCjIwMDctMDMtMDkgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKG92ZXJyaWRlX29wdGlvbnMpOiBDb25kaXRpb25hbGx5IGRpc2FibGUKCXg4Nl9zYWhmIGZvciA2NGJpdCB0YXJnZXRzIG9ubHkuCgoyMDA3LTAzLTA4ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBDLzMxMDcyCgkqIGMtZGVjbC5jIChtZXJnZV9kZWNscyk6IERvbid0IGNhbGwgbWFrZV92YXJfdm9sYXRpbGUuCgkqIHZhcmFzbS5jIChtYWtlX3Zhcl92b2xhdGlsZSk6IFJlbW92ZS4KCSogb3V0cHV0LmggKG1ha2VfdmFyX3ZvbGF0aWxlKTogUmVtb3ZlLgoKMjAwNy0wMy0wOCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMTA4NQoJKiB0cmVlLXNzYS1hZGRyZXNzLmMgKGNyZWF0ZV9tZW1fcmVmKTogRml4IHRlc3Qgb2YgdHlwZSBvZiBiYXNlLgoKMjAwNy0wMy0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmIChsY2VpbCwgbGNlaWxmLCBsY2VpbGwsIGxmbG9vciwgbGZsb29yZiwgbGZsb29ybCwKCWxsY2VpbCwgbGxjZWlsZiwgbGxjZWlsbCwgbGxmbG9vciwgbGxmbG9vcmYsIGxsZmxvb3JsKTogTWFyayB3aXRoCglBVFRSX0NPTlNUX05PVEhST1dfTElTVC4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3dhcm52X3ApOiBIYW5kbGUKCUZJWF9UUlVOQ19FWFBSLgoKMjAwNy0wMy0wOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBkb2MvdHJlZS1zc2EudGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gZm9yIFZfTVVTVF9ERUYuCgoyMDA3LTAzLTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiAzMTAxMwoJKiBnY2NzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogRG8gbm90aGluZyB3aGVuIE5FWFRfT0JKQ19SVU5USU1FCglpcyBkZWNsYXJlZC4KCSogY29uZmlnL2Rhcndpbi5oIChSRUFMX0xJQkdDQ19TUEVDKTogV2hlbiAtZmdudS1ydW50aW1lIGlzCglwYXNzZWQsIHVzZSBzaGFyZWQgbGliZ2NjLgoKMjAwNy0wMy0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLWVoLmMgKGRvX3JldHVybl9yZWRpcmVjdGlvbik6IENhbGwgYnVpbGRfZ2ltcGxlX21vZGlmeV9zdG10CglpbnN0ZWFkIG9mIGNhbGxpbmcgYnVpbGQyIHdpdGggYSBHSU1QTEVfTU9ESUZZX1NUTVQuCgkoaG9ub3JfcHJvdGVjdF9jbGVhbnVwX2FjdGlvbnMsIGxvd2VyX3RyeV9maW5hbGx5X3N3aXRjaCk6CglMaWtld2lzZS4KCSogdHJlZS1pZi1jb252LmMgKHJlcGxhY2VfcGhpX3dpdGhfY29uZF9naW1wbGVfbW9kaWZ5X3N0bXQsCglpZmNfdGVtcF92YXIpOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYyAoc2V0dXBfb25lX3BhcmFtZXRlcik6IExpa2V3aXNlLgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfZGVjbF9jYWNoZV9sb2NhbHMsCgltZl9idWlsZF9jaGVja19zdGF0ZW1lbnRfZm9yKTogTGlrZXdpc2UuCgkqIHRyZWUtbmVzdGVkLmMgKGluaXRfdG1wX3Zhciwgc2F2ZV90bXBfdmFyLAoJZmluYWxpemVfbmVzdGluZ190cmVlXzEpOiBMaWtld2lzZS4KCSogdHJlZS1vdXRvZi1zc2EuYyAoaW5zZXJ0X2NvcHlfb25fZWRnZSwKCWluc2VydF9iYWNrZWRnZV9jb3BpZXMpOiBMaWtld2lzZS4KCSogdHJlZS1wcm9maWxlLmMgKHRyZWVfZ2VuX2VkZ2VfcHJvZmlsZXIsCgl0cmVlX2dlbl9pY19wcm9maWxlcik6IExpa2V3aXNlLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoc2Nldl9jb25zdF9wcm9wKTogTGlrZXdpc2UuCgkqIHRyZWUtc3JhLmMgKHNyYV9idWlsZF9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAoZGV0ZXJtaW5lX2ludmFyaWFudG5lc3Nfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1tYXRoLW9wdHMuYyAoaW5zZXJ0X3JlY2lwcm9jYWxzLAoJZXhlY3V0ZV9jc2Vfc2luY29zXzEpOiBMaWtld2lzZS4KCSogdHJlZS10YWlsY2FsbC5jIChhZGp1c3RfYWNjdW11bGF0b3JfdmFsdWVzLAoJYWRqdXN0X3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3QtcGF0dGVybnMuYyAodmVjdF9wYXR0ZXJuX3JlY29nXzEpOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIsCglidW1wX3ZlY3Rvcl9wdHIsIHZlY3RfaW5pdF92ZWN0b3IsIGdldF9pbml0aWFsX2RlZl9mb3JfaW5kdWN0aW9uLAoJdmVjdF9jcmVhdGVfZXBpbG9nX2Zvcl9yZWR1Y3Rpb24sIHZlY3Rvcml6YWJsZV9yZWR1Y3Rpb24sCgl2ZWN0b3JpemFibGVfY2FsbCwgdmVjdG9yaXphYmxlX2NvbnZlcnNpb24sCgl2ZWN0b3JpemFibGVfYXNzaWdubWVudCwgdmVjdG9yaXphYmxlX29wZXJhdGlvbiwKCXZlY3Rvcml6YWJsZV90eXBlX2RlbW90aW9uLCB2ZWN0X2dlbl93aWRlbmVkX3Jlc3VsdHNfaGFsZiwKCXZlY3RfcGVybXV0ZV9zdG9yZV9jaGFpbiwgdmVjdG9yaXphYmxlX3N0b3JlLAoJdmVjdF9zZXR1cF9yZWFsaWdubWVudCwgdmVjdF9wZXJtdXRlX2xvYWRfY2hhaW4sCgl2ZWN0b3JpemFibGVfbG9hZCwgdmVjdG9yaXphYmxlX2NvbmRpdGlvbiwKCXZlY3RfY3JlYXRlX2NvbmRfZm9yX2FsaWduX2NoZWNrcyk6IExpa2V3aXNlLgoJKiB0cmVlLXZycC5jIChidWlsZF9hc3NlcnRfZXhwcl9mb3IpOiBMaWtld2lzZS4KCjIwMDctMDMtMDggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiB0cmVlLXZycC5jOiBJbmNsdWRlICJpbnRsLmgiLgoJKHVzYWJsZV9yYW5nZV9wKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjb21wYXJlX3ZhbHVlc193YXJudik6IERvbid0IHRlc3QgVFlQRV9PVkVSRkxPV19VTkRFRklORUQgZm9yCglvdmVyZmxvd2VkIHZhbHVlcywganV0cyBzZXQgKnN0cmljdF9vdmVyZmxvd19wLgoJKGNvbXBhcmVfdmFsdWVzKTogT25seSByZXR1cm4gLTIgaWYgb25lIG9mIHRoZSBvcGVyYW5kcyBpcyBub3QgYQoJY29uc3RhbnQuCgkoY29tcGFyZV9yYW5nZXMpOiBDYWxsIHVzYWJsZV9yYW5nZV9wLgoJKGNvbXBhcmVfcmFuZ2Vfd2l0aF92YWx1ZSk6IExpa2V3aXNlLgoJKHZycF9ldmFsdWF0ZV9jb25kaXRpb25hbF93YXJudik6IFJlbmFtZSBmcm9tCgl2cnBfZXZhbHVhdGVfY29uZGl0aW9uYWwuICBNYWtlIHN0YXRpYy4gIENoYW5nZSBhbGwgY2FsbGVycy4KCSh2cnBfZXZhbHVhdGVfY29uZGl0aW9uYWwpOiBOZXcgZnVuY3Rpb24uCgkoc2ltcGxpZnlfZGl2X29yX21vZF91c2luZ19yYW5nZXMpOiBJc3N1ZSB3YXJuaW5nIGFib3V0IHJlbGlhbmNlCglvbiBzaWduZWQgb3ZlcmZsb3cuCgkoc2ltcGxpZnlfYWJzX3VzaW5nX3Jhbmdlcyk6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X3N0bXRfZm9yX2p1bXBfdGhyZWFkaW5nKTogQWRkIHdpdGhpbl9zdG10IHBhcmFtZXRlci4KCSogdHJlZS1zc2EtZG9tLmMgKHNpbXBsaWZ5X3N0bXRfZm9yX2p1bXBfdGhyZWFkaW5nKTogQWRkCgl3aXRoaW5fc3RtdCBwYXJhbWV0ZXIuCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChmb2xkX3ByZWRpY2F0ZV9pbik6IFVwZGF0ZSBjYWxsIHRvCgl2cnBfZXZhbHVhdGVfY29uZGl0aW9uYWwuCgkqIHRyZWUtc3NhLXRocmVhZGVkZ2UuYwoJKHJlY29yZF90ZW1wb3JhcnlfZXF1aXZhbGVuY2VzX2Zyb21fc3RtdHNfYXRfZGVzdCk6IENoYW5nZQoJc2ltcGxpZnkgcGFyYW1ldGVyIHRvIHRha2UgYSBzZWNvbmQgdHJlZSBwYXJhbWV0ZXIuCgkoc2ltcGxpZnlfY29udHJvbF9zdG10X2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKHRocmVhZF9hY3Jvc3NfZWRnZSk6IExpa2V3aXNlLgoJKiB0cmVlLWZsb3cuaCAodnJwX2V2YWx1YXRlX2NvbmRpdGlvbmFsKTogVXBkYXRlIGRlY2xhcmF0aW9uLgoJKHRocmVhZF9hY3Jvc3NfZWRnZSk6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbiAodHJlZS12cnAubyk6IERlcGVuZCB1cG9uIGludGwuaC4KCjIwMDctMDMtMDggIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9TQUhGKTogTmV3IGRlZmluZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3R1bmVfZmVhdHVyZXMpIFtYODZfVFVORV9VU0VfU0FIRl06CglBbHNvIGVuYWJsZSBmb3IgbV9LOCwgbV9BTURGQU0xMCBhbmQgbV9DT1JFMi4KCSh4ODZfc2FoZik6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBQVEFfTk9fU0FIRiB0byBwdGFfZmxhZ3MgZW51bS4gIFJlY29kZQoJcHRhX2ZsYWdzIG1hc2tzIHVzaW5nIHNoaWZ0cy4gIEFkZCBQVEFfTk9fU0FIRiB0byB4ODZfNjQgYW5kCglub2NvbmEgcHJvY2Vzc29yIGZsYWdzLiAgU2V0IHg4Nl9zYWhmIHdoZW4gUFRBX05PX1NBSEYgaXMgbm90IHNldAoJaW4gcHJvY2Vzc29yIGZsYWdzLiAgRG8gbm90IHVuY29uZGl0aW9uYWxseSBkaXNhYmxlIFRBUkdFVF9VU0VfU0FIRgoJZm9yIDY0LWJpdC4KCShpeDg2X2ZwX2NvbXBhcmlzb25fc2FoZl9jb3N0KTogUmV0dXJuIGhpZ2ggdmFsdWUgZm9yICFUQVJHRVRfU0FIRi4KCShpeDg2X2V4cGFuZF9mcF9jb21wYXJlKTogQ2hlY2sgZm9yIFRBUkdFVF9DTU9WRSBvciBUQVJHRVRfU0FIRgoJd2hlbiBleHBhbmRpbmcgZmNvbWkvc2FoZiBiYXNlZCB0ZXN0cy4KCShpeDg2X2VtaXRfZnBfdW5vcmRlcmVkX2p1bXApOiBDaGVjayBmb3IgVEFSR0VUX1NBSEYgd2hlbgoJZXhwYW5kaW5nIHNhaGYgYmFzZWQgYWx0ZXJuYXRpdmUuIEVtaXQgc2FoZiBiYXNlZCBzZXF1ZW5jZSB3aGVuCglvcHRpbWl6aW5nIGZvciBjb2RlIHNpemUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHg4Nl9zYWhmXzEpOiBEbyBub3QgZGlzYWJsZSBmb3IKCVRBUkdFVF82NEJJVCwgZW5hYmxlIGZvciBUQVJHRVRfU0FIRi4KCjIwMDctMDMtMDggIE1hcnRpbiBNaWNobG1heXIgIDx0Ym1AY3lyaXVzLmNvbT4KCgkqIHRyZWUtc3NhLWNvYWxlc2NlLmMgKGZhaWxfYWJub3JtYWxfZWRnZV9jb2FsZXNjZSk6IFJlbW92ZQoJc3B1cmlvdXMgd2hpdGVzcGFjZSBmcm9tIGVycm9yIG1lc3NhZ2UuCgoyMDA3LTAzLTA4ICBWb2xrZXIgUmVpY2hlbHQgIDx2LnJlaWNoZWx0QG5ldGNvbG9nbmUuZGU+CgoJUFIgYysrLzMwODUyCgkqIGMtY29tbW9uLmMgKGZvbGRfb2Zmc2V0b2ZfMSk6IEhhbmRsZSBDT01QT1VORF9FWFBSLgoKMjAwNy0wMy0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEaXNhYmxlIHdhcm5pbmdzIGZvciBhbm9ueW1vdXMKCWJpdGZpZWxkcy4KCSogdHJlZS1zcmEuYyAoaW5zdGFudGlhdGVfZWxlbWVudCk6IFByb3BhZ2F0ZSBkaXNhYmxlZCB3YXJuaW5ncwoJZnJvbSB0aGUgZWxlbWVudCBpdHNlbGYgdG8gdGhlIGNyZWF0ZWQgdmFyaWFibGUuCgoyMDA3LTAzLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8zMDg0OAoJKiByZWctc3RhY2suYyAoZW1pdF9zd2FwX2luc24pOiBJZiBhIG1hbGZvcm1lZCBhc20gd2FzIHNlZW4sCglzaWxlbnRseSBmaXggdXAgdGhlIHN0YWNrIGluIHRoZSBjYXNlIG9mIGEgbWlzc2luZyByZWdpc3Rlci4KCjIwMDctMDMtMDcgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2xpYnVud2luZC5TOiBBZGQgLmFyY2gvLm9iamVjdF9hcmNoIGZvciBhcm12NCBidWlsZHMuCgoyMDA3LTAzLTA3ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vdW53aW5kLWFybS5jIChzdHJ1Y3Qgd21teGRfcmVncywgc3RydWN0IHdtbXhjX3JlZ3MpOgoJTmV3LgoJKHBoYXNlMV92cnMpOiBVc2UgdGhlbS4KCShERU1BTkRfU0FWRV9XTU1YRCwgREVNQU5EX1NBVkVfV01NWEMpOiBOZXcuCgkoX19nbnVfVW53aW5kX1NhdmVfV01NWEQsIF9fZ251X1Vud2luZF9SZXN0b3JlX1dNTVhELAoJX19nbnVfVW53aW5kX1NhdmVfV01NWEMsIF9fZ251X1Vud2luZF9SZXN0b3JlX1dNTVhDKTogRGVjbGFyZS4KCShyZXN0b3JlX25vbl9jb3JlX3JlZ3MpOiBDYWxsIF9fZ251X1Vud2luZF9SZXN0b3JlX1dNTVhEIGFuZAoJX19nbnVfVW53aW5kX1Jlc3RvcmVfV01NWEMgaWYgcmVxdWlyZWQuCgkoX1Vud2luZF9WUlNfUG9wKTogSW1wbGVtZW50IGlXTU1YdCBzdXBwb3J0LgoJKiBjb25maWcvYXJtL2xpYnVud2luZC5TIChnbnVfVW53aW5kX1Jlc3RvcmVfV01NWEQsCglnbnVfVW53aW5kX1NhdmVfV01NWEQsIGdudV9VbndpbmRfUmVzdG9yZV9XTU1YQywKCWdudV9VbndpbmRfU2F2ZV9XTU1YQyk6IERlZmluZS4KCjIwMDctMDMtMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3Z4d29ya3MuaCAodnh3b3Jrc19vdmVycmlkZV9vcHRpb25zKTogRGVjbGFyZS4KCShWWFdPUktTX09WRVJSSURFX09QVElPTlMpOiBVc2UgaXQuCgkqIGNvbmZpZy92eHdvcmtzLmM6IEluY2x1ZGUgdGFyZ2V0LmggYW5kIHRvcGxldi5oLgoJKHZ4d29ya3Nfb3ZlcnJpZGVfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3Qtdnh3b3JrcyAodnh3b3Jrcy5vKTogRGVwZW5kIG9uICQoVEFSR0VUX0gpIGFuZCB0b3BsZXYuaC4KCjIwMDctMDMtMDcgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBEb24ndCBlbWl0IGFuIGVycm9yIHdoZW4KCS1tc3RhY2stc2l6ZSBpcyB1c2VkIHdpdGhvdXQgcHJvdmlkaW5nIC1tc3RhY2stZ3VhcmQuCgkoczM5MF9lbWl0X3Byb2xvZ3VlKTogQ2hvb3NlIHN0YWNrX2d1YXJkIHZhbHVlIGF1dG9tYXRpY2FsbHkgaWYgbm90Cglwcm92aWRlZCB2aWEgY29tbWFuZCBsaW5lLgoJKiBkb2MvaW52b2tlLnRleGk6IEFkanVzdCBkZXNjcmlwdGlvbiBvZiAtbXN0YWNrLWd1YXJkIGFuZAoJLW1zdGFjay1zaXplLgoKMjAwNy0wMy0wNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9zZXRfZ290KTogQWRkIGEgR09UIGluaXRpYWxpemF0aW9uCglzZXF1ZW5jZSBmb3IgVnhXb3JrcyBQSUMuCgkobGVnaXRpbWF0ZV9waWNfYWRkcmVzc19kaXNwX3ApOiBBbGxvdyBVTlNQRUNfR09UIHdyYXBwZXJzCglhcm91bmQgbGFiZWxzIGFzIHdlbGwgYXMgc3ltYm9scy4gIFVzZSBnb3RvZmZfb3BlcmFuZCBpbnN0ZWFkCglvZiBsb2NhbF9zeW1ib2xpY19vcGVyYW5kLgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBVc2UgZ290b2ZmX29wZXJhbmQgaW5zdGVhZCBvZgoJbG9jYWxfc3ltYm9saWNfb3BlcmFuZC4gIFVzZSBAR09UIGFjY2Vzc2VzIGZvciBsYWJlbHMgYXMKCXdlbGwgYXMgc3ltYm9scy4KCShpeDg2X291dHB1dF9hZGRyX2RpZmZfZWx0KTogVXNlIFBDLXJlbGF0aXZlIHJhdGhlciB0aGFuCglHUC1yZWxhdGl2ZSBvZmZzZXRzIGZvciBWeFdvcmtzIFBJQy4KCShpeDg2X2V4cGFuZF9tb3ZlKTogUGFzcyBOVUxMX1JUWCB0byBsZWdpdGltaXplX3BpY19hZGRyZXNzIHVubGVzcwoJbm9fbmV3X3BzZXVkb3MuICBDaGVjayB3aGV0aGVyIHRoZSByZXR1cm5lZCByZWdpc3RlciBpcyBvcDAuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRhYmxlanVtcCk6IFVzZSBQQy1yZWxhdGl2ZSByYXRoZXIgdGhhbgoJR1AtcmVsYXRpdmUgb2Zmc2V0cyBmb3IgVnhXb3JrcyBQSUMuCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGdvdG9mZl9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KCjIwMDctMDMtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3Z4d29ya3MuaCAoVlhXT1JLU19HT1RUX0JBU0UsIFZYV09SS1NfR09UVF9JTkRFWCk6IFVuZGVmaW5lCgliZWZvcmUgZGVmaW5pbmcuCgkqIGNvbmZpZy92eHdvcmtzLWR1bW15Lmg6IE5ldyBmaWxlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IEluY2x1ZGUgaXQuCgoyMDA3LTAzLTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChpc19pbmxpbmVkX2VudHJ5X3BvaW50KTogTmV3CgkoYWRkX2hpZ2hfbG93X2F0dHJpYnV0ZXMpOiBFbWl0IERXX0FUX2VudHJ5X3BjIGFsb25nIHdpdGgKCURXX0FUX3JhbmdlcyBpZiB0aGUgZmlyc3Qgc3ViYmxvY2sgaXMgdGhlIGVudHJ5IHBvaW50LgoKMjAwNy0wMy0wNiAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKG1pcHMtKi0qKTogQ2hhbmdlIHJlY29tbWVuZGVkIGJpbnV0aWxzCgl2ZXJzaW9uLgoKMjAwNy0wMy0wNiAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX21jdV90eXBlcyk6IEFkZCBzdXBwb3J0IGZvciBBVG1lZ2EzMjVQLAoJQVRtZWdhMzI1MFAsIEFUbWVnYTMyOVAsIEFUbWVnYTMyOTBQLCBBVDkwVVNCODIgYW5kIEFUOTBVU0IxNjIKCWRldmljZXMuCgkqIGNvbmZpZy9hdnIvYXZyLmggKExJTktfU1BFQywgQ1JUX0JJTlVUSUxTX1NQRUNTKTogKERpdHRvLikuCgkqIGNvbmZpZy9hdnIvdC1hdnIgKE1VTFRJTElCX01BVENIRVMpOiAoRGl0dG8uKS4KCjIwMDctMDMtMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGVycm9ycy5oICh3YXJuaW5nLCBlcnJvciwgZmF0YWwsIGludGVybmFsX2Vycm9yKTogTWFyayBhcyBjb2xkLgoJKiBwcmVkaWN0LmMgKG1heWJlX2hvdF9iYik6IENvbGQgZnVuY3Rpb25zIGFyZSBuZXZlciBob3Q7IGhvdAoJZnVuY3Rpb25zIGFyZSBob3QuCgkocHJvYmFibHlfY29sZF9iYl9wKTogQ29sZCBmdW5jdGlvbnMgYXJlIGNvbGQuCgkocHJvYmFibHlfbmV2ZXJfZXhlY3V0ZWRfYmJfcCk6IENvbGQgZnVuY3Rpb25zIGFyZSBjb2xkLgoJKHRyZWVfYmJfbGV2ZWxfcHJlZGljdGlvbnMpOiBQcmVkaWN0IGNhbGxzIHRvIGNvbGQgZnVuY3Rpb25zIGFzIG5vdAoJdGFrZW4uCgkoY29tcHV0ZV9mdW5jdGlvbl9mcmVxdWVuY3kpOiBDaGVjayBob3QvY29sZCBhdHRyaWJ1dGVzLgoJKiBmdW5jdGlvbi5oIChmdW5jdGlvbl9mcmVxdWVuY3kpOiBVcGRhdGUgY29tbWVudHMuCgkqIHByZWRpY3QuZGVmIChQUkVEX0NPTERfRlVOQ1RJT04pOiBQcmVkaWN0IGNvbGQgZnVuY3Rpb24uCgkqIGMtY29tbW9uLmMgKGhhbmRsZV9ob3RfYXR0cmlidXRlLCBoYW5kbGVfY29sZF9hdHRyaWJ1dGUpOiBOZXcuCgkoY19jb21tb25fYXR0KTogQWRkIGNvbGQgYW5kIGhvdC4KCgkqIGRvYy9leHRlbmQudGV4aSAoaG90LGNvbGQgYXR0cmlidXRlcyk6IERvY3VtZW50LgoKMjAwNy0wMy0wNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogTW92ZSBibG9ja2FnZSB0byBqdXN0IGFmdGVyIHdlCgllbWl0IHRoZSBsYWJlbCBmb3IgdGhlIG5ha2VkIHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi4KCjIwMDctMDMtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2kzODYvYXR0LmggKEFTTV9PVVRQVVRfQVNDSUksIEFTTV9PVVRQVVRfU0tJUCk6IFVuZGVmaW5lCgliZWZvcmUgcmVkZWZpbmluZy4KCjIwMDctMDMtMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZy1zdGFjay5jIChyZWdfdG9fc3RhY2spOiBMYXJnZSBtb2RlbHMgZG9uJ3QgYWxsb3cgTkFOIHRvIGJlCglsb2FkZWQgZm9yIGNvbnN0YW50IGxhcmdlIG1vZGVscy4gIE5vbi1sYXJnZSA2NGJpdCBQSUMgY2FuIGRvLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKENBU0VfVkVDVE9SX01PREUpOiBMYXJnZSBQSUMgY2FzZXMgYXJlIDY0Yml0LgoJKiBjbW9kZWwuaDogQWRkIExBUkdFIFBJQy4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoVU5TUEVDX1BMVE9GRik6IE5ldy4KCShVTlNQRUNfU0VUX1JJUCwgVU5TUEVDX1NFVF9HT1RfT0ZGU0VUKTogTmV3OyByZW51bWJlciBvdGhlcgoJdW5zcGVjcyBhcyBuZWVkZWQuCgkoKmNhbGxfMV9yZXg2NCk6IERpc2FibGUgZm9yIGxhcmdlIG1vZGVscy4KCSgqY2FsbF8xX3JleDY0X2xhcmdlKTogTmV3LgoJKCpjYWxsX3ZhbHVlXzFfcmV4NjQpOiBEaXNhYmxlIGZvciBsYXJnZSBtb2RlbHMuCgkoKmNhbGxfdmFsdWVfMV9yZXg2NF9sYXJnZSk6IE5ldy4KCShzZXRfcmlwX3JleDQpOiBOZXcuCgkoc2V0X2dvdF9vZmZzZXRfcmV4NjQpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kKTogRm9yCglsYXJnZSBtb2RlbCBjb25zdGFudCBjYWxscyBhcmUgbm90IHBvc3NpYmxlLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChjb25zdHJ1Y3RfcGx0X2FkZHJlc3MpOiBEZWNsYXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBBY2NlcHQgbGFyZ2UgbW9kZWxzLgoJKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogRXhwYW5kIGxhcmdlIFBJQyBHT1QgcG9pbnRlciBsb2FkLgoJKGxlZ2l0aW1hdGVfY29uc3RhbnRfcCk6IEFkZCBuZXcgVU5TUEVDcy4KCShsZWdpdGltYXRlX3BpY19vcGVyYW5kX3ApOiBMaWtld2lzZS4KCShsZWdpdGltYXRlX3BpY19hZGRyZXNzX2Rpc3BfcCk6IERpc2FsbG93IGxvY2FsIHN5bWJvbHMgZm9yIGxhcmdlIFBJQ3MuCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IERvIGVhc3kgUklQIHJlbGF0aXZlIHdheSBmb3IgVExTIG9ubHkgZm9yCglub24tbGFyZ2UgbW9kZWwuCgkob3V0cHV0X3BpY19hZGRyX2NvbnN0KTogQWRkIFBMVE9GRi4KCShpeDg2X291dHB1dF9hZGRyX2RpZmZfZWx0KTogT3V0cHV0IDY0Yml0IHRhYmxlcyB3aGVuIG5lZWRlZC4KCShpeDg2X2V4cGFuZF9tb3ZlKTogTGVnaXRpbWl6ZSBwaWMgYWRkcmVzcyB3aGVuIGluIFBJQyBtb2RlLgoJKGNvbnN0cnVjdF9wbHRfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbi4KCShpeDg2X2V4cGFuZF9jYWxsKTogT2ZmbG9hZCB0aGUgYWRkcmVzcyB0byByZWdpc3RlciBhbmQgdXNlIEdPVAoJcG9pbnRlciBmb3IgbGFyZ2UgbW9kZWwuCgkqIGludm9rZS50ZXhpIChtY21vZGVsPWxhcmdlKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoyMDA3LTAzLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfdXNlX2xlYXZlLCB4ODZfcHVzaF9tZW1vcnksCgl4ODZfemVyb19leHRlbmRfd2l0aF9hbmQsIHg4Nl9tb3Z4LCB4ODZfZG91YmxlX3dpdGhfYWRkLAoJeDg2X3VzZV9iaXRfdGVzdCwgeDg2X3Vucm9sbF9zdHJsZW4sIHg4Nl9kZWVwX2JyYW5jaCwKCXg4Nl9icmFuY2hfaGludHMsIHg4Nl91c2Vfc2FoZiwgeDg2X3BhcnRpYWxfcmVnX3N0YWxsLAoJeDg2X3BhcnRpYWxfZmxhZ19yZWdfc3RhbGwsIHg4Nl91c2VfaGltb2RlX2Zpb3AsIHg4Nl91c2Vfc2ltb2RlX2Zpb3AsCgl4ODZfdXNlX21vdjAsIHg4Nl91c2VfY2x0ZCwgeDg2X3JlYWRfbW9kaWZ5X3dyaXRlLCB4ODZfcmVhZF9tb2RpZnksCgl4ODZfc3BsaXRfbG9uZ19tb3ZlcywgeDg2X3Byb21vdGVfUUltb2RlLCB4ODZfZmFzdF9wcmVmaXgsCgl4ODZfc2luZ2xlX3N0cmluZ29wLCB4ODZfcWltb2RlX21hdGgsIHg4Nl9wcm9tb3RlX3FpX3JlZ3MsCgl4ODZfaGltb2RlX21hdGgsIHg4Nl9wcm9tb3RlX2hpX3JlZ3MsIHg4Nl9zdWJfZXNwXzQsIHg4Nl9zdWJfZXNwXzgsCgl4ODZfYWRkX2VzcF80LCB4ODZfYWRkX2VzcF84LCB4ODZfaW50ZWdlcl9ERm1vZGVfbW92ZXMsCgl4ODZfcGFydGlhbF9yZWdfZGVwZW5kZW5jeSwgeDg2X21lbW9yeV9taXNtYXRjaF9zdGFsbCwKCXg4Nl9wcm9sb2d1ZV91c2luZ19tb3ZlLCB4ODZfZXBpbG9ndWVfdXNpbmdfbW92ZSwgeDg2X3NoaWZ0MSwKCXg4Nl9zc2VfcGFydGlhbF9yZWdfZGVwZW5kZW5jeSwgeDg2X3NzZV9zcGxpdF9yZWdzLAoJeDg2X3NzZV91bmFsaWduZWRfbW92ZV9vcHRpbWFsLCB4ODZfc3NlX3R5cGVsZXNzX3N0b3JlcywKCXg4Nl9zc2VfbG9hZDBfYnlfcHhvciwgeDg2X3VzZV9mZnJlZXAsIHg4Nl91c2VfaW5jZGVjLAoJeDg2X2ludGVyX3VuaXRfbW92ZXMsIHg4Nl9leHRfODAzODdfY29uc3RhbnRzLCB4ODZfZm91cl9qdW1wX2xpbWl0LAoJeDg2X3NjaGVkdWxlLCB4ODZfdXNlX2J0LCB4ODZfcGFkX3JldHVybnMsCgl4ODZfdXNlX3hjaGdiKTogTWVyZ2UgaW50byAuLi4KCShpeDg2X3R1bmVfZmVhdHVyZXMpOiAuLi4gaGVyZS4gIE5ldyBhcnJheS4KCSh4ODZfY21vdmUsIHg4Nl9jbXB4Y2hnLCB4ODZfY21weGNoZzhiLAl4ODZfeGFkZCwKCXg4Nl9ic3dhcCk6IE1lcmdlIGludG8gLi4uCgkoaXg4Nl9hcmNoX2ZlYXR1cmVzKTogLi4uIGhlcmUuICBOZXcgYXJyYXkuCgkoeDg2XzNkbm93X2EpOiBSZW1vdmUuCgkoeDg2X2FjY3VtdWxhdGVfb3V0Z29pbmdfYXJncyk6IE1ha2Ugc3RhdGljLgoJKHg4Nl9hcmNoX2Fsd2F5c19mYW5jeV9tYXRoXzM4Nyk6IE1ha2Ugc3RhdGljLgoJKGl4ODZfdHVuZV9tYXNrLCBpeDg2X2FyY2hfbWFzayk6IE1vdmUgLi4uCgkob3ZlcnJpZGVfb3B0aW9ucyk6IC4uLiB0byBsb2NhbCB2YXJpYWJsZXMgaGVyZS4gIEFwcGx5IHRoZQoJYXBwcm9wcmlhdGUgbWFzayB0byBlYWNoIGVsZW1lbnQgb2YgaXg4Nl9hcmNoX2ZlYXR1cmVzIGFuZAoJaXg4Nl90dW5lX2ZlYXR1cmVzLiAgQWRqdXN0IFRBUkdFVF9DTU9WRSBhbmQgVEFSR0VUX1VTRV9TQUhGCglhcyB3ZXJlIGRvbmUgaW4gdGhlIG9sZCBtYWNyb3MuCgkoc3RhbmRhcmRfODAzODdfY29uc3RhbnRfcCk6IFVzZSBUQVJHRVRfRVhUXzgwMzg3X0NPTlNUQU5UUy4KCSogY29uZmlnL2kzODYvaTM4Ni5oICh4ODZfdXNlX2xlYXZlLCB4ODZfcHVzaF9tZW1vcnksCgl4ODZfemVyb19leHRlbmRfd2l0aF9hbmQsIHg4Nl91c2VfYml0X3Rlc3QsIHg4Nl9jbW92ZSwgeDg2X2RlZXBfYnJhbmNoLAoJeDg2X2JyYW5jaF9oaW50cywgeDg2X3Vucm9sbF9zdHJsZW4sIHg4Nl9kb3VibGVfd2l0aF9hZGQsCgl4ODZfcGFydGlhbF9yZWdfc3RhbGwsIHg4Nl9tb3Z4LCB4ODZfdXNlX2hpbW9kZV9maW9wLAoJeDg2X3VzZV9zaW1vZGVfZmlvcCwgeDg2X3VzZV9tb3YwLCB4ODZfdXNlX2NsdGQsIHg4Nl91c2VfeGNoZ2IsCgl4ODZfcmVhZF9tb2RpZnlfd3JpdGUsIHg4Nl9yZWFkX21vZGlmeSwgeDg2X3NwbGl0X2xvbmdfbW92ZXMsCgl4ODZfcHJvbW90ZV9RSW1vZGUsIHg4Nl9zaW5nbGVfc3RyaW5nb3AsIHg4Nl9mYXN0X3ByZWZpeCwKCXg4Nl9oaW1vZGVfbWF0aCwgeDg2X3FpbW9kZV9tYXRoLCB4ODZfcHJvbW90ZV9xaV9yZWdzLAoJeDg2X3Byb21vdGVfaGlfcmVncywgeDg2X2ludGVnZXJfREZtb2RlX21vdmVzLCB4ODZfYWRkX2VzcF80LAoJeDg2X2FkZF9lc3BfOCwgeDg2X3N1Yl9lc3BfNCwgeDg2X3N1Yl9lc3BfOCwKCXg4Nl9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4ODZfbWVtb3J5X21pc21hdGNoX3N0YWxsLAoJeDg2X2FjY3VtdWxhdGVfb3V0Z29pbmdfYXJncywgeDg2X3Byb2xvZ3VlX3VzaW5nX21vdmUsCgl4ODZfZXBpbG9ndWVfdXNpbmdfbW92ZSwgeDg2X2RlY29tcG9zZV9sZWEsCgl4ODZfYXJjaF9hbHdheXNfZmFuY3lfbWF0aF8zODcsIHg4Nl9zaGlmdDEsCgl4ODZfc3NlX3BhcnRpYWxfcmVnX2RlcGVuZGVuY3ksIHg4Nl9zc2Vfc3BsaXRfcmVncywKCXg4Nl9zc2VfdW5hbGlnbmVkX21vdmVfb3B0aW1hbCwgeDg2X3NzZV90eXBlbGVzc19zdG9yZXMsCgl4ODZfc3NlX2xvYWQwX2J5X3B4b3IsIHg4Nl91c2VfZmZyZWVwLCB4ODZfaW50ZXJfdW5pdF9tb3ZlcywKCXg4Nl9zY2hlZHVsZSwgeDg2X3VzZV9idCwgeDg2X2NtcHhjaGcsIHg4Nl9jbXB4Y2hnOGIsIHg4Nl94YWRkLAoJeDg2X3VzZV9pbmNkZWMsIHg4Nl9wYWRfcmV0dXJucywgeDg2X2Jzd2FwLAoJeDg2X3BhcnRpYWxfZmxhZ19yZWdfc3RhbGwpOiBSZW1vdmUuCgkoZW51bSBpeDg2X3R1bmVfaW5kaWNlcyk6IE5ldy4KCShpeDg2X3R1bmVfZmVhdHVyZXMpOiBOZXcuCgkoVEFSR0VUX1VTRV9MRUFWRSwgVEFSR0VUX1BVU0hfTUVNT1JZLCBUQVJHRVRfWkVST19FWFRFTkRfV0lUSF9BTkQsCglUQVJHRVRfVVNFX0JJVF9URVNULCBUQVJHRVRfVU5ST0xMX1NUUkxFTiwKCVRBUkdFVF9ERUVQX0JSQU5DSF9QUkVESUNUSU9OLCBUQVJHRVRfQlJBTkNIX1BSRURJQ1RJT05fSElOVFMsCglUQVJHRVRfRE9VQkxFX1dJVEhfQURELCBUQVJHRVRfVVNFX1NBSEYsIFRBUkdFVF9NT1ZYLAoJVEFSR0VUX1BBUlRJQUxfUkVHX1NUQUxMLCBUQVJHRVRfUEFSVElBTF9GTEFHX1JFR19TVEFMTCwKCVRBUkdFVF9VU0VfSElNT0RFX0ZJT1AsIFRBUkdFVF9VU0VfU0lNT0RFX0ZJT1AsIFRBUkdFVF9VU0VfTU9WMCwKCVRBUkdFVF9VU0VfQ0xURCwgVEFSR0VUX1VTRV9YQ0hHQiwgVEFSR0VUX1NQTElUX0xPTkdfTU9WRVMsCglUQVJHRVRfUkVBRF9NT0RJRllfV1JJVEUsIFRBUkdFVF9SRUFEX01PRElGWSwgVEFSR0VUX1BST01PVEVfUUltb2RlLAoJVEFSR0VUX0ZBU1RfUFJFRklYLCBUQVJHRVRfU0lOR0xFX1NUUklOR09QLCBUQVJHRVRfUUlNT0RFX01BVEgsCglUQVJHRVRfSElNT0RFX01BVEgsIFRBUkdFVF9QUk9NT1RFX1FJX1JFR1MsIFRBUkdFVF9QUk9NT1RFX0hJX1JFR1MsCglUQVJHRVRfQUREX0VTUF80LCBUQVJHRVRfQUREX0VTUF84LCBUQVJHRVRfU1VCX0VTUF80LAoJVEFSR0VUX1NVQl9FU1BfOCwgVEFSR0VUX0lOVEVHRVJfREZNT0RFX01PVkVTLAoJVEFSR0VUX1BBUlRJQUxfUkVHX0RFUEVOREVOQ1ksIFRBUkdFVF9TU0VfUEFSVElBTF9SRUdfREVQRU5ERU5DWSwKCVRBUkdFVF9TU0VfVU5BTElHTkVEX01PVkVfT1BUSU1BTCwgVEFSR0VUX1NTRV9TUExJVF9SRUdTLAoJVEFSR0VUX1NTRV9UWVBFTEVTU19TVE9SRVMsIFRBUkdFVF9TU0VfTE9BRDBfQllfUFhPUiwKCVRBUkdFVF9NRU1PUllfTUlTTUFUQ0hfU1RBTEwsIFRBUkdFVF9QUk9MT0dVRV9VU0lOR19NT1ZFLAoJVEFSR0VUX0VQSUxPR1VFX1VTSU5HX01PVkUsIFRBUkdFVF9TSElGVDEsIFRBUkdFVF9VU0VfRkZSRUVQLAoJVEFSR0VUX0lOVEVSX1VOSVRfTU9WRVMsIFRBUkdFVF9GT1VSX0pVTVBfTElNSVQsIFRBUkdFVF9TQ0hFRFVMRSwKCVRBUkdFVF9VU0VfQlQsIFRBUkdFVF9VU0VfSU5DREVDLCBUQVJHRVRfUEFEX1JFVFVSTlMsCglUQVJHRVRfRVhUXzgwMzg3X0NPTlNUQU5UUyk6IFVzZSBpdC4KCShlbnVtIGl4ODZfYXJjaF9pbmRpY2VzKTogTmV3LgoJKGl4ODZfYXJjaF9mZWF0dXJlcyk6IE5ldy4KCShUQVJHRVRfQ01PVkUsIFRBUkdFVF9DTVBYQ0hHLCBUQVJHRVRfQ01QWENIRzhCLCBUQVJHRVRfWEFERCwKCVRBUkdFVF9CU1dBUCk6IFVzZSBpdC4KCShpeDg2X3R1bmVfbWFzaywgaXg4Nl9hcmNoX21hc2spOiBSZW1vdmUuCgoyMDA3LTAzLTA2ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBib290c3RyYXAvMzEwMjAKCSogY29uZmlndXJlLmFjIChDUk9TU19TWVNURU1fSEVBREVSX0RJUiwgYnVpbGRfc3lzdGVtX2hlYWRlcl9kaXIpOgoJRGVmaW5lIHVzaW5nICQke3N5c3Jvb3RfaGVhZGVyc19zdWZmaXh9LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNwcGRlZmF1bHQuYyAoY3BwX2luY2x1ZGVfZGVmYXVsdHMpOiBNYWtlIEZJWEVEX0lOQ0xVREVfRElSIGEKCW11bHRpbGliLXN1ZmZpeGVkIGRpcmVjdG9yeSBpZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKCWRlZmluZWQuCgkqIGRvYy9pbnZva2UudGV4aSAoLXByaW50LXN5c3Jvb3QtaGVhZGVycy1zdWZmaXgpOiBEb2N1bWVudC4KCSogZ2NjLmMgKHByaW50X3N5c3Jvb3RfaGVhZGVyc19zdWZmaXgpOiBOZXcuCgkob3B0aW9uX21hcCk6IEluY2x1ZGUgLS1wcmludC1zeXNyb290LWhlYWRlcnMtc3VmZml4LgoJKGRpc3BsYXlfaGVscCk6IE1lbnRpb24gLXByaW50LXN5c3Jvb3QtaGVhZGVycy1zdWZmaXguCgkocHJvY2Vzc19jb21tYW5kKTogSGFuZGxlIC1wcmludC1zeXNyb290LWhlYWRlcnMtc3VmZml4LgoJKGRvX3NwZWNfMSk6IEFwcGVuZCBtdWx0aWxpYiBkaXJlY3RvcnkgdG8gaW5jbHVkZS1maXhlZCBwYXRoIGlmCglzeXNyb290IHN1ZmZpeGVzIGluIHVzZS4KCShtYWluKTogSGFuZGxlIC1wcmludC1zeXNyb290LWhlYWRlcnMtc3VmZml4LgoJKiBNYWtlZmlsZS5pbiAoc3RhcnQuZW5jYXApOiBEb24ndCBkZXBlbmQgb24geGxpbWl0cy5oCgkoeGxpbWl0cy5oKTogUmVtb3ZlLgoJKHN0bXAtaW50LWhkcnMpOiBEb24ndCBkZXBlbmQgb24geGxpbWl0cy5oLiAgSW5saW5lIGdlbmVyYXRpb24gb2YKCWxpbWl0cy5oIGZvciBlYWNoIG11bHRpbGliIGluIGZpeGluY19saXN0LgoJKGZpeGluY19saXN0LCBzLWZpeGluY19saXN0KTogTmV3LgoJKHN0bXAtZml4aW5jKTogRGVwZW5kIG9uIGZpeGluY19saXN0LiAgSWYgbm90IGNvcHlpbmcgaGVhZGVycywKCWdlbmVyYXRlIHRoZW0gZm9yIGVhY2ggbXVsdGlsaWIgaW4gZml4aW5jX2xpc3QuCgkoc3RtcC1maXhwcm90byk6IFVzZSBpbmNsdWRlLWZpeGVkLiAgUnVuIGZpeHByb3RvIGZvciBlYWNoCgltdWx0aWxpYiBpbiBmaXhpbmNfbGlzdC4KCShtb3N0bHljbGVhbik6IERvbid0IHJlbW92ZSB4bGltaXRzLmguCgkoY2xlYW4pOiBSZW1vdmUgaW5jbHVkZS1maXhlZC4KCShyZWFsLWluc3RhbGwtaGVhZGVycy10YXIsIHJlYWwtaW5zdGFsbC1oZWFkZXJzLWNwaW8sCglyZWFsLWluc3RhbGwtaGVhZGVycy1jcCk6IERvbid0IGNvcHkgaW5jbHVkZSwgb25seSBpbmNsdWRlLWZpeGVkLgoJKGluc3RhbGwtbWtoZWFkZXJzKTogRGVwZW5kIG9uIGZpeGluY19saXN0LiAgRG9uJ3QgZGVwZW5kIG9uCgl4bGltaXRzLmguICBTYXZlIGxpbWl0cy5oIGZpbGVzIGZvciBlYWNoIG11bHRpbGliIGluIGZpeGluY19saXN0LgoJQWx3YXlzIHNhdmUgbWtpbnN0YWxsZGlycy4gIFByZXNlcnZlICR7c3lzcm9vdF9oZWFkZXJzX3N1ZmZpeH0gaW4KCVNZU1RFTV9IRUFERVJfRElSIHNldHRpbmcgaW4gbWtoZWFkZXJzLmNvbmYuCgoyMDA3LTAzLTA2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWdzdGFjay5jIChyZWdfdG9fc3RhY2spOiBXaGVuIGluIDY0Yml0IFBJQyBtb2RlLCB3ZSBzdGlsbCBjYW4gbG9hZAoJTkFOcyBlYXNpbGx5LgoKMjAwNy0wMy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IEFsbG93IHRtX2ZpbGUgdG8gY29udGFpbiBidWlsZC1kaXJlY3RvcnkgZmlsZXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmdjYyAobTY4ay0qLXVjbGludXgqKTogQWRkIC4vc3lzcm9vdC1zdWZmaXguaCB0byB0bV9maWxlLgoJKiBjb25maWcvbTY4ay90LXVjbGludXggKHN5c3Jvb3Qtc3VmZml4LmgpOiBOZXcgdGFyZ2V0LgoJKiBjb25maWcvbTY4ay9wcmludC1zeXNyb290LXN1ZmZpeC5zaDogTmV3IGZpbGUuCgoyMDA3LTAzLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoUElDX09GRlNFVF9UQUJMRV9SRUdOVU0pOiBVc2UgdGhlIFJFR05PCglvZiBwaWNfb2Zmc2V0X3RhYmxlX3J0eCBpZiByZWxvYWRfY29tcGxldGVkLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogVXNlIFBJQ19SRUcgaW5zdGVhZCBvZgoJUElDX09GRlNFVF9UQUJMRV9SRUdOVU0uCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoVEFSR0VUX0FTTV9DQU5fT1VUUFVUX01JX1RIVU5LKTogQWx3YXlzCglyZXR1cm4gdHJ1ZS4KCShtNjhrX3NhdmVfcmVnKTogVXNlIFBJQ19SRUcgaW5zdGVhZCBvZiBQSUNfT0ZGU0VUX1RBQkxFX1JFR05PLgoJKG02OGtfb3V0cHV0X21pX3RodW5rKTogUmV3cml0ZSB0byB1c2UgUlRMLiAgSG9ub3IgdmNhbGxfb2Zmc2V0LgoKMjAwNy0wMy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfc2F2ZV9yZWcpOiBTYXZlIHRoZSBQSUMgcmVnaXN0ZXIgaW4KCWZ1bmN0aW9ucyB0aGF0IGNhbGwgZWhfcmV0dXJuLgoKMjAwNy0wMy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfc2F2ZV9yZWcpOiBTYXZlIHRoZSBQSUMgcmVnaXN0ZXIgaW4KCWZ1bmN0aW9ucyB0aGF0IG5lZWQgYSBjb25zdGFudCBwb29sLgoKMjAwNy0wMy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzI4MTgxCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmggKG02OGtfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IERlY2xhcmUuCgkobTY4a19wcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoSEFSRF9SRUdOT19NT0RFX09LKTogUmVtb3ZlIGR1cGxpY2F0ZWQgY29tbWVudC4KCShTRUNPTkRBUllfUkVMT0FEX0NMQVNTKTogRGVmaW5lLgoJKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBVc2UgbTY4a19wcmVmZXJyZWRfcmVsb2FkX2NsYXNzLgoJKExJTUlUX1JFTE9BRF9DTEFTUyk6IERlbGV0ZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX3JlZ25vX21vZGVfb2spOiBEb24ndCBwcmV2ZW50IGFkZHJlc3MKCXJlZ2lzdGVycyBmcm9tIHN0b3JpbmcgYnl0ZXMuCgkobTY4a19zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKG02OGtfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyk6IExpa2V3aXNlLgoKMjAwNy0wMy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfc2F2ZV9yZWcpOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvcgoJbGVhZiBmdW5jdGlvbnMuCgkobTY4a19leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4KCjIwMDctMDMtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCAob3V0cHV0X3NpYmNhbGwpOiBEZWNsYXJlLgoJKG1pcHNfZXhwYW5kX2VwaWxvZ3VlKTogQWRkIGEgYm9vbCBwYXJhbWV0ZXIuCgkobTY4a19sZWdpdGltaXplX3NpYmNhbGxfYWRkcmVzcyk6IERlY2xhcmUuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoVEFSR0VUX0ZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogRGVmaW5lLgoJKG02OGtfZXhwYW5kX2VwaWxvZ3VlKTogQWRkIGEgcGFyYW1ldGVyIHRvIHNlbGVjdCBiZXR3ZWVuIHNpYmxpbmcKCWFuZCBub3JtYWwgZXBpbG9ndWVzLiAgT25seSBnZW5lcmF0ZSBhIHJldHVybiBmb3IgdGhlIGxhdHRlci4KCShtNjhrX29rX2Zvcl9zaWJjYWxsX3ApOiBOZXcgZnVuY3Rpb24uCgkobTY4a19sZWdpdGltaXplX3NpYmNhbGxfYWRkcmVzcywgb3V0cHV0X3NpYmNhbGwpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChzaWJjYWxsLCAqc2liY2FsbCk6IE5ldyBwYXR0ZXJucy4KCShzaWJjYWxsX3ZhbHVlLCAqc2liY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoJKCpjYWxsLCAqY2FsbF92YWx1ZSk6IFJlcXVpcmUgIVNJQkxJTkdfQ0FMTF9QLgoJKGVwaWxvZ3VlKTogVXBkYXRlIGNhbGwgdG8gbTY4a19leHBhbmRfZXBpbG9ndWUuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IE5ldyBwYXR0ZXJuLgoJKiBjb25maWcvbTY4ay9wcmVkaWNhdGVzLm1kIChjb25zdF9jYWxsX29wZXJhbmQpOiBTYXkgdGhhdCB0aGlzCglwcmVkaWNhdGUgYXBwbGllcyB0byBzaWJsaW5nIGNhbGxzIHRvby4KCShzaWJjYWxsX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoKMjAwNy0wMy0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChtb3ZzZl9jZl9zb2Z0KTogUHJvdmlkZSB0aGUgc2FtZSBub24tbW92M3EKCWFsdGVybmF0aXZlcyBhcyBtb3ZzaV9jZi4KCShtb3ZzZl9jZl9oYXJkKTogQWRkIGNvbW1lbnRhcnkuCgoyMDA3LTAzLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmggKG02OGtfaW50ZXJydXB0X2Z1bmN0aW9uX3ApOiBEZWNsYXJlLgoJKG02OGtfbW92ZW1fcGF0dGVybl9wLCBtNjhrX291dHB1dF9tb3ZlbSk6IExpa2V3aXNlLgoJKG02OGtfZXhwYW5kX3Byb2xvZ3VlLCBtNjhrX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEVQSUxPR1VFX1VTRVMpOiBEZWZpbmUuICBUcmVhdCBhbGwgcmVnaXN0ZXJzCglhcyBiZWluZyBsaXZlIG9uIGV4aXQgZnJvbSBhbiBpbnRlcnJ1cHQgZnVuY3Rpb24uCgkoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogUmV0dXJuIHRydWUgZm9yICc/Jy4KCSogY29uZmlnL202OGsvbTY4ay5jIChNSU5fTU9WRU1fUkVHUywgTUlOX0ZNT1ZFTV9SRUdTKTogTmV3IG1hY3Jvcy4KCShtNjhrX2ZyYW1lKTogUmVtb3ZlIHJlZ19yZXZfbWFzayBhbmQgZnB1X3Jldl9tYXNrLgoJKFRBUkdFVF9BU01fRlVOQ1RJT05fUFJPTE9HVUUsIFRBUkdFVF9BU01fRlVOQ1RJT05fRVBJTE9HVUUpOiBEZWxldGUuCgkobTY4a19pbnRlcnJ1cHRfZnVuY3Rpb25fcCk6IEdsb2JhbGl6ZS4KCShtNjhrX2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogUmVtb3ZlIHJldmVyc2UgbWFzayBjb2RlLgoJKG02OGtfZW1pdF9tb3ZlbSwgbTY4a19zZXRfZnJhbWVfcmVsYXRlZCk6IE5ldyBmdW5jdGlvbnMuCgkobTY4a19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBEZWxldGUgaW4gZmF2b3Igb2YuLi4KCShtNjhrX2V4cGFuZF9wcm9sb2d1ZSk6IC4uLnRoaXMgbmV3IGZ1bmN0aW9uLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogRGVsZXRlIGluIGZhdm9yIG9mLi4uCgkobTY4a19leHBhbmRfZXBpbG9ndWUpOiAuLi50aGlzIG5ldyBmdW5jdGlvbi4KCShtNjhrX3NwbGl0X29mZnNldCwgbTY4a19tb3ZlbV9wYXR0ZXJuX3AsIG02OGtfb3V0cHV0X21vdmVtKTogTmV3CglmdW5jdGlvbnMuCgkocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAlPy4KCSogY29uZmlnL202OGsvbTY4ay5tZCAoVU5TUEVDX1NJTiwgVU5TUEVDX0NPUyk6IFJlbW92ZSBleGNlc3Mgc3BhY2UuCgkoVU5TUEVDX0dPVCwgQTFfUkVHLCBQSUNfUkVHLCBGUDBfUkVHKTogTmV3IGNvbnN0YW50cy4KCShwcm9sb2d1ZSwgZXBpbG9ndWUpOiBOZXcgcGF0dGVybnMuCgkocmV0dXJuKTogVHVybiBpbnRvIGEgZGVmaW5lX2V4cGFuZC4KCSgqcmV0dXJuKTogTmV3IHBhdHRlcm4sIGRlcml2ZWQgZnJvbSBvbGQgInJldHVybiIgcGF0dGVybi4gIFVzZSBydGUKCXJhdGhlciB0aGFuIHJ0cyBmb3IgaW50ZXJydXB0IGZ1bmN0aW9ucy4gIE9ubHkgdXNlIHJ0ZCBpZiB0aGUgcG9wCgljb3VudCBpcyBub256ZXJvLgoJKCptNjhrX3N0b3JlX211bHRpcGxlLCAqbTY4a19zdG9yZV9tdWx0aXBsZV9hdXRvbW9kKTogTmV3IHBhdHRlcm5zLgoJKCptNjhrX2xvYWRfbXVsdGlwbGUsICptNjhrX2xvYWRfbXVsdGlwbGVfYXV0b21vZCk6IExpa2V3aXNlLgoJKGxpbmssICpsaW5rLCB1bmxpbmssICp1bmxpbmssIGxvYWRfZ290KTogTGlrZXdpc2UuCgoyMDA3LTAzLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjM0ODIKCVBSIHRhcmdldC8xNzExNAoJKiBjb25maWcvbTY4ay9tNjhrLXByb3Rvcy5oIChtNjhrX2xlZ2l0aW1hdGVfYmFzZV9yZWdfcCk6IERlY2xhcmUuCgkobTY4a19sZWdpdGltYXRlX2luZGV4X3JlZ19wLCBtNjhrX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogTGlrZXdpc2UuCgkobTY4a19tYXRjaGVzX3FfcCwgbTY4a19tYXRjaGVzX3VfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEVYVFJBX0NPTlNUUkFJTlQpOiBVc2UgbTY4a19tYXRjaGVzX3FfcAoJYW5kIG02OGtfbWF0Y2hlc191X3AuCgkoUENSRUxfR0VORVJBTF9PUEVSQU5EX09LLCBMRUdJVElNQVRFX0JBU0VfUkVHX1ApOiBEZWxldGUuCgkoSU5ESVJFQ1RBQkxFXzFfQUREUkVTU19QLCBHT19JRl9OT05JTkRFWEVEX0FERFJFU1MpOiBEZWxldGUuCgkoR09fSUZfSU5ERVhBQkxFX0JBU0UsIEdPX0lGX0lOREVYSU5HLCBHT19JRl9JTkRFWEVEX0FERFJFU1MpOiBEZWxldGUuCgkoTEVHSVRJTUFURV9JTkRFWF9SRUdfUCwgTEVHSVRJTUFURV9JTkRFWF9QKTogRGVsZXRlLgoJKEdPX0lGX0NPTERGSVJFX0ZQVV9MRUdJVElNQVRFX0FERFJFU1MpOiBEZWxldGUuCgkoUkVHX1NUUklDVF9QKTogTmV3IG1hY3JvLgoJKExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCk6IFVzZSBSRUdfU1RSSUNUX1AgcmF0aGVyIHRoYW4KCVBDUkVMX0dFTkVSQUxfT1BFUkFORF9PSy4KCShSRUdfT0tfRk9SX0JBU0VfUCk6IE1lcmdlIGRlZmluaXRpb25zLiAgVXNlIFJFR19TVFJJQ1RfUCBhbmQKCW02OGtfbGVnaXRpbWF0ZV9iYXNlX3JlZ19wLgoJKFJFR19NT0RFX09LX0ZPUl9JTkRFWF9QKTogTGlrZXdpc2UgbTY4a19sZWdpdGltYXRlX2luZGV4X3JlZ19wLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IExpa2V3aXNlIG02OGtfbGVnaXRpbWF0ZV9hZGRyZXNzX3AuCgkoUElDX0NBU0VfVkVDVE9SX0FERFJFU1MpOiBVcGRhdGUgY29tbWVudC4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2FkZHJlc3MpOiBOZXcgc3RydWN0dXJlLgoJKG02OGtfbGVnaXRpbWF0ZV9iYXNlX3JlZ19wLCBtNjhrX2xlZ2l0aW1hdGVfaW5kZXhfcmVnX3ApCgkobTY4a19kZWNvbXBvc2VfaW5kZXgsIG02OGtfbGVnaXRpbWF0ZV9jb25zdGFudF9hZGRyZXNzX3ApCgkobTY4a19qdW1wX3RhYmxlX3JlZl9wLCBtNjhrX2RlY29tcG9zZV9hZGRyZXNzKQoJKG02OGtfbGVnaXRpbWF0ZV9hZGRyZXNzX3AsIG02OGtfbGVnaXRpbWF0ZV9tZW1fcCwgbTY4a19tYXRjaGVzX3FfcCkKCShtNjhrX21hdGNoZXNfdV9wKTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBSZXdyaXRlIHRvIHVzZSBtNjhrX2RlY29tcG9zZV9pbmRleC4KCjIwMDctMDMtMDUgIERhdmlkIFRheWxvciAgPGR0YXlsb3JAZW1jLmNvbT4KCgkqIGdjYy5jOiBDb3JyZWN0IGNvcHlyaWdodCBkYXRlIGluIC0tdmVyc2lvbiBvdXRwdXQuCgoyMDA3LTAzLTA1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQ6IEluIHVuYW1lZCBtb3ZlIHBhdHRlcm5zLCBkaXNwYXJnZSBjb3BpZXMgYmV0d2VlbiBnZW5lcmFsCglhbmQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIHVzaW5nICc/JyBtb2RpZmllci4gIERvbid0IGluY2x1ZGUgJ2YnCgljb25zdHJhaW50IGZvciByZWdpc3RlciBwcmVmZXJlbmNlcyBpbiBESW1vZGUsIFNJbW9kZSwgSEltb2RlIGFuZAoJUUltb2RlIHBhdHRlcm5zLiAgTGlrZXdpc2UgZm9yICdyJyBpbiBERm1vZGUgYW5kIFNGbW9kZSBwYXR0ZXJucy4KCVJlbW92ZSBjb25zdHJhaW50cyBmb3IgY29waWVzIGJldHdlZW4gZ2VuZXJhbCBhbmQgZmxvYXRpbmcgcmVnaXN0ZXJzCglpbiBzb2Z0LWZsb2F0IERGbW9kZSBwYXR0ZXJuLgoJKG1vdmRmKTogRmFpbCBpZiBvcGVyYW5kMSBpcyBhIENPTlNUX0RPVUJMRSBhbmQgb3BlcmFuZDAgaXMgYSBoYXJkCglmbG9hdGluZyByZWdpc3Rlci4KCShtb3ZzZik6IExpa2V3aXNlLgoKMjAwNy0wMy0wNSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5jICh0YXJnZXRjbSk6IEFkZC4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgbGFuZ3VhZ2Ugc3BlY2lmaWMKCXRhcmdldCBvcHRpb25zLgoJKiBvcHRzLmMgKGhhbmRsZV9vcHRpb24pOiBWZXJpZnkgbGFuZ3VhZ2UgZm9yIHRhcmdldCBvcHRpb25zLCBpZgoJYW55IGFyZSBnaXZlbi4KCSogb3B0aC1nZW4uYXdrOiBBZGQgQ0xfTEFOR19BTEwuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0hBTkRMRV9DX09QVElPTik6IEFkZC4KCShUQVJHRVRDTV9JTklUSUFMSVpFUik6IEFkZC4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0Y20pOiBBZGQuCgkodGFyZ2V0Y20pOiBBZGQuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X2hhbmRsZV9jX29wdGlvbik6IEFkZC4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfaGFuZGxlX2Nfb3B0aW9uKTogQWRkLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0hBTkRMRV9DX09QVElPTik6IEFkZC4KCgkqIGNvbmZpZy9kYXJ3aW4ub3B0IChpZnJhbWV3b3JrKTogQWRkLgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9IQVNfVEFSR0VUQ00pOiBBZGQuCgkqIGNvbmZpZy9kYXJ3aW4tYy5jIChoYW5kbGVfY19vcHRpb24pOiBBZGQuCgkoVEFSR0VUX0hBTkRMRV9DX09QVElPTik6IEFkZC4KCSh0YXJnZXRjbSk6IEFkZC4KCSogZG9jL2ludm9rZS50ZXhpIChEYXJ3aW4gT3B0aW9ucyk6IEFkZCAtaWZyYW1ld29yay4KCjIwMDctMDMtMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogRml4IG5lYXJieWludC9yaW50IC0+ICpscmludAoJY29udmVyc2lvbi4KCjIwMDctMDMtMDUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBjLm9wdCAoZmdudTg5LWlubGluZSk6IE5ldyBvcHRpb24uCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBTZXQgZGVmYXVsdCB2YWx1ZSBmb3IKCWZsYWdfZ251ODlfaW5saW5lLgoJKiBjLWRlY2wuYyAoV0FOVF9DOTlfSU5MSU5FX1NFTUFOVElDUyk6IFJlbW92ZS4KCShwb3Bfc2NvcGUpOiBDaGVjayBmbGFnX2dudTg5X2lubGluZSByYXRoZXIgdGhhbiBmbGFnX2lzb2M5OSBmb3IKCWlubGluZSBmdW5jdGlvbnMuCgkoZGlhZ25vc2VfbWlzbWF0Y2hlZF9kZWNscywgbWVyZ2VfZGVjbHMsIHN0YXJ0X2RlY2wpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvciwgc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogYy1jcHBidWlsdGluLmMgKGNfY3BwX2J1aWx0aW5zKTogRGVmaW5lIGVpdGhlcgoJX19HTlVDX0dOVV9JTkxJTkVfXyBvciBfX0dOVUNfU1REQ19JTkxJTkVfXy4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSk6IE1lbnRpb24gLWZnbnU4OS1pbmxpbmUuCgkoQyBEaWFsZWN0IE9wdGlvbnMpOiBEb2N1bWVudCAtZmdudTg5LWlubGluZS4KCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRXhwbGFpbiB3aGF0IHRoZQoJZ251X2lubGluZSBhdHRyaWJ1dGUgZG9lcy4KCSogZG9jL2NwcC50ZXhpIChDb21tb24gUHJlZGVmaW5lZCBNYWNyb3MpOiBEb2N1bWVudAoJX19HTlVDX0dOVV9JTkxJTkVfXyBhbmQgX19HTlVDX1NURENfSU5MSU5FX18uCgoyMDA3LTAzLTA1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMxMDM0CgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV9hc3NlcnQpOiBEb24ndCB0cnkgdG8gaGFuZGxlIGEKCWhhbGYtcmFuZ2UgaWYgdGhlIG90aGVyIHNpZGUgaXMgYW4gb3ZlcmZsb3cgaW5maW5pdHkuCgoyMDA3LTAzLTA1ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY29uZmlnLmdjYyAoYmZpbiotdWNsaW51eCopOiBVc2UgdC1iZmluLXVjbGludXguCgkoYmZpbiotbGludXgtdWNsaWJjKik6IE5ldyBjb25maWd1cmF0aW9uLgoJKiBjb25maWcvbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogVW5kZWZpbmVkIGJlZm9yZQoJZGVmaW5pbmcuCgkqIGNvbmZpZy9iZmluL2xpbnV4Lmg6IE5ldyBmaWxlLgoJKiBjb25maWcvYmZpbi9saWJnY2MtYmZpbi52ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcvYmZpbi90LWJmaW4tdWNsaW51eDogTmV3IGZpbGUuCgkqIGNvbmZpZy9iZmluL3QtYmZpbi1saW51eDogTmV3IGZpbGUuCgkqIGNvbmZpZy9iZmluL3VjbGludXguaCAoTElOVVhfVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IE5ldyBtYWNyby4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTmV3IG1hY3JvLgoKMjAwNy0wMy0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IFJlbW92ZSBkdXBsaWNhdGUgZm9sZGluZwoJb2YgY29tcGFyaXNvbiBvZiBub24tbnVsbCBBRERSX0VYUFIgYWdhaW5zdCBudWxsLgoKMjAwNy0wMy0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJICAgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY0MjAKCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3Rvcml6ZV9sb29wcyk6IEJhaWwgb3V0IGVhcmx5IGlmIHRoZXJlCglhcmUgbm8gbG9vcHMgaW4gdGhlIGZ1bmN0aW9uLiAgT25seSBwcmludCB0aGUgbnVtYmVyIG9mCgl2ZWN0b3JpemVkIGxvb3BzIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIG9yIHdlIGFyZSBzdXBwb3NlZAoJdG8gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgdW52ZWN0b3JpemVkIGxvb3BzLgoKMjAwNy0wMy0wNSAgUmV2aXRhbCBFcmVzICA8ZXJlc0BpbC5pYm0uY29tPgoKCSogZ2NjLmRnL3Zhci1leHBhbmQxLmM6IE5ldyB0ZXN0LgoJKiBsb29wLXVucm9sbC5jIChhbmFseXplX2luc25fdG9fZXhwYW5kX3Zhcik6IEFkZCBkdW1wIGluZm8KCXdoZW4gYW4gYWNjdW11bGF0b3IgaXMgZXhwYW5kZWQuCgoyMDA3LTAzLTA0ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBvdGhlci8zMDQ2NQoJKiBjLWNvbW1vbi5jIChjb252ZXJ0X2FuZF9jaGVjayk6IERvbid0IGdpdmUgd2FybmluZ3MgZm9yCgljb252ZXJzaW9uIGlmICdleHByJyBhbHJlYWR5IG92ZXJmbG93ZWQuCgoyMDA3LTAzLTA0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwNzQ0CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb21wYXJpc29uKTogRW5mb3JjZSB0eXBlIGNvbnNpc3RlbmN5IHdoZW4KCXRyYW5zZm9ybWluZyB+WCBvcCB+WSB0byBZIG9wIFgsIGFuZCB+WCBvcCBDIHRvIFggb3AnIH5DLgoKMjAwNy0wMy0wNCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWFkZHJlc3MuYyAoY3JlYXRlX21lbV9yZWYpOiBEbyBub3QgcHV0IGFuIGV4cHJlc3Npb24KCWNvbnRhaW5pbmcgYSBjYXN0IHRvIHRoZSBiYXNlIG9mIFRBUkdFVF9NRU1fUkVGLgoKMjAwNy0wMy0wNCAgTWFydGluIE1pY2hsbWF5ciAgPHRibUBjeXJpdXMuY29tPgoKCSogdHJlZS5jICh0cmVlX2NvbnRhaW5zX3N0cnVjdF9jaGVja19mYWlsZWQpOiBSZW1vdmUgc3B1cmlvdXMKCXdoaXRlc3BhY2UgZnJvbSBlcnJvciBtZXNzYWdlLgoKMjAwNy0wMy0wNCBBbmRyZXcgUGluc2tpIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIHRhcmdldC8zMDQwNgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZnVuY3Rpb25fdmFsdWUpOiBMb29rIGF0IGJpdCBzaXplCglpbnN0ZWFkIG9mIHByZWNpc2lvbi4KCjIwMDctMDMtMDQgIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoJICAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbWl0LXJ0bC5jIChmaW5kX2F1dG9faW5jKTogTmV3LgoJKHRyeV9zcGxpdCk6IHJlY3JlYXRlIFJFR19JTkMgbm90ZXMsCglVc2UgcmVndWxhciBmb3IgbG9vcHMgcmF0aGVyIHRoYW4gd2hpbGVzLgoKMjAwNy0wMy0wMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5hYyAoSEFWRV9BU19SRUwxNik6IE1vdmUgdGVzdCBiYWNrIHRvIGNvcnJlY3QgcGxhY2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDctMDMtMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmRlZiAoQVRUUl9NQVRIRk5fRlBST1VORElORyk6IFJlbHkgb24KCWZsYWdfcm91bmRpbmdfbWF0aCwgbm90IGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucy4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfZGlyZWN0X2Fic3RyYWN0X2RlY2xhcmF0b3IpOiBVc2UKCWZvbGRfYnVpbGQyLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZm9sZF9idWlsdGluX3phcG5vdCwKCWFscGhhX2ZvbGRfdmVjdG9yX21pbm1heCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19naW1wbGlmeV92YV9hcmcpOiBMaWtld2lzZS4KCjIwMDctMDMtMDIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLXNyYS5jIChzcmFfd2Fsa19mbnMpIDxsZHN0PjogRG9jdW1lbnQgbmV3IHJlc3RyaWN0aW9uLgoJKHNyYV93YWxrX21vZGlmeV9leHByKSA8cmhzX2VsdD46IFRyZWF0IHRoZSByZWZlcmVuY2UgYXMgYSB1c2UKCWlmIHRoZSBsaHMgaGFzIHNpZGUtZWZmZWN0cy4KCTxsaHNfZWx0PjogVHJlYXQgdGhlIHJlZmVyZW5jZSBhcyBhIHVzZSBpZiB0aGUgcmhzIGhhcyBzaWRlLWVmZmVjdHMuCgoyMDA3LTAzLTAyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChUVU5FTUFTSyk6IFJlbW92ZSBkZWZpbmUuCgkoQVJDSE1BU0spOiBSZW1vdmUgZGVmaW5lLgoJKFRBUkdFVF8qKTogVXNlIGl4ODZfdHVuZV9tYXNrIHZhcmlhYmxlIGluc3RlYWQgb2YgVFVORU1BU0suCgkgVXNlIGl4ODZfYXJjaF9tYXNrIHZhcmlhYmxlIGluc3RlYWQgb2YgQVJDSE1BU0suCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IERpdHRvLgoJKHN0YW5kYXJkXzgwMzg3X2NvbnN0YW50X3ApOiBEaXR0by4KCjIwMDctMDMtMDIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJVXNlZCBzaWduZWQgaW5maW5pdGllcyBpbiBWUlAuCgkqIHRyZWUtdnJwLmMgKHVzZXNfb3ZlcmZsb3dfaW5maW5pdHkpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHN1cHBvcnRzX292ZXJmbG93X2luZmluaXR5KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShtYWtlX292ZXJmbG93X2luZmluaXR5KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShuZWdhdGl2ZV9vdmVyZmxvd19pbmZpbml0eSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkocG9zaXRpdmVfb3ZlcmZsb3dfaW5maW5pdHkpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGlzX25lZ2F0aXZlX292ZXJmbG93X2luZmluaXR5KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShpc19wb3NpdGl2ZV9vdmVyZmxvd19pbmZpbml0eSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoaXNfb3ZlcmZsb3dfaW5maW5pdHkpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKG92ZXJmbG93X2luZmluaXR5X3JhbmdlX3ApOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGNvbXBhcmVfdmFsdWVzX3dhcm52KTogTmV3IGZ1bmN0aW9uIHNwbGl0IG91dCBvZiBjb21wYXJlX3ZhbHVlcy4KCShjb21wYXJlX3ZhbHVlKTogQ2FsbCBpdC4KCShzZXRfdmFsdWVfcmFuZ2VfdG9fbm9ubmVnYXRpdmUpOiBBZGQgb3ZlcmZsb3dfaW5maW5pdHkKCXBhcmFtZXRlci4gIENoYW5nZSBjYWxsZXIuCgkodnJwX2V4cHJfY29tcHV0ZXNfbm9ubmVnYXRpdmUpOiBBZGQgc3RyaWN0X292ZXJmbG93X3AgcGFyYW1ldGVyLgoJQ2hhbmdlIGNhbGxlcnMuCgkodnJwX2V4cHJfY29tcHV0ZXNfbm9uemVybyk6IExpa2V3aXNlLgoJKGNvbXBhcmVfcmFuZ2VzLCBjb21wYXJlX3JhbmdlX3dpdGhfdmFsdWUpOiBMaWtld2lzZS4KCShjb21wYXJlX25hbWVfd2l0aF92YWx1ZSwgY29tcGFyZV9uYW1lcyk6IExpa2V3aXNlLgoJKHZycF9ldmFsdWF0ZV9jb25kaXRpb25hbCk6IExpa2V3aXNlLgoJKHNldF92YWx1ZV9yYW5nZSk6IEhhbmRsZSBpbmZpbml0eQoJKHZycF9vcGVyYW5kX2VxdWFsX3AsIG9wZXJhbmRfbGVzc19wKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2Fzc2VydCk6IExpa2V3aXNlLgoJKHZycF9pbnRfY29uc3RfYmlub3ApOiBMaWtld2lzZS4KCShleHRyYWN0X3JhbmdlX2Zyb21fYmluYXJ5X2V4cHIpOiBMaWtld2lzZS4KCShleHRyYWN0X3JhbmdlX2Zyb21fdW5hcnlfZXhwcik6IExpa2V3aXNlLgoJKGV4dHJhY3RfcmFuZ2VfZnJvbV9jb21wYXJpc29uKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2V4cHIpOiBMaWtld2lzZS4KCShkdW1wX3ZhbHVlX3JhbmdlKTogTGlrZXdpc2UuCgkodnJwX3Zpc2l0X2NvbmRfc3RtdCwgdnJwX3Zpc2l0X3BoaV9ub2RlKTogTGlrZXdpc2UuCgkodGVzdF9mb3Jfc2luZ3VsYXJpdHkpOiBMaWtld2lzZS4KCSh2cnBfaW50X2NvbnN0X2Jpbm9wKTogUmVtb3ZlIGlubGluZSBxdWFsaWZpZXIuCgkoYWRqdXN0X3JhbmdlX3dpdGhfc2Nldik6IEFkZCBjb21tZW50LgoJKiB0cmVlLWZsb3cuaCAodnJwX2V2YWx1YXRlX2NvbmRpdGlvbmFsKTogVXBkYXRlIGRlY2xhcmF0aW9uLgoKMjAwNy0wMy0wMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChjb3VsZF9oYXZlX3BvaW50ZXJzKTogVGlkeS4KCShnZXRfY29uc3RyYWludF9mb3IpOiBMaWtld2lzZS4KCShkb19zdHJ1Y3R1cmVfY29weSk6IExpa2V3aXNlLgoJKGZpbmRfZnVuY19hbGlhc2VzKTogRml4IHJlZmVyZW5jZXMgdG8gTU9ESUZZX0VYUFIuCgkoaW50cmFfY3JlYXRlX3ZhcmlhYmxlX2luZm9zKTogVGlkeS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoYWRkX3ZpcnR1YWxfb3BlcmFuZCk6IEFkZCBhcmd1bWVudAoJSVNfQ0FMTF9TSVRFLgoJV2hlbiBhZGRpbmcgbWVtYmVycyBvZiBhbGlhcyBzZXRzLCBpZiBJU19DQUxMX1NJVEUgaXMgdHJ1ZSBhbmQKCXRoZSBzeW1ib2wgaXMgbm90IGNhbGwtY2xvYmJlcmVkLCBza2lwIGl0LgoJQWRqdXN0IGFsbCBjYWxsZXJzLgoKMjAwNy0wMy0wMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9ncF9zYXZlX3J0eCk6IEluc2VydCB0aGUgaW5zbnMgYXQgdGhlCgllbnRyeSBieSBtZWFucyBvZiBlbWl0X2luc25fYXRfZW50cnkuCgoyMDA3LTAzLTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5oIChwcm9tb3RlZF9pbnB1dF9hcmcpOiBSZW1vdmUgZGVjbC4KCSogZnVuY3Rpb24uYyAocHJvbW90ZWRfaW5wdXRfYXJnKTogTWVyZ2UgaW50byAuLi4KCSogY29tYmluZS5jIChzZXR1cF9pbmNvbWluZ19wcm9tb3Rpb25zKTogLi4uIG9ubHkgY2FsbGVyLgoJUmVhcnJhbmdlIHRvIGF2b2lkIGRvdWJsZSBsb29wLgoKMjAwNy0wMy0wMiAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgkgICAgUGV0ZXIgQmVyZ25lciAgPGJlcmduZXJAdm5ldC5pYm0uY29tPgoJICAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9kZnAubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogSW5jbHVkZSBkZnAubWQuCgkoYWRkPG1vZGU+M19pbnRlcm5hbDEpOiBEaXNhYmxlIGZvciBERUNJTUFMX0ZMT0FUX01PREVfUCBvcGVyYW5kcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayk6IEhhbmRsZSBERG1vZGUKCWFuZCBURG1vZGUgZGVjaW1hbCBmbG9hdCBtb2RlcyBpbiBGUCByZWdpc3RlcnMuCgkobnVtX2luc25zX2NvbnN0YW50KTogTGlrZXdpc2UuCgkocnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBMaWtld2lzZS4KCShyczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyk6IExpa2V3aXNlLgoJKHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MpOiBMaWtld2lzZS4KCShyczYwMDBfZW1pdF9tb3ZlKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBMaWtld2lzZS4KCShyczYwMDBfZGFyd2luNjRfcmVjb3JkX2FyZ19yZWN1cnNlKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UuCgkocnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlKTogTGlrZXdpc2UuCgkocnM2MDAwX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKHJzNjAwMF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCShyczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0KTogTGlrZXdpc2UuCgkocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkocnM2MDAwX2xpYmNhbGxfdmFsdWUpOiBMaWtld2lzZS4KCjIwMDctMDMtMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3Qtdnh3b3JrcyAoTElNSVRTX0hfVEVTVCk6IERlZmluZSB0byB0cnVlIGZvciBWeFdvcmtzLgoKMjAwNy0wMy0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvdC12eHdvcmtzIChMSUJHQ0MyX0lOQ0xVREVTKTogUGFzcyAtbm9zdGRpbmMuCglVc2UgJE1VTFRJRElSIHRvIGNob29zZSBiZXR3ZWVuIHRoZSBrZXJuZWwgYW5kIFJUUCBoZWFkZXJzLAoJYW5kIHVzZSAkV0lORF9CQVNFIGFuZCAkV0lORF9VU1IgdG8gbG9jYXRlIHRoZW0uCgoyMDA3LTAzLTAyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogUHV0IGluaXRpYWxpemF0aW9uIG9mCglpeDg2X3R1bmVfbWFzayBhbmQgaXg4Nl9hcmNoX21hc2sgdG8gdGhlIGNvcnJlY3QgcGxhY2UuCgoyMDA3LTAzLTAyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoJICAgIE1pY2hhZWwgTWVpc3NuZXIgIDxtaWNoYWVsLm1laXNzbmVyQGFtZC5jb20+CgoJUFIgdGFyZ2V0LzMxMDE5CgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVFVORU1BU0spOiBSZWRlZmluZSB0byB1c2UgaXg4Nl90dW5lX21hc2suCgkoQVJDSE1BU0spOiBEZWZpbmUuCgkoVEFSR0VUX0NNT1ZFKTogVXNlIEFSQ0hNQVNLLgoJKFRBUkdFVF9DTVBYQ0hHKTogRGl0dG8uCgkoVEFSR0VUX0NNUFhDSEc4Qik6IERpdHRvLgoJKFRBUkdFVF9YQUREKTogRGl0dG8uCgkoVEFSR0VUX0JTV0FQKTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl90dW5lX21hc2spOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGl4ODZfYXJjaF9tYXNrKTogRGl0dG8uCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEluaXRpYWxpemUgaXg4Nl90dW5lX21hc2sgYW5kCglpeDg2X2FyY2hfbWFzay4gVXNlIEFSQ0hNQVNLIHRvIGNsZWFyIE1BU0tfTk9fRkFOQ1lfTUFUSF8zODcgaW4KCXRhcmdldF9mbGFncy4KCjIwMDctMDMtMDIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCVBSIDMwOTkyCgkqIGNvbmZpZy9kZnAtYml0LmMgKERGUF9UT19JTlQpOiBJbml0aWFsaXNlIHF2YWwgd2l0aCAiMS4iLgoKMjAwNy0wMy0wMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0YXJnZXQuaCAoaW5pdF9kd2FyZl9yZWdfc2l6ZXNfZXh0cmEpOiBOZXcgdGFyZ2V0IGhvb2suCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0lOSVRfRFdBUkZfUkVHX1NJWkVTX0VYVFJBKTogTmV3IGRlZmF1bHQuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfSU5JVF9EV0FSRl9SRUdfU0laRVNfRVhUUkEpOiBEb2N1bWVudC4KCSogZHdhcmYyb3V0LmMgKGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzKTogQ2FsbCB0aGlzCglob29rLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfSU5JVF9EV0FSRl9SRUdfU0laRVNfRVhUUkEsCglyczYwMDBfaW5pdF9kd2FyZl9yZWdfc2l6ZXNfZXh0cmEpOiBOZXcuCgkqIGNvbmZpZy9yczYwMDAvbGludXgtdW53aW5kLmggKHBwY19mYWxsYmFja19mcmFtZV9zdGF0ZSk6IFN1cHBvcnQKCVNQRSByZWdpc3RlciBoaWdoIHBhcnRzLgoKMjAwNy0wMy0wMSAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIGluc3RhbGwtcGRmIHRhcmdldCBhcwoJY29waWVkIGZyb20gYXV0b21ha2UgdjEuMTAgcnVsZXMuCgkqIGNvbmZpZ3VyZS5hYzogQWRkIGluc3RhbGwtcGRmIHRvIHRhcmdldCBsaXN0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA3LTAzLTAxICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2xlZ2l0aW1hdGVfaW5kZXhfcCk6IExpbWl0IGlXTU1YdCBhZGRyZXNzaW5nCgltb2RlcyB0byBMRFJEIGZvciBESW1vZGUuCgkob3V0cHV0X21vdmVfZG91YmxlKTogRml4dXAgb3V0IG9mIHJhbmdlIGxkcmQvc3RyZC4KCSh2ZnBfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IFJlbmFtZS4uLgoJKGNvcHJvY19zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogLi4uIHRvIHRoaXMuICBBZGQgd2IgYXJndW1lbnQuCgkqIGNvbmZpZy9hcm0vYXJtLmggKFNFQ09OREFSWV9PVVRQVVRfUkVMT0FEX0NMQVNTKTogVXNlCgljb3Byb2Nfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyBmb3IgQ0xBU1NfSVdNTVhULgoJKFNFQ09OREFSWV9JTlBVVF9SRUxPQURfQ0xBU1MpOiBEaXR0by4KCSogYXJtLXByb3Rvcy5oIChjb3Byb2Nfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDA3LTAzLTAxICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jIChkZXRlcm1pbmVfdW5yb2xsX2ZhY3Rvcik6IEJvdW5kIHRoZQoJdW5yb2xsIGZhY3RvciBieSB0aGUgZXN0aW1hdGVkIG51bWJlciBvZiBpdGVyYXRpb25zLgoJKGxvb3BfcHJlZmV0Y2hfYXJyYXlzKTogRG8gbm90IHByZWZldGNoIGluIGxvb3BzIHRoYXQgaXRlcmF0ZSBsZXNzCgl0aGFuIHByZWZldGNoIGxhdGVuY3kuCgoJKiBjb25maWcvaTM4Ni9kcml2ZXItaTM4Ni5jIChkZXNjcmliZV9jYWNoZSwgZGV0ZWN0X2NhY2hlc19hbWQsCglkZWNvZGVfY2FjaGVzX2ludGVsLCBkZXRlY3RfY2FjaGVzX2ludGVsKTogTmV3IGZ1bmN0aW9ucy4KCShob3N0X2RldGVjdF9sb2NhbF9jcHUpOiBVc2UgZGV0ZWN0X2NhY2hlc19hbWQgYW5kCglkZXRlY3RfY2FjaGVzX2ludGVsLgoKMjAwNy0wMy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZW1pdF9tb3ZlX2NvbXBsZXhfcHVzaCk6IEV4cG9ydC4KCShlbWl0X21vdmVfY29tcGxleF9wYXJ0cyk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGVtaXRfbW92ZV9jb21wbGV4KTogLi4uIGhlcmUuCgkqIGV4cHIuaCAoZW1pdF9tb3ZlX2NvbXBsZXhfcHVzaCwgZW1pdF9tb3ZlX2NvbXBsZXhfcGFydHMpOiBEZWNsYXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtb3ZjZGkpOiBOZXcuCgoyMDA3LTAzLTAxICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X21vZGVzX3RpZWFibGVfcCk6IEZpeCB0eXBvLCB1c2UgYWxzbwoJc2l6ZSBvZiBtb2RlMSB0byBjaGVjayBmb3IgdGllYWJsZSBtb2RlcyBpbiBNTVggY2FzZS4KCjIwMDctMDMtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJ0bGFuYWwubyk6IERlcGVuZCBvbiB0cmVlLmguCgkqIHJ0bC5oIChvZmZzZXRfd2l0aGluX3NlY3Rpb25fcCwgc3BsaXRfY29uc3QpOiBEZWNsYXJlLgoJKiBydGxhbmFsLmM6IEluY2x1ZGUgdHJlZS5oLgoJKG9mZnNldF93aXRoaW5fYmxvY2tfcCk6IE5ldyBmdW5jdGlvbiwgdGFrZW4gZnJvbQoJbWlwc19vZmZzZXRfd2l0aGluX29iamVjdF9wLgoJKHNwbGl0X2NvbnN0KTogTmV3IGZ1bmN0aW9uLCB0YWtlbiBmcm9tIG1pcHNfc3BsaXRfY29uc3QuCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmggKG02OGtfaWxsZWdpdGltYXRlX3N5bWJvbGljX2NvbnN0YW50X3ApOgoJRGVjbGFyZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChNNjhLX09GRlNFVFNfTVVTVF9CRV9XSVRISU5fU0VDVElPTlNfUCk6IERlZmluZS4KCShDT05TVEFOVF9BRERSRVNTX1ApOiBPbmx5IGFjY2VwdCBsZWdpdGltYXRlIGNvbnN0YW50cy4KCShMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBDaGVjayBtNjhrX2lsbGVnaXRpbWF0ZV9zeW1ib2xpY19jb25zdGFudF9wLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKFRBUkdFVF9DQU5OT1RfRk9SQ0VfQ09OU1RfTUVNKTogRGVmaW5lLgoJKG02OGtfaWxsZWdpdGltYXRlX3N5bWJvbGljX2NvbnN0YW50X3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKG1vdnNpKTogUmVtb3ZlIG1pc2xlYWRpbmcgcHJlZGljYXRlcy4KCUlmIE02OEtfT0ZGU0VUU19NVVNUX0JFX1dJVEhJTl9TRUNUSU9OU19QIGFuZCB0aGUgc291cmNlIGlzIGEKCXN5bWJvbGljIGNvbnN0YW50IHRoYXQgbWlnaHQgYmUgb3V0c2lkZSB0aGUgc3ltYm9sJ3Mgc2VjdGlvbiwKCW1vdmUgdGhlIHN5bWJvbCBmaXJzdCBhbmQgdGhlbiBhZGQgdGhlIG9mZnNldC4KCSogY29uZmlnL202OGsvdWNsaW51eC5oIChNNjhLX09GRlNFVFNfTVVTVF9CRV9XSVRISU5fU0VDVElPTlNfUCk6CglPdmVycmlkZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NwbGl0X2NvbnN0KTogRGVsZXRlLgoJKG1pcHNfb2Zmc2V0X3dpdGhpbl9vYmplY3RfcCk6IERlbGV0ZS4KCShtaXBzX3N5bWJvbGljX2NvbnN0YW50X3ApOiBVc2Ugb2Zmc2V0X3dpdGhpbl9zZWN0aW9uX3AgYW5kCglzcGxpdF9jb25zdCBpbnN0ZWFkIG9mIG1pcHNfb2Zmc2V0X3dpdGhpbl9vYmplY3RfcCBhbmQKCW1pcHNfc3BsaXRfY29uc3QuCgkobWlwc19jYW5ub3RfZm9yY2VfY29uc3RfbWVtLCBtaXBzX2NvbnN0X2luc25zLCBtaXBzX3Vuc3BlY19hZGRyZXNzKQoJKG1pcHNfbGVnaXRpbWl6ZV9jb25zdF9tb3ZlLCBwcmludF9vcGVyYW5kX3JlbG9jKQoJKG1pcHNfZGFuZ2Vyb3VzX2Zvcl9sYTI1X3ApOiBVc2Ugc3BsaXRfY29uc3QgaW5zdGVhZCBvZgoJbWlwc19zcGxpdF9jb25zdC4KCjIwMDctMDItMjggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1pbmNsdWRlLWRpcik6IERvbid0IHJtIC1yZiBpbmNsdWRlLgoKMjAwNy0wMi0yOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzAzNjQKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IERvIG5vdCBhc3NvY2lhdGUgZXhwcmVzc2lvbnMKCXdpdGggbW9yZSB0aGFuIG9uZSB2YXJpYWJsZSBmb3IgaW50ZWdlciB0eXBlcyB0aGF0IGRvIG5vdCB3cmFwLgoKMjAwNy0wMi0yOCAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2NhbGxfbGlzdCwgZm9sZF9idWlsdGluX2NhbGxfdmFsaXN0KToKCURlbGV0ZSwgYW5kIHJlcGxhY2Ugd2l0aC4uLgoJKGZvbGRfYnVpbHRpbl9jYWxsX2FycmF5KTogVGhpcy4gIFVwZGF0ZSBjYWxsZXJzIHRvIHVzZSBpdC4KCSogZm9sZC1jb25zdC5jIChmb2xkX2J1aWxkX2NhbGxfbGlzdCk6IERlbGV0ZSwgYW5kIHJlcGxhY2Ugd2l0aC4uLgoJKGZvbGRfYnVpbGRfY2FsbF9hcnJheSk6IFRoaXMuCgkoZm9sZF9idWlsZF9jYWxsX2xpc3RfaW5pdGlhbGl6ZXIpOiBEZWxldGUsIGFuZCByZXBsYWNlIHdpdGguLi4KCShmb2xkX2J1aWxkX2NhbGxfYXJyYXlfaW5pdGlhbGl6ZXIpOiBUaGlzLgoJKiB0cmVlLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMgdG8gcmVmbGVjdCBhYm92ZSBjaGFuZ2VzLgoKCSogYy10eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IFN0b3JlIGNvbnZlcnRlZCBhcmd1bWVudHMKCWluIGEgc3RhY2stYWxsb2NhdGVkIGFycmF5IGluc3RlYWQgb2YgYnVpbGRpbmcgYSBsaXN0LgoJKGNvbnZlcnRfYXJndW1lbnRzKTogU3RvcmUgYXJndW1lbnRzIGluIHRoZSBhcnJheSBwYXNzZWQgaW4gYXMgYW4KCWFyZ3VtZW50LCBhbmQgcmV0dXJuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFyZ3VtZW50cy4KCSogYy1mb3JtYXQuYzogKGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCk6IFBhc3MgYXJndW1lbnRzIGluIGFuCglhcnJheSBpbnN0ZWFkIG9mIGEgbGlzdC4KCSogYy1jb21tb24uYyAoY2hlY2tfZnVuY3Rpb25fbm9ubnVsbCk6IExpa2V3aXNlLgoJKGNoZWNrX2Z1bmN0aW9uX3NlbnRpbmVsKTogTGlrZXdpc2UuCgkoY2hlY2tfZnVuY3Rpb25fYXJndW1lbnRzKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMgdG8gcmVmbGVjdCBhYm92ZSBjaGFuZ2VzLgoKMjAwNy0wMi0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcHJlZGljdC5kZWYgKFBSRURfVFJFRV9FQVJMWV9SRVRVUk4sIFBSRURfQ09OU1RfUkVUVVJOLAoJUFJFRF9ORUdBVElWRV9SRVRVUk4pOiBVcGRhdGUgb3V0Y29tZXMuCgoyMDA3LTAyLTI4ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEhhbmRsZSBwYXJ0aWFsIHJlZ2lzdGVycwoJY29ycmVjdGx5IHdoZW4gYnVpbGRpbmcgdXAgQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFLgoKMjAwNy0wMi0yNyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhL3ByZWRpY2F0ZXMubWQgKG1vdmVfc3JjX29wZXJhbmQpOiBBbGxvdyB6ZXJvIGZvciBtb2RlLgoJKiBwYS9wYS5tZDogRml4IGNvbnN0cmFpbnRzIGZvciB6ZXJvIENPTlNUX0RPVUJMRSBpbiA2NC1iaXQgREZtb2RlCgltb3ZlIHBhdHRlcm4uCgoyMDA3LTAyLTI3ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIHRhcmdldC8zMDk3MAoJKiBjb25maWcvaTM4Ni9zc2UubWQgKCptb3Y8bW9kZT5faW50ZXJuYWwsICptb3Z2NHNmX2ludGVybmFsLAoJKm1vdnYyZGZfaW50ZXJuYWwpOiBFbmFibGUgcGF0dGVybiBvbmx5IGZvciB2YWxpZCBvcGVyYW5kCgljb21iaW5hdGlvbnMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9tb2Rlc190aWVhYmxlX3ApOiBGb3IgU1NFIHJlZ2lzdGVycywKCXRpZSBvbmx5IDEyOGJpdCBtb2Rlcy4gRm9yIE1NWCByZWdpc3RlcnMsIHRpZSBvbmx5IDY0Yml0IG1vZGVzLgoKMjAwNy0wMi0yNyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLWNydDMuYzogQXZvaWQgY29tcGlsYXRpb24gd2hlbiBjb21waWxpbmcgZm9yIGEKCWtleHQgbXVsdGlsaWIuCgoyMDA3LTAyLTI3ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChQUkVQUk9DRVNTT1JfREVGSU5FUywgdGVzdC1wcm90b2l6ZS1zaW1wbGUpOiBEZWZpbmUKCUZJWEVEX0lOQ0xVREVfRElSLgoJKHN0bXAtaW50LWhkcnMsIHN0bXAtZml4aW5jLCBpbnN0YWxsLWhlYWRlcnMpOiBVc2UgaW5jbHVkZS1maXhlZAoJZm9yIGZpeGVkIGhlYWRlcnMgYW5kIGxpbWl0cy5oLgoJKGluc3RhbGwtaW5jbHVkZS1kaXIsIGluc3RhbGwtaGVhZGVycy10YXIsIGluc3RhbGwtaGVhZGVycy1jcGlvLAoJaW5zdGFsbC1oZWFkZXJzLWNwLCByZWFsLWluc3RhbGwtaGVhZGVycy10YXIsCglyZWFsLWluc3RhbGwtaGVhZGVycy1jcGlvLCByZWFsLWluc3RhbGwtaGVhZGVycy1jcCk6IEhhbmRsZQoJaW5jbHVkZS1maXhlZCBhcyB3ZWxsIGFzIGluY2x1ZGUuCgkoaW5zdGFsbC1ta2hlYWRlcnMpOiBEb24ndCBpbnN0YWxsIGZpbGVzIHRoYXQgZ28gb25seSBpbiBpbmNsdWRlCglub3QgaW5jbHVkZS1maXhlZC4KCSogY3BwZGVmYXVsdC5jIChjcHBfaW5jbHVkZV9kZWZhdWx0cyk6IFNlcGFyYXRlIEZJWEVEX0lOQ0xVREVfRElSCglmcm9tIEdDQ19JTkNMVURFX0RJUi4KCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IFJlbW92ZSBzcGVjaWFsIC1Cc3RhZ2VOLyBoYW5kbGluZy4KCShkb19zcGVjXzEpOiBBZGQgaW5jbHVkZS1maXhlZCBkaXJlY3Rvcmllcy4KCjIwMDctMDItMjcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi90LWJmaW4tZWxmIChMSUIxQVNNRlVOQ1MpOiBBZGQgX3VtdWxzaTNfaGlnaHBhcnQgYW5kCglfc211bHNpM19oaWdocGFydC4KCSogY29uZmlnL2JmaW4vbGliMWZ1bmNzLmFzbSAoX19fdW11bHNpM19oaWdocGFydCwgX19fc211bHNpM19oaWdocGFydCk6CglOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChzbXVsc2kzX2hpZ2hwYXJ0LCB1bXVsc2kzX2hpZ2hwYXJ0KTogTmV3CglwYXR0ZXJucy4KCjIwMDctMDItMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChnZXRfcHJpb3JpdHkpOiBBZGQgY2hlY2sgZm9yCglTVVBQT1JUU19JTklUX1BSSU9SSVRZLgoKMjAwNy0wMi0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKGRvbG9vcF9lbmQpOiBGQUlMIGlmIGNvdW50ZXIgcmVnIGlzbid0IFNJbW9kZS4KCgkqIGNvbmZpZy9iZmluL2JmaW4uYzogSW5jbHVkZSAiY2ZnbGF5b3V0LmgiLgoJKE1BWF9MU0VUVVBfRElTVEFOQ0UpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxvb3BfaW5mbyk6IE5ldyBtZW1iZXJzIGluY29taW5nLCBpbmNvbWluZ19zcmMgYW5kCglpbmNvbWluZ19kZXN0LiAgRGVsZXRlIG1lbWJlciBwcmVkZWNlc3Nvci4KCShsZW5ndGhfZm9yX2xvb3ApOiBOZXcgZnVuY3Rpb24uCgkoYmZpbl9vcHRpbWl6ZV9sb29wKTogSGFuZGxlIG1vcmUgZGlmZmVyZW50IGxvb3Agc3RydWN0dXJlcy4KCShiZmluX2Rpc2NvdmVyX2xvb3ApOiBSZXdvcmsgZGV0ZWN0aW9uIG9mIHByZWRlY2Vzc29yIGJsb2NrcyBieQoJZXhhbWluaW5nIGluY29taW5nIGVkZ2VzLgoJKGJmaW5fZGlzY292ZXJfbG9vcHMsIGJmaW5fZnJlZV9sb29wcyk6IE5ldyBmdW5jdGlvbnMsIGJyb2tlbiBvdXQgb2YKCWJmaW5fcmVvcmdfbG9vcHMuCgkoYmZpbl9yZW9yZGVyX2xvb3BzKTogTmV3IGZ1bmN0aW9uLgoJKGJmaW5fcmVvcmdfbG9vcHMpOiBVc2UgdGhlc2UgdGhyZWUgbmV3IGZ1bmN0aW9ucy4KCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoZW51bSByZWdfY2xhc3MsIFJFR19DTEFTU19OQU1FUywKCVJFR19DTEFTU19DT05URU5UUyk6IEFkZCBEMFJFR1MgdGhyb3VnaCBEN1JFR1MuCgkoQ09OU1RSQUlOVF9MRU4pOiBBZGQgZW50cnkgZm9yICdxJy4KCShSRUdfQ0xBU1NfRlJPTV9DT05TVFJBSU5UKTogUmVuYW1lZCBmcm9tIFJFR19DTEFTU19GUk9NX0xFVFRFUi4KCUFkZCAncScgY29uc3RyYWludHMuCgkoUkVHTk9fUkVHX0NMQVNTKTogRm9yIFIwIHRocm91Z2ggUjcsIHJldHVybiBjb3JyZXNwb25kaW5nIHJlZ2NsYXNzLgoJKENMQVNTX0xJS0VMWV9TUElMTEVEX1ApOiBUcnVlIGZvciBSMCwgUjEgYW5kIFIyLgoKCSogY29uZmlnL2JmaW4vYmZpbi5tZCAoYWRkX3dpdGhfY2FycnkpOiBOZXcgcGF0dGVybi4KCShzX29yX3UsIHN1X29wdGFiLCBzdV9tb2RpZmllcik6IE5ldyBjb2RlIG1hY3Jvcy9hdHRycy4KCSg8c3Vfb3B0YWI+aGlzaV9sbCwgPHN1X29wdGFiPmhpc2lfbGgsIDxzdV9vcHRhYj5oaXNpX2hsLAoJPHN1X29wdGFiPmhpc2lfaGgpOiBSZW5hbWVkIGZyb20gbXVsaGlzaV94eCBwYXR0ZXJuczsgbWFjcm9pemVkIHRvCglzdXBwb3J0IHVuc2lnbmVkIG11bHRpcGxpZXMgdG9vLiAgUmVtb3ZlZCBpbmNvcnJlY3QgY29tbXV0YXRpdml0eSBmcm9tCglvcGVyYW5kIDEgY29uc3RyYWludCB3aGVyZSBhcHByb3ByaWF0ZS4KCSh1c211bGhpc2lfdWxsLCB1c211bGhpc2lfdWxoLCB1c211bGhpc2lfdWhsLCB1c211bGhpc2lfdWhoKTogTmV3CglwYXR0ZXJucy4KCSg8c3Vfb3B0YWI+aGlzaV9sbF9saCwgPHN1X29wdGFiPmhpc2lfbGxfaGwsIDxzdV9vcHRhYj5oaXNpX2xsX2hoLAoJPHN1X29wdGFiPmhpc2lfbGhfaGwsIDxzdV9vcHRhYj5oaXNpX2xoX2hoLCA8c3Vfb3B0YWI+aGlzaV9obF9oaCk6CglOZXcgcGF0dGVybnMuCgkodXNtdWxoaXNpX2xsX2x1bCwgdXNtdWxoaXNpX2xsX2x1aCwgdXNtdWxoaXNpX2xsX2h1bCwKCXVzbXVsaGlzaV9sbF9odWgsIHVzbXVsaGlzaV9saF9sdWwsIHVzbXVsaGlzaV9saF9sdWgsIHVzbXVsaGlzaV9saF9odWwsCgl1c211bGhpc2lfbGhfaHVoLCB1c211bGhpc2lfaGxfbHVsLCB1c211bGhpc2lfaGxfbHVoLCB1c211bGhpc2lfaGxfaHVsLAoJdXNtdWxoaXNpX2hsX2h1aCwgdXNtdWxoaXNpX2hoX2x1bCwgdXNtdWxoaXNpX2hoX2x1aCwgdXNtdWxoaXNpX2hoX2h1bCwKCXVzbXVsaGlzaV9oaF9odWgpOiBOZXcgcGF0dGVybnMuCgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChzc2FzaGlmdHYyaGkzLCBzc2FzaGlmdGhpMywgbHNoaWZ0djJoaTMsCglsc2hpZnRoaTMpOiBGaXggb3V0cHV0IHRlbXBsYXRlIHRvIHVzZSBoYWxmIHJlZyBmb3Igb3BlcmFuZCAyLgoKCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX291dHB1dF9taV90aHVuayk6IFVzZSBSMyBhcyBzY3JhdGNoIHJlZwoJaW5zdGVhZCBvZiBSMi4KCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKHJvdGwxNiwgcm90bHNpMywgcm90cnNpMyk6IE5ldyBwYXR0ZXJucy4KCjIwMDctMDItMjcgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoVEVYSV9HQ0NJTlNUQUxMX0ZJTEVTKTogQWRkIGdjYy1jb21tb24udGV4aS4KCjIwMDctMDItMjcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHByZWRpY3QuYyAobGFzdF9iYXNpY19ibG9ja19wKTogUmVtb3ZlLgoJKHRyZWVfZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBVcGRhdGUgcmV0dXJuIGhldXJpc3RpYyBmb3IgY29tbW9uaXplZAoJcmV0dXJuIGJsb2Nrcy4KCjIwMDctMDItMjYgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKFRFWElfR0NDSU5TVEFMTF9GSUxFUyk6IEFkZCBnY2MtdmVycy50ZXhpIGRlcGVuZGVuY3kuCgoyMDA3LTAyLTI2ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbmNsdWRlL2djYy1jb21tb24udGV4aSAodmVyc2lvbnN1YnRpdGxlKTogTmV3IG1hY3JvLgoJKiBkb2MvY3BwLnRleGk6IFN0YW5kYXJkaXplIHRpdGxlIHBhZ2UuCgkqIGRvYy9jcHBpbnRlcm5hbHMudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9nY2MudGV4aTogU3RhbmRhcmRpemUgdGl0bGUgcGFnZSwgcmVtb3ZlIHZlcnNpb24gbnVtYmVyCglmcm9tIGNvcHlyaWdodCBwYWdlLgoJKiBkb2MvZ2NjaW50LnRleGk6IExpa2V3aXNlLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBTdGFuZGFyZGl6ZSB0aXRsZSBwYWdlLCBhZGQgdGFibGUgb2YKCWNvbnRlbnRzLgoKMjAwNy0wMi0yNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcHJlZGljdC5kZWY6IFNldCBvdXRjb21lcyBhY2NvcmRpbmcgdG8gbW9yZSByZWNlbnQgcmVzdWx0cy4KCShQUkVEX0xPT1BfQ09ORElUSU9OLCBQUkVEX0xPT1BfUFJFQ09ORElUSU9OSU5HLCBQUkVEX0xPT1BfSEVBREVSKToKCVJlbW92ZSBkZWFkIHByZWRpY3RvcnMuCgkqIHByZWRpY3QuYyAocmV0dXJuX3ByZWRpY3Rpb24pOiBGaXggcGFzdG8uCgoyMDA3LTAyLTI3ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogbG9vcC1pdi5jIChzaW1wbGlmeV91c2luZ19pbml0aWFsX3ZhbHVlcyk6IEZpeCBvdmVyc2lnaHQgaW4gcHJldmlvdXMKCWNoYW5nZTsgYXZvaWQgYSBtZW1vcnkgbGVhayB3aGVuIHJldHVybmluZyBlYXJseS4KCjIwMDctMDItMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoc3RhdGljX2N0b3JzKTogTW92ZSB0byBjLWNvbW1vbi5jLgoJKHN0YXRpY19kdG9ycyk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IFVzZSBjX3JlY29yZF9jZHRvcl9mbi4KCShidWlsZF9jZHRvcik6IE1vdmUgdG8gYy1jb21tb24uYy4KCShjX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBVc2UgY19idWlsZF9jZHRvcl9mbnMuCgkqIGMtY29tbW9uLmggKHN0YXRpY19jdG9ycyk6IERlY2xhcmUuCgkoc3RhdGljX2R0b3JzKTogTGlrZXdpc2UuCgkoY19yZWNvcmRfY2R0b3JfZm4pOiBMaWtld2lzZS4KCShjX2J1aWxkX2NkdG9yX2Zucyk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChzdGF0aWNfY3RvcnMpOiBOZXcgdmFyaWFibGUuCgkoc3RhdGljX2R0b3JzKTogTGlrZXdpc2UuCgkoY19yZWNvcmRfY2R0b3JfZm4pOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfY2R0b3IpOiBNb3ZlIGZyb20gYy1kZWNsLmMKCShjX2J1aWxkX2NkdG9yX2Zucyk6IE5ldyBmdW5jdGlvbi4KCgkqIG91dHB1dC5oIChhc3NlbWJsZV9hZGRyX3RvX3NlY3Rpb24pOiBEZWNsYXJlLgoJKGdldF9jZHRvcl9wcmlvcml0eV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV9hZGRyX3RvX3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2NkdG9yX3ByaW9yaXR5X3NlY3Rpb24pOiBMaWtld2lzZS4KCShkZWZhdWx0X25hbWVkX3NlY3Rpb25fYXNtX291dF9kZXN0cnVjdG9yKTogVXNlIHRoZW0uCgkoZGVzdG9yX2R0b3Jfc2VjdGlvbl9hc21fb3V0X2Rlc3RydWN0b3IpOiBMaWtld2lzZS4KCShkZWZhdWx0X25hbWVkX3NlY3Rpb25fYXNtX291dF9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKGRlZmF1bHRfY3Rvcl9zZWN0aW9uX2FzbV9vdXRfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogY29uZmlnLmdjYyAoKi0qLXZ4d29ya3MqKTogSW5jbHVkZSB2eHdvcmtzLm8uCgkqIGNvbmZpZy90LXZ4d29ya3MgKHZ4d29ya3Mubyk6IE5ldyB0YXJnZXQuCgkqIGNvbmZpZy92eHdvcmtzLmggKEFMV0FZU19OVU1CRVJfQ1RPUlNfU0VDVElPTlMpOiBSZW1vdmUuCgkoVEFSR0VUX0FTTV9DT05TVFJVQ1RPUik6IERlZmluZS4KCShUQVJHRVRfQVNNX0RFU1RSVUNUT1IpOiBMaWtld2lzZS4KCSh2eHdvcmtzX2FzbV9vdXRfY29uc3RydWN0b3IpOiBEZWNsYXJlLgoJKHZ4d29ya3NfYXNtX291dF9kZXN0cnVjdG9yKTogTGlrZXdpc2UuCgoJKiBjLWNvbW1vbi5jIChnZXRfcHJpb3JpdHkpOiBDaGVjayB0aGF0IHdlIGhhdmUgbm90IGp1c3QgYW4KCUlOVEVHRVJfQ1NULCBidXQgYW4gaW50ZWdlciBjb25zdGFudCB3aXRoIGludGVnZXJhbCB0eXBlLgoKMjAwNy0wMi0yNSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDkzOAoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV9jYWxsKTogRml4IG9mZi1ieS1vbmUgZXJyb3I6Cgl1c2UgJmR0W25hcmdzLTFdIGluc3RlYWQgb2YgJmR0W25hcmdzXSBpbiB0aGUgY2FsbCB0bwoJdmVjdF9pc19zaW1wbGVfdXNlKCkuCgoyMDA3LTAyLTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3NfMSk6IEhhbmRsZSBQTFVTIGV4cHJlc3Npb25zIHJlc3VsdGluZwoJZnJvbSByZWdpc3RlciBlbGltaW5hdGlvbiBhcyBQUkVfTU9ESUZZIC8gUE9TVF9NT0RJRlkgaW5jcmVtZW50cy4KCURvIG5vdCBhdHRlbXB0IHRvIGhhbmRsZSBNRU0gaW5zaWRlIGF1dG8taW5jIGV4cHJlc3Npb25zLgoJKiByZWxvYWQxLmMgKGVsaW1pbmF0ZV9yZWdzXzEpOiBEbyBub3QgYXR0ZW1wdCB0byBoYW5kbGUgZWxpbWluYXRpb24KCW9mIGEgcmVnaXN0ZXIgbW9kaWZpZWQgYnkgYW4gYXV0by1pbmMgZXhwcmVzc2lvbi4gIEhvd2V2ZXIsIGRvIGhhbmRsZQoJZWxpbWluYXRpb24gb2YgYSByZWdpc3RlciB1c2VkIGFzIFBSRV9NT0RJRlkgLyBQT1NUX01PRElGWSBpbmNyZW1lbnQuCgkoZWxpbWluYXRpb25fZWZmZWN0cyk6IFByb2hpYml0IGVsaW1pbmF0aW9uIG9mIGEgcmVnaXN0ZXIgbW9kaWZpZWQKCWJ5IGFuIGF1dG8taW5jIGV4cHJlc3Npb24uICBEaXNhYmxlIHJlZ2lzdGVyIGVsaW1pbmF0aW9uIHJ1bGVzIHdob3NlCgl0YXJnZXQgcmVnaXN0ZXIgaXMgbW9kaWZpZWQgYnkgYW4gYXV0by1pbmMgZXhwcmVzc2lvbiB3aXRoIHZhcmlhYmxlCglpbmNyZW1lbnQuCgoyMDA3LTAyLTI1ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChjb21wdXRlX2VzdGltYXRlZF9uYl9pdGVyYXRpb25zKTogRml4CglvZmYtYnktb25lIGVycm9yLgoJKGFycmF5X2F0X3N0cnVjdF9lbmRfcCk6IE5ldyBmdW5jdGlvbi4KCShpZHhfaW5mZXJfbG9vcF9ib3VuZHMpOiBVc2UgaXQuCgkoZXN0aW1hdGVfbnVtYmVyc19vZl9pdGVyYXRpb25zX2xvb3ApOiBFeHBvcnQuCgkqIHByZWRpY3QuYyAocHJlZGljdF9sb29wcyk6IFVzZSBlc3RpbWF0ZWRfbG9vcF9pdGVyYXRpb25zX2ludC4KCURvIG5vdCB1c2UgUFJFRF9MT09QX0VYSVQgb24gZXhpdHMgcHJlZGljdGVkIGJ5ICMgb2YgaXRlcmF0aW9ucy4KCSh0cmVlX2VzdGltYXRlX3Byb2JhYmlsaXR5KTogQ2FsbCByZWNvcmRfbG9vcF9leGl0cy4KCSogdHJlZS1kYXRhLXJlZi5jIChnZXRfbnVtYmVyX29mX2l0ZXJzX2Zvcl9sb29wKTogUmVwbGFjZWQgYnkgLi4uCgkoZXN0aW1hdGVkX2xvb3BfaXRlcmF0aW9ucywgZXN0aW1hdGVkX2xvb3BfaXRlcmF0aW9uc19pbnQsCgllc3RpbWF0ZWRfbG9vcF9pdGVyYXRpb25zX3RyZWUpOiBOZXcgZnVuY3Rpb25zLgoJKGFuYWx5emVfc2l2X3N1YnNjcmlwdF9jc3RfYWZmaW5lLAoJY29tcHV0ZV9vdmVybGFwX3N0ZXBzX2Zvcl9hZmZpbmVfMV8yLAoJYW5hbHl6ZV9zdWJzY3JpcHRfYWZmaW5lX2FmZmluZSk6IFVzZSBlc3RpbWF0ZWRfbG9vcF9pdGVyYXRpb25zX2ludC4KCShhbmFseXplX21pdl9zdWJzY3JpcHQpOiBVc2UgZXN0aW1hdGVkX2xvb3BfaXRlcmF0aW9uc190cmVlLgoJKiBwcmVkaWN0LmRlZiAoUFJFRF9MT09QX0lURVJBVElPTlMpOiBVcGRhdGUgY29tbWVudC4KCShQUkVEX0xPT1BfSVRFUkFUSU9OU19HVUVTU0VEKTogTmV3LgoJKiBjZmdsb29wLmMgKHJlY29yZF9sb29wX2V4aXRzKTogRG8gbm90aGluZyBpZiB0aGVyZSBhcmUgbm8gbG9vcHMuCgkqIGNmZ2xvb3AuaCAoZXN0aW1hdGVfbnVtYmVyc19vZl9pdGVyYXRpb25zX2xvb3AsCgllc3RpbWF0ZWRfbG9vcF9pdGVyYXRpb25zX2ludCk6IERlY2xhcmUuCgoyMDA3LTAyLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBvcHRpb25hbCBwcmlvcml0eSBhcmd1bWVudCB0bwoJY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycy4KCSogdHJlZS5jIChpbml0X3ByaW9yaXR5X2Zvcl9kZWNsKTogQWRqdXN0IEdUWSBtYXJrZXJzLgoJKGluaXRfdHRyZWUpOiBVc2UgcHJpb3JpdHktaW5mbyBoYXNoIGZ1bmN0aW9ucyBmb3IKCWluaXRfcHJpb3JpdHlfZm9yX2RlY2wuCgkodHJlZV9tYXBfZXEpOiBSZW5hbWUgdG8gLi4uCgkodHJlZV9tYXBfYmFzZV9lcSk6IC4uLiB0aGlzLgoJKHRyZWVfbWFwX21hcmtlZF9wKTogUmVuYW1lIHRvIC4uLgoJKHRyZWVfbWFwX2Jhc2VfbWFya2VkX3ApOiAuLi4gdGhpcy4KCSh0cmVlX21hcF9iYXNlX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoZGVjbF9pbml0X3ByaW9yaXR5X2xvb2t1cCk6IFJld29yay4KCShkZWNsX2ZpbmlfcHJpb3JpdHlfbG9va3VwKTogTmV3IGZ1bmN0aW9uLgoJKGRlY2xfcHJpb3JpdHlfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShkZWNsX2luaXRfcHJpb3JpdHlfaW5zZXJ0KTogVXNlIGl0LgoJKGRlY2xfZmluaV9wcmlvcml0eV9pbnNlcnQpOiBMaWtld2lzZS4KCShkZWNsX3Jlc3RyaWN0X2Jhc2VfbG9va3VwKTogQWRqdXN0IGZvciByZWZhY3RvcmluZyBvZiB0cmVlX21hcAoJaGllcmFyY2h5LgoJKGRlY2xfcmVzdHJpY3RfYmFzZV9pbnNlcnQpOiBMaWtld2lzZS4KCShkZWNsX2RlYnVnX2V4cHJfaW5zZXJ0KTogTGlrZXdpc2UuCgkoZGVjbF92YWx1ZV9leHByX2xvb2t1cCk6IExpa2V3aXNlLgoJKGRlY2xfdmFsdWVfZXhwcl9pbnNlcnQpOiBMaWtld2lzZS4KCSogdHJlZS5oIChwcmlvcml0eV90eXBlKTogTmV3IHR5cGUuCgkoZGVjbF9pbml0X3ByaW9yaXR5X2xvb2t1cCk6IFVzZSBwcmlvcml0eV90eXBlLgoJKGRlY2xfZmluaV9wcmlvcml0eV9sb29rdXApOiBOZXcgZnVuY3Rpb24uCgkoZGVjbF9pbml0X3ByaW9yaXR5X2luc2VydCk6IFVzZSBwcmlvcml0eV90eXBlLgoJKGRlY2xfZmluaV9wcmlvcml0eV9pbnNlcnQpOiBOZXcgZnVuY3Rpb24uCgkoREVDTF9IQVNfSU5JVF9QUklPUklUWSk6IFR3ZWFrIGNvbW1lbnRzLgoJKERFQ0xfSU5JVF9QUklPUklUWSk6IExpa2V3aXNlLgoJKFNFVF9ERUNMX0lOSVRfUFJJT1JJVFkpOiBBZGQgY29tbWVudC4KCShERUNMX0ZJTklfUFJJT1JJVFkpOiBOZXcgbWFjcm8uCgkoU0VUX0RFQ0xfRklOSV9QUklPUklUWSk6IExpa2V3aXNlLgoJKERFRkFVTFRfSU5JVF9QUklPUklUWSk6IERvY3VtZW50LgoJKE1BWF9JTklUX1BSSU9SSVRZKTogTGlrZXdpc2UuCgkoTUFYX1JFU0VSVkVEX0lOSVRfUFJJT1JJVFkpOiBMaWtld2lzZS4KCSh0cmVlX21hcF9iYXNlKTogTmV3IHR5cGUuCgkodHJlZV9tYXBfYmFzZV9lcSk6IE5ldyBmdW5jdGlvbi4KCSh0cmVlX21hcF9iYXNlX2hhc2gpOiBMaWtld2lzZS4KCSh0cmVlX21hcF9iYXNlX21hcmtlZF9wKTogTGlrZXdpc2UuCgkodHJlZV9tYXApOiBJbmhlcml0IGZyb20gdHJlZV9tYXBfYmFzZS4KCSh0cmVlX21hcF9lcSk6IE1ha2UgaXQgYSBtYWNyby4KCSh0cmVlX21hcF9tYXJrZWRfcCk6IExpa2V3aXNlLgoJKHRyZWVfaW50X21hcCk6IEluaGVyaXQgZnJvbSB0cmVlX21hcF9iYXNlLgoJKHRyZWVfaW50X21hcF9lcSk6IE1ha2UgaXQgYSBtYWNyby4KCSh0cmVlX2ludF9tYXBfaGFzaCk6IExpa2V3aXNlLgoJKHRyZWVfaW50X21hcF9tYXJrZWRfcCk6IExpa2V3aXNlLgoJKHRyZWVfcHJpb3JpdHlfbWFwKTogTmV3IHR5cGUuCgkodHJlZV9wcmlvcml0eV9tYXBfZXEpOiBOZXcgbWFjcm8uCgkodHJlZV9wcmlvcml0eV9tYXBfaGFzaCk6IExpa2V3aXNlLgoJKHRyZWVfcHJpb3JpdHlfbWFwX21hcmtlZF9wKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChlbXVsdHNfZGVjbCk6IEFkanVzdCBmb3IgcmVmYWN0b3Jpbmcgb2YgdHJlZV9tYXAKCWhpZXJhcmNoeS4KCShlbXV0bHNfY29tbW9uXzEpOiBMaWtld2lzZS4KCSogbGFtYmRhLWNvZGUuYyAocmVwbGFjZV91c2VzX2VxdWl2X3RvX3hfd2l0aF95KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGhlYXB2YXJfbG9va3VwKTogQWRqdXN0IGZvciByZWZhY3RvcmluZwoJb2YgdHJlZV9tYXAgaGllcmFyY2h5LgoJKiB0cmVlLWNmZy5jIChtb3ZlX3N0bXRfcik6IExpa2V3aXNlLgoJKG5ld19sYWJlbF9tYXBwZXIpOiBMaWtld2lzZS4KCSogYy10cmVlLmggKGNfZXhwYW5kX2JvZHkpOiBNb3ZlIHRvIC4uLgoJKiBjLWNvbW1vbi5oIChjX2V4cGFuZF9ib2R5KTogLi4uIGhlcmUuCgkqIGMtZGVjbC5jIChjX2V4cGFuZF9ib2R5KTogTW92ZSB0byAuLi4KCSogYy1jb21tb24uYyAoY19leHBhbmRfYm9keSk6IC4uLiBoZXJlLgoJKGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZSk6IEFsbG93IDEgYXJndW1lbnQgZm9yIHRoZSBjb25zdHJ1Y3RvcgoJYW5kIGRlc3RydWN0b3IgYXR0cmlidXRlcy4KCShnZXRfcHJpb3JpdHkpOiBOZXcgZnVuY3Rpb24uCgkoaGFuZGxlX2NvbnN0cnVjdG9yX2F0dHJpYnV0ZSk6IFNldCBERUNMX0lOSVRfUFJJT1JJVFkuCgkoaGFuZGxlX2Rlc3RydWN0b3JfYXR0cmlidXRlKTogU2V0IERFQ0xfRklOSV9QUklPUklUWS4KCjIwMDctMDItMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBtaWRkbGUtZW5kLzMwNTA5CgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfYmIpOiBQcm9kdWNlIGV4YWN0IGNvcHkgb2YgRUggaW5mbyB3aGVuCgljb3B5aW5nIGZvciBpbmxpbmluZy4KCjIwMDctMDItMjQgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgkgICAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRhcmdldC8zMDc3OAoJKiBjb2ZuaWcvaTM4Ni9pMzg2LmMgKGNvdW50ZXJfbW9kZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc2V0X29yX21vdm1lbV92aWFfbG9vcCk6IFVzZSBpdC4KCShleHBhbmRfbW92bWVtX2VwaWxvZ3VlKTogTGlrZXdpc2U7IGZpeCBwYXN0by4KCShpeDg2X2V4cGFuZF9tb3ZtZW0pOiBEbyBlbWl0IGd1YXJkIGV2ZW4gZm9yIGNvbnN0YW50IGNvdW50cy4KCShpeDg2X2V4cGFuZF9zZXRtZW0pOiBMaWtld2lzZS4KCjIwMDctMDItMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5oIChBU01fT1VUUFVUX0NBU0VfTEFCRUwpOiBEZWxldGUuCgkoSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OKTogRGVmaW5lLgoKMjAwNy0wMi0yNCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMzA3NzAKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZXhwYW5kX21vdm1lbV9lcGlsb2d1ZSk6IEZpeCB0eXBvLCBtYXNrCgljb3VudCBhcmd1bWVudCB3aXRoIDB4MTAsIG5vdCB3aXRoIDB4MTYuCgkoZXhwYW5kX3NldG1lbV9lcGlsb2d1ZSk6IERpdHRvLgoKMjAwNy0wMi0yNCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9waWNfYWRkcl9jb25zdCk6IFN0dWJpZnkgb3B0aW1pemVkCglzeW1ib2xzLgoKMjAwNy0wMi0yNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzA5NTEKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IEZvbGQgeCArLSBDU1Qgb3AgeCBmb3IKCUVRX0VYUFIgYW5kIE5FX0VYUFIuCgoyMDA3LTAyLTI0ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQgKG11bGRpMyk6IEZvcmNlIHN1YnJlZ3MgdG8gcmVnaXN0ZXJzIGluIDY0LWJpdCBleHBhbmRlci4KCjIwMDctMDItMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6IEhvbm9yCgktZmtlZXAtaW5saW5lLWZ1bmN0aW9ucy4KCjIwMDctMDItMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9tb2RmKTogTmV3LgoJKGZvbGRfYnVpbHRpbl8yKTogVXNlIGl0LgoKMjAwNy0wMi0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGxvb3AtaXYuYyAoaW1wbGllc19wKTogRGV0ZWN0IGFkZGl0aW9uYWwgY2FzZXMgd2hlcmUgQSBpbXBsaWVzIEIuCgkoZGV0ZXJtaW5lX21heF9pdGVyKTogVGFrZSBhZGRpdGlvbmFsIExPT1AgYXJnOyBhbGwgY2FsbGVycyBjaGFuZ2VkLgoJTG9zZSBicm9rZW4gbG9naWMgZGVhbGluZyB3aXRoIFBMVVMuICBUcnkgdG8gbGltaXQgdGhlIHVwcGVyIGJvdW5kIGJ5CglvbmUgdXNpbmcgc2ltcGxpZmljYXRpb25zLgoJKHNpbXBsaWZ5X3VzaW5nX2luaXRpYWxfdmFsdWVzKTogUmV0dXJuIGlmIHRoZSBleHByZXNzaW9uIGJlY29tZXMKCWludmFsaWQgZHVlIHRvIGFsdGVyZWQgcmVncy4KCjIwMDctMDItMjMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZG9jL3RtLmggKEJJR0dFU1RfQUxJR05NRU5UKTogQ2xhcmlmeSB0aGUgcHVycG9zZSBvZiB0aGlzIG1hY3JvLgoKMjAwNy0wMi0yMyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiB0bGluay5jIChzY2FuX2xpbmtlcl9vdXRwdXQpOiBQYXJzZSBsaW5rZXIgbWVzc2FnZXMgZnJvbQoJZGFyd2luOSdzIGxpbmtlciBiZXR0ZXIuCgoyMDA3LTAyLTIzICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBkZWJ1Zy8yOTYxNAoJKiB2YXJwb29sLmMgKHZhcnBvb2xfYXNzZW1ibGVfcGVuZGluZ19kZWNscyk6IFNldAoJdmFycG9vbF9sYXN0X25lZWRlZF9ub2RlIHRvIG51bGwuCgoyMDA3LTAyLTIzICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9kYXRhX2FsaWdubWVudCk6IERvbid0IHNwZWNpZnkgYW4KCWFsaWdubWVudCBiaWdnZXIgdGhhbiB0aGUgb2JqZWN0IGZpbGUgY2FuIGhhbmRsZS4KCjIwMDctMDItMjMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzMwODI1CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCptb3ZkaV8xX3JleDY0LCB6ZXJvX2V4dGVuZHNpZGkyXzMyLAoJemVyb19leHRlbmRzaWRpMl9yZXg2NCk6IFBlbmFsaXplIE1NWCByZWdpc3RlcjwtPm1lbW9yeSBtb3Zlcy4KCSgqbW92c2ZfMSk6IFBlbmFsaXplIE1NWCBtb3Zlcy4KCjIwMDctMDItMjMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChkb2xvb3BfZW5kKTogRmFpbCBmb3IgbG9vcHMgdGhhdCBjYW4gaXRlcmF0ZQoJMl4zMi0xIG9yIG1vcmUgdGltZXMgdW5sZXNzIGZsYWdfdW5zYWZlX2xvb3Bfb3B0aW1pemF0aW9ucy4KCgkqIGxvb3AtaXYuYyAoZGV0ZXJtaW5lX21heF9pdGVyKTogTW92ZWQgaW4gZnJvbnQgb2YgaXRzIHNvbGUgdXNlci4KCjIwMDctMDItMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9sb2diLCBmb2xkX2J1aWx0aW5fc2lnbmlmaWNhbmQpOiBOZXcuCgkoZm9sZF9idWlsdGluXzEpOiBVc2UgdGhlbS4KCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfd2FybnZfcCk6IEhhbmRsZQoJQlVJTFRfSU5fU0lHTklGSUNBTkQuCgoyMDA3LTAyLTIzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGJkZXNjXzFhcmcpOiBJbml0aWFsaXplCglJWDg2X0JVSUxUSU5fTU9WU0hEVVAgYW5kIElYODZfQlVJTFRJTl9NT1ZTTERVUCB3aXRoCgkiX19idWlsdGluX2lhMzJfbW92c2hkdXAiIGFuZCAiX19idWlsdGluX2lhMzJfbW92c2xkdXAiLgoJKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogUmVtb3ZlIElYODZfQlVJTFRJTl9NT1ZTSERVUAoJYW5kIElYODZfQlVJTFRJTl9NT1ZTTERVUC4KCjIwMDctMDItMjIgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8zMDg0MQoJKiBmd3Byb3AuYyAocHJvcGFnYXRlX3J0eF8xKTogQWNjZXB0IGEgVk9JRG1vZGUgcmVwbGFjZW1lbnQgYWRkcmVzcy4KCjIwMDctMDItMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9mcmV4cCk6IE5ldy4KCShmb2xkX2J1aWx0aW5fMik6IFVzZSBpdC4KCjIwMDctMDItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKFNwZWMgRmlsZXMpOiBEb2N1bWVudCBnZXRlbnYgc3BlYyBmdW5jdGlvbi4KCgkqIGdjYy5jIChnZXRlbnZfc3BlY19mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCShzdGF0aWNfc3BlY19mdW5jdGlvbnMpOiBBZGQgaXQuCgkqIGNvbmZpZy92eHdvcmtzLmggKFZYV09SS1NfVEFSR0VUX0RJUik6IFJlbW92ZS4KCShWWFdPUktTX0FERElUSU9OQUxfQ1BQX1NQRUMpOiBVc2UgZ2V0ZW52IHRvIGZpbmQgdGhlIFZ4V29ya3MKCWhlYWRlciBmaWxlcy4KCjIwMDctMDItMjIgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZQoKCVBSIGMrKy8yOTQzMwoJKiBkd2FyZjJvdXQuYyAoYWRkX0FUX3N0cmluZyk6IENhbGwgZ2djX3N0cmR1cCBvbmNlIHBlciBzdHJpbmcuCgkodHlwZV90YWcpOiBVc2UgbGFuZ19ob29rcy5kd2FyZl9uYW1lIGluc3RlYWQgb2YgREVDTF9OQU1FLgoKMjAwNy0wMi0yMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCglQUiBkZWJ1Zy8zMDg5OAoJKiBkd2FyZjJvdXQuYyAoY29uY2F0bl9tZW1fbG9jX2Rlc2NyaXB0b3IpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKG1lbV9sb2NfZGVzY3JpcHRvcik6IENhbGwgaXQuCgoyMDA3LTAyLTIyICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoJICAgIElyYSBSb3NlbiAgPGlyYXJAaWwuaWJtLmNvbT4KCgkqIHRyZWUtZGF0YS1yZWYuYyAocHRyX3B0cl9tYXlfYWxpYXNfcCk6IFRha2UgYWxpYXMgc2V0cyBpbnRvIGFjY291bnQuCgoyMDA3LTAyLTIyICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzA4NDMKCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X3RyYW5zZm9ybV9sb29wKTogUmVtb3ZlIHN0cmlkZWQgc2NhbGFyCglzdG9yZXMgb25seSBhZnRlciBhbGwgdGhlIGdyb3VwIGlzIHZlY3Rvcml6ZWQuCgoyMDA3LTAyLTIyICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMwODU4CgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2lzX3NpbXBsZV9yZWR1Y3Rpb24pOiBDaGVjayB0aGF0IHRoZSBzdG10cwoJaW4gdGhlIHJlZHVjdGlvbiBjeWNsZSBoYXZlIGEgc2luZ2xlIHVzZSBpbiB0aGUgbG9vcC4KCSogdHJlZS12ZWN0b3JpemVyLmggKHJlbGV2YW50KTogQWRkIGRvY3VtZW50YXRpb24uCgoyMDA3LTAyLTIwICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAocG93ZXJwYyotKi1kYXJ3aW4qKTogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNy0wMi0yMSAgVHJldm9yIFNtaWdpZWwgIDx0cmV2b3Jfc21pZ2llbEBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglDaGFuZ2UgdGhlIGRlZmF1bHRzIG9mIHNvbWUgcGFyYW1ldGVycyBhbmQgb3B0aW9ucy4KCSogY29uZmlnL3NwdS9zcHUtcHJvdG9zLmggKHNwdV9vcHRpbWl6YXRpb25fb3B0aW9ucyk6IERlY2xhcmUuCgkqIGNvbmZpZy9zcHUvc3B1LmMgKHNwdV9vcHRpbWl6YXRpb25fb3B0aW9ucyk6IEFkZC4KCShzcHVfb3ZlcnJpZGVfb3B0aW9ucyk6IENoYW5nZSBwYXJhbXMgaW4gc3B1X29wdGltaXphdGlvbl9vcHRpb25zLgoJKiBjb25maWcvc3B1L3NwdS5oIChPUFRJTUlaQVRJT05fT1BUSU9OUyk6IERlZmluZS4KCglSZWdpc3RlciAxMjcgaXMgb25seSAxNiBieXRlIGFsaWduZWQgd2hlbiB1c2VkIGFzIGEgZnJhbWUgcG9pbnRlci4KCSogY29uZmlnL3NwdS9zcHUtcHJvdG9zLmggKHNwdV9pbml0X2V4cGFuZGVycyk6IERlY2xhcmUuCgkqIGNvbmZpZy9zcHUvc3B1LmMgKHNwdV9leHBhbmRfcHJvbG9ndWUpOiBTZXQgUkVHTk9fUE9JTlRFUl9BTElHTiBmb3IKCUhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0uCgkoc3B1X2xlZ2l0aW1hdGVfYWRkcmVzcyk6IFVzZSByZWdub19hbGlnbmVkX2Zvcl9yZWxvYWQuCgkocmVnbm9fYWxpZ25lZF9mb3JfbG9hZCk6IEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0gaXMgb25seSAxNiBieXRlCglhbGlnbmVkIHdoZW4gZnJhbWVfcG9pbnRlcl9uZWVkZWQgaXMgdHJ1ZS4KCShzcHVfaW5pdF9leHBhbmRlcnMpOiBOZXcuICBTZXQgYWxpZ25tZW50IG9mIEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0KCXRvIDggYml0cy4KCSogY29uZmlnL3NwdS9zcHUuaCAoSU5JVF9FWFBBTkRFUlMpOiBEZWZpbmUuCgoJTWFrZSBzdXJlIHNoaWZ0IGFuZCByb3RhdGUgaW5zdHJ1Y3Rpb25zIGhhdmUgdmFsaWQgaW1tZWRpYXRlIG9wZXJhbmRzLgoJKiBjb25maWcvc3B1L3ByZWRpY2F0ZXMubWQgKHNwdV9zaGlmdF9vcGVyYW5kKTogUmVtb3ZlLgoJKiBjb25maWcvc3B1L3NwdS5jIChwcmludF9vcGVyYW5kKTogQWRkIFtlZmdoRUZHSF0gbW9kaWZpZXJzLgoJKiBjb25maWcvc3B1L2NvbnN0cmFpbnRzLm1kIChXLCBPKTogRXh0ZW5kIHJhbmdlLgoJKiBjb25maWcvc3B1L3NwdS5tZCAodW1hc2ssIG5tYXNrKTogRGVmaW5lLgoJKGFzaGw8bW9kZT4zLCBhc2hsZGkzLCBhc2hsdGkzX2ltbSwgc2hscWJ5YmlfdGksIHNobHFiaV90aSwgc2hscWJ5X3RpLAoJbHNocjxtb2RlPjMsIHJvdG1fPG1vZGU+LCBsc2hyPG1vZGU+M19pbW0sIHJvdHFtYnliaV88bW9kZT4sCglyb3RxbWJpXzxtb2RlPiwgcm90cW1ieV88bW9kZT4sIGFzaHI8bW9kZT4zLCByb3RtYV88bW9kZT4sCglyb3RsPG1vZGU+Mywgcm90bHRpMywgcm90cWJ5YmlfdGksIHJvdHFieV90aSwgcm90cWJpX3RpKTogVXNlCglzcHVfbm9ubWVtX29wZXJhbmQgaW5zdGVhZCBvZiBzcHVfc2hpZnRfb3BlcmFuZHMuICBVc2UgbmV3IG1vZGlmaWVycy4KCShsc2hyPG1vZGU+M19yZWcpOiBGaXggcnRsIGRlc2NyaXB0aW9uLgoKCU1ha2Ugc3VyZSBtdWxoaXNpIGltbWVkaWF0ZSBvcGVyYW5kcyBhcmUgdmFsaWQuCgkqIGNvbmZpZy9zcHUvcHJlZGljYXRlcy5tZCAoaW1tX0tfb3BlcmFuZCk6IEFkZC4KCSogY29uZmlnL3NwdS9zcHUubWQgKG11bGhpc2kzX2ltbSwgdW11bGhpc2kzX2ltbSk6IFVzZSBpbW1fS19vcGVyYW5kLgoKCUdlbmVyYXRlIGNvbnN0YW50cyB1c2luZyBmc21iaSBhbmQgYW5kaS4KCSogY29uZmlnL3NwdS9zcHUuYyAoZW51bSBpbW1lZGlhdGVfY2xhc3MpOiBBZGQgSUNfRlNNQkkyLgoJKHByaW50X29wZXJhbmQsIHNwdV9zcGxpdF9pbW1lZGlhdGUsIGNsYXNzaWZ5X2ltbWVkaWF0ZSwKCWZzbWJpX2NvbnN0X3ApOiBIYW5kbGUgSUNfRlNNQkkyLgoKCUNvcnJlY3RseSBoYW5kbGUgYSBDT05TVF9WRUNUT1IgY29udGFpbmluZyBzeW1ib2xzLgoJKiBjb25maWcvc3B1L3NwdS5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlIEhJR0ggY29ycmVjdGx5LgoJKHNwdV9zcGxpdF9pbW1lZGlhdGUpOiBTcGxpdCBDT05TVF9WRUNUT1JzIHdpdGggLW1sYXJnZS1tZW0uCgkoaW1tZWRpYXRlX2xvYWRfcCk6IEFsbG93IHN5bWJvbHMgdGhhdCB1c2UgMiBpbnN0cnVjdGlvbnMgdG8gY3JlYXRlLgoJKGNsYXNzaWZ5X2ltbWVkaWF0ZSwgc3B1X2J1aWx0aW5fc3BsYXRzKTogRG9uJ3QgYWNjZXB0IGEgQ09OU1RfVkVDVE9SCgl3aXRoIHN5bWJvbHMgd2hlbiBmbGFnX3BpYyBpcyBzZXQuCgkoY29uc3RfdmVjdG9yX2ltbWVkaWF0ZV9wKTogTmV3LgoJKGxvZ2ljYWxfaW1tZWRpYXRlX3AsIGlvaGxfaW1tZWRpYXRlX3AsIGFyaXRoX2ltbWVkaWF0ZV9wKTogRG9uJ3QKCWFjY2VwdCBhIENPTlNUX1ZFQ1RPUiB3aXRoIHN5bWJvbHMuCgkoc3B1X2xlZ2l0aW1hdGVfY29uc3RhbnRfcCk6IFVzZSBjb25zdF92ZWN0b3JfaW1tZWRpYXRlX3AuICBEb24ndAoJYWNjZXB0IGEgQ09OU1RfVkVDVE9SIHdpdGggc3ltYm9scyB3aGVuIGZsYWdfcGljIGlzIHNldC4gIEhhbmRsZSBISUdICgljb3JyZWN0bHkuCgkqIGNvbmZpZy9zcHUvc3B1Lm1kIChoaWdoLCBsb3cpOiBEZWxldGUuCgkobG93Xzxtb2RlPik6IERlZmluZS4KCglSZW1vdmUgSU5UUm1vZGUgYW5kIElOVFJfUkVHTlVNLCB3aGljaCBkaWRuJ3Qgd29yay4KCSogY29uZmlnL3NwdS9zcHUuYyAoc3B1X2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlKTogUmVtb3ZlIHJlZmVyZW5jZQoJb2YgSU5UUl9SRUdOVU0uCgkqIGNvbmZpZy9zcHUvc3B1LWJ1aWx0aW5zLm1kIChzcHVfaWRpc2FibGUsIHNwdV9pZW5hYmxlLCBzZXRfaW50ciwKCXNldF9pbnRyX3BpYywgc2V0X2ludHJfY2MsIHNldF9pbnRyX2NjX3BpYywgc2V0X2ludHJfcmV0dXJuLCB1bm5hbWVkCglwZWVwaG9sZTIgcGF0dGVybik6IERvbid0IHVzZSBJTlRSIG9yIDEzMS4KCShtb3ZpbnRyY2MpOiBEZWxldGUuCgkqIGNvbmZpZy9zcHUvc3B1LmggKEZJUlNUX1BTRVVET19SRUdJU1RFUiwgRklYRURfUkVHSVNURVJTLAoJQ0FMTF9VU0VEX1JFR0lTVEVSUywgUkVHSVNURVJfTkFNRVMsIElOVFJfUkVHTlVNKTogUmVtb3ZlIElOVFJfUkVHTlVNLgoJKiBjb25maWcvc3B1L3NwdS5tZCAoVU5TUEVDX0lESVNBQkxFLCBVTlNQRUNfSUVOQUJMRSk6IFJlbW92ZS4KCShVTlNQRUNfU0VUX0lOVFIpOiBBZGQuCgkqIGNvbmZpZy9zcHUvc3B1LW1vZGVzLmRlZiAoSU5UUik6IFJlbW92ZS4KCglNb3JlIGFjY3VyYXRlIHdhcm5pbmdzIGFib3V0IHJ1bi10aW1lIHJlbG9jYXRpb25zLgoJKiBjb25maWcvc3B1L3NwdS5jIChyZWxvY19kaWFnbm9zdGljKTogVGVzdCBpbl9zZWN0aW9uLgoKCUNvcnJlY3RseSB3YXJuIGFib3V0IGltbWVkaWF0ZSBhcmd1bWVudHMgdG8gc3BlY2lmaWMgaW50cmluc2ljcy4KCSogY29uZmlnL3NwdS9zcHUuYyAoc3B1X2NoZWNrX2J1aWx0aW5fcGFybSk6IEhhbmRsZSBDT05TVF9WRUNUT1JzLgoJKHNwdV9leHBhbmRfYnVpbHRpbl8xKTogQ2FsbCBzcHVfY2hlY2tfYnVpbHRpbl9wYXJtIGJlZm9yZSBjaGVja2luZwoJdGhlIGluc3RydWN0aW9uIHByZWRpY2F0ZS4KCglGaXggdHJlZSBjaGVjayBlcnJvcnMgd2l0aCBsYXRlc3QgdXBkYXRlLgoJKiBjb25maWcvc3B1L3NwdS5jIChleHBhbmRfYnVpbHRpbl9hcmdzLCBzcHVfZXhwYW5kX2J1aWx0aW5fMSk6IFVzZQoJQ0FMTF9FWFBSX0FSRy4KCShzcHVfZXhwYW5kX2J1aWx0aW4pOiBVc2UgQ0FMTF9FWFBSX0ZOLgoKCUFkZCBtaXNzaW5nIHNwZWNpZmljIGludHJpbnNpY3MuCgkqIGNvbmZpZy9zcHUvc3B1LWJ1aWx0aW5zLmRlZjogQWRkIHNpX2Jpc2xlZCwgc2lfYmlzbGVkZCBhbmQKCXNpX2Jpc2xlZGUuCgkqIGNvbmZpZy9zcHUvc3B1X2ludGVybmFscy5oOiBEaXR0by4KCglGaXggaW5jb3JyZWN0IG9wZXJhbmQgbW9kaWZpZXJzLgoJKiBjb25maWcvc3B1L3NwdS1idWlsdGlucy5tZCAoc3B1X21weSwgc3B1X21weXUpOiBSZW1vdmUgdXNlIG9mICVILgoJKiBjb25maWcvc3B1L3NwdS5tZCAoeG9yPG1vZGU+Myk6IENoYW5nZSAlUyB0byAlSi4KCglPcHRpbWl6ZSBvbmUgY2FzZSBvZiB6ZXJvX2V4dGVuZCBvZiBhIHZlY19zZWxlY3QuCgkqIGNvbmZpZy9zcHUvc3B1Lm1kIChfdmVjX2V4dHJhY3R2OGhpX3plKTogQWRkLgoKCUFjY2VwdCBhbnkgaW1tZWRpYXRlIGZvciBoYnIuCgkqIGNvbmZpZy9zcHUvc3B1Lm1kIChoYnIpOiBDaGFuZ2UgcyBjb25zdHJhaW50cyB0byBpLgoKMjAwNy0wMi0yMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHRodW1iMl9maW5hbF9wcmVzY2FuX2luc24pOiBEb24ndCBpbmNyZW1lbW50Cgljb25kZXhlY19jb3VudCB3aGVuIHNraXBwaW5nIFVTRSBhbmQgQ0xPQkJFUi4KCjIwMDctMDItMjEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb21tb24ub3B0IChXYXJyYXktYm91bmRzKTogQWRkIFdhcm5pbmcgYXR0cmlidXRlLgoJKFdzdHJpY3Qtb3ZlcmZsb3csIFdzdHJpY3Qtb3ZlcmZsb3c9LCBXY292ZXJhZ2UtbWlzbWF0Y2gpOgoJTGlrZXdpc2UuCgkoZnNpemVkLXplcm9lcyk6IEFkZCBPcHRpbWl6YXRpb24gYXR0cmlidXRlLgoJKGZzcGxpdC13aWRlLXR5cGVzLCBmdHJlZS1zY2V2LWNwcm9wKTogTGlrZXdpc2UuCgkqIGMub3B0IChXYysrMHgtY29tcGF0KTogQWRkIFdhcm5pbmcgYXR0cmlidXRlLgoKMjAwNy0wMi0yMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIG1pZGRsZS1lbmQvMzA3NjEKCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVnc19pbl9pbnNuKTogSW4gdGhlIHNpbmdsZV9zZXQgc3BlY2lhbAoJY2FzZSwgYXR0ZW1wdCB0byByZS1yZWNvZ25pemUgdGhlIGluc24gYmVmb3JlIGZhbGxpbmcgYmFjayB0bwoJaGF2aW5nIHJlbG9hZCBmaXggaXQgdXAuCgoyMDA3LTAyLTIwICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AZ21haWwuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X3JlYWRfYXJndW1lbnQpOiBUYWtlIGEgdHJlZSBhbmQgaW50IGFyZ3VtZW50LgoJUmV3cml0ZSBhY2NvcmRpbmdseS4KCShmcnZfcmVhZF9pYWNjX2FyZ3VtZW50KTogRGl0dG8uCgkoZnJ2X2V4cGFuZF9zZXRfYnVpbHRpbik6IFRha2UgYSBjYWxsIGluc3RlYWQgb2YgYXJnbGlzdCwgdXBkYXRlIGZvcgoJYWJvdmUgY2hhbmdlcy4KCShmcnZfZXhwYW5kX3Vub3BfYnVpbHRpbik6IERpdHRvLgoJKGZydl9leHBhbmRfYmlub3BfYnVpbHRpbik6IERpdHRvLgoJKGZydl9leHBhbmRfY3V0X2J1aWx0aW4pOiBEaXR0by4KCShmcnZfZXhwYW5kX2Jpbm9waW1tX2J1aWx0aW4pOiBEaXR0by4KCShmcnZfZXhwYW5kX3ZvaWRiaW5vcF9idWlsdGluKTogRGl0dG8uCgkoZnJ2X2V4cGFuZF9pbnRfdm9pZDJhcmcpOiBEaXR0by4KCShmcnZfZXhwYW5kX3ByZWZldGNoZXMpOiBEaXR0by4KCShmcnZfZXhwYW5kX3ZvaWR0cmlvcF9idWlsdGluKTogRGl0dG8uCgkoZnJ2X2V4cGFuZF92b2lkYWNjb3BfYnVpbHRpbik6IERpdHRvLgoJKGZydl9leHBhbmRfbG9hZF9idWlsdGluKTogRGl0dG8uCgkoZnJ2X2V4cGFuZF9zdG9yZV9idWlsdGluKTogRGl0dG8uCgkoZnJ2X2V4cGFuZF9tZHBhY2toX2J1aWx0aW4pOiBEaXR0by4KCShmcnZfZXhwYW5kX21jbHJhY2NfYnVpbHRpbik6IERpdHRvLgoJKGZydl9leHBhbmRfbXJkYWNjX2J1aWx0aW4pOiBEaXR0by4KCShmcnZfZXhwYW5kX213dGFjY19idWlsdGluKTogRGl0dG8uCgkoZnJ2X2V4cGFuZF9idWlsdGluKTogUmVtb3ZlIHVzYWdlIG9mIENBTExfRVhQUl9BUkdTLCB1cGRhdGUKCWNhbGxzIGZvciBhYm92ZS4KCjIwMDctMDItMjAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChSUy82MDAwIGFuZCBQb3dlclBDIE9wdGlvbnMpOiBBZGQgLW1jbXBiIGFuZCAtbWRmcC4KCSogY29uZmlndXJlLmFjIChIQVZFX0dBU19DTVBCKTogQ2hlY2sgZm9yIGFzc2VtYmxlciBzdXBwb3J0IG9mIHRoZQoJY21wYiBpbnN0cnVjdGlvbi4KCShIQVZFX0dBU19ERlApOiBDaGVjayBmb3IgYXNzZW1ibGVyIHN1cHBvcnQgb2YgZGVjaW1hbCBmbG9hdGluZwoJcG9pbnQgaW5zdHJ1Y3Rpb25zLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IChtY21wYiwgbWRmcCk6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBBZGQgQ01QQiBhbmQgREZQCgltYXNrcyB0byBwb3dlcjYgYW5kIHBvd2VyNnggYW5kIHRvIFBPV0VSUENfTUFTS1MuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAocnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMpOiBEZWZpbmUKCV9BUkNIX1BXUjYuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmg6IENoZWNrIGFzc2VtYmxlciBzdXBwb3J0IGZvciBDTVBCIGFuZCBERlAuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQub3B0IChtcHJvdG90eXBlKTogVXNlIHZhcmlhYmxlLCBub3QgbWFzay4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKToKCUFjY2VzcyBQUk9UT1RZUEUgYXMgdmFyaWFibGUsIG5vdCBtYXNrLgoKMjAwNy0wMi0yMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogcnRsLmggKHJlbW92ZV9yZWdfZXF1YWxfZXF1aXZfbm90ZXMpOiBOZXcgcHJvdG90eXBlLgoJKiBydGxhbmFsLmMgKHJlbW92ZV9yZWdfZXF1YWxfZXF1aXZfbm90ZXMpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbWJpbmUuYyAoYWRqdXN0X2Zvcl9uZXdfZGVzdCk6IFVzZSBpdC4KCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY29tYmluZSk6IExpa2V3aXNlLgoKMjAwNy0wMi0yMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogcnRsYW5hbC5jIChmaW5kX3JlZ19lcXVhbF9lcXVpdl9ub3RlKTogRG8gbm90IGZpbmQgUkVHX0VRKgoJbm90ZXMgb24gYW4gaW5zbiB3aXRoIG11bHRpcGxlIHNldHMsIGV2ZW4gaWYgc2luZ2xlX3NldCByZXR1cm5zCglub24tTlVMTCBmb3IgdGhhdCBpbnNuLgoKMjAwNy0wMi0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfd2FybnZfcCk6IEhhbmRsZSBzY2FsYiwKCXNjYWxibiBhbmQgc2NhbGJsbi4KCjIwMDctMDItMjAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX1NQRUMpOiBEZWZhdWx0IC1tbWFjb3N4LXZlcnNpb24tbWluIG9ubHkKCWlmIHVzZXIgZGlkbid0IHBhc3MgaXQuCgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChDQzFfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChDQzFfU1BFQyk6IExpa2V3aXNlLgoJKERBUldJTl9NSU5WRVJTSU9OX1NQRUMpOiBEb24ndCBkZXBlbmQgb24gdXNlcidzIHNldHRpbmcgb2YKCS1tbWFjb3N4LXZlcnNpb24tbWluLgoKMjAwNy0wMi0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoJICAgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX3NjYWxiLgoJKHNjYWxiX29wdGFiKTogRGVmaW5lIGNvcnJlc3BvbmRpbmcgbWFjcm8uCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgc2NhbGJfb3B0YWIuCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBJbXBsZW1lbnQgc2NhbGJfb3B0YWIgdXNpbmcgc2NhbGI/ZjMKCXBhdHRlcm5zLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tYXRoZm5fMiwgZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUKCUJVSUxUX0lOX1NDQUxCeyxGLEx9LCBCVUlMVF9JTl9TQ0FMQk57LEYsTH0gYW5kIEJVSUxUX0lOX1NDQUxCTE57LEYsTH0uCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fU0NBTEJ7LEYsTH0sIEJVSUxUX0lOX1NDQUxCTnssRixMfQoJYW5kIEJVSUxUX0lOX1NDQUxCTE57LEYsTH0gdXNpbmcgZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIgaWYKCWZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBpcyBzZXQuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzY2FsYnhmMywgc2NhbGI8bW9kZT4zKTogTmV3IGV4cGFuZGVycwoJdG8gaW1wbGVtZW50IHNjYWxiZiwgc2NhbGIgYW5kIHNjYWxibCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NwoJaW50cmluc2ljcy4KCjIwMDctMDItMjAgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoJICAgIERKIERlbG9yaWUgPGRqQHJlZGhhdC5jb20+CgoJUFIgb3RoZXIvMzA4MjQKCSogZGlhZ25vc3RpYy5jIChkaWFnbm9zdGljX2NvdW50X2RpYWdub3N0aWMpOiBNb3ZlIC1XZXJyb3IgbG9naWMgdG8uLi4KCShkaWFnbm9zdGljX3JlcG9ydF9kaWFnbm9zdGljKTogLi4uIGhlcmUsIGFuZCB0dXJuIHRoZW0gaW50byByZWFsCgllcnJvcnMuIElmIHdhcm5pbmdzIGFyZSBpbmhpYml0ZWQsIG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuCgoyMDA3LTAyLTIwICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZXhwbTF4ZjIpOiBSZW9yZGVyIGluc24gc2VxdWVuY2UgZm9yCgliZXR0ZXIgY29kZSBnZW5lcmF0aW9uLgoKMjAwNy0wMi0yMCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKE9WRVJSSURFX09QVElPTlMpOiBSZW1vdmUgZXh0cmEgOy4KCjIwMDctMDItMjAgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCwKCWNvbmZpZy9hbHBoYS9saWIxZnVuY3MuYXNtLCBjb25maWcvYWxwaGEvdm1zLWNydDAtNjQuYywKCWNvbmZpZy9hbHBoYS92bXMtcHN4Y3J0MC02NC5jLCBjb25maWcvYXJjL2FyYy5jLAoJY29uZmlnL2FyYy9hcmMuaCwgY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2FybS9hcm0ubWQsCgljb25maWcvYXJtL2xpYjFmdW5jcy5hc206IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kLCBjb25maWcvY3Jpcy9jcmlzLmMsIGNvbmZpZy9jcngvY3J4LmMsCgljb25maWcvZnIzMC9mcjMwLm1kLCBjb25maWcvaTM4Ni9pMzg2LmgsCgljb25maWcvaXEyMDAwL2lxMjAwMC5oLCBjb25maWcvaXEyMDAwL3ByZWRpY2F0ZXMubWQsCgljb25maWcvcGEvbWlsbGk2NC5TLCBjb25maWcvcGEvcGEuYywgY29uZmlnL3BhL3BhLmgsCgljb25maWcvcGEvcGEubWQsIGNvbmZpZy9wYS9wYTMyLXJlZ3MuaCwgY29uZmlnL3BhL3BhNjQtcmVncy5oLAoJY29uZmlnL3BkcDExL3BkcDExLmMsIGNvbmZpZy9wZHAxMS9wZHAxMS5oLAoJY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kLCBjb25maWcvcnM2MDAwL3JzNjAwMC5jLAoJY29uZmlnL3MzOTAvczM5MC1tb2Rlcy5kZWYsIGNvbmZpZy9zcGFyYy9uZXRic2QtZWxmLmgsCgljb25maWcvc3BhcmMvc3BhcmMuYywgY29uZmlnL3NwYXJjL3NwYXJjLmgsCgljb25maWcvc3BhcmMvc3BhcmMubWQsIGNvbmZpZy9zcHUvY29uc3RyYWludHMubWQsCgljb25maWcvc3B1L3NwdS5jLCBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYubWQ6IEZvbGxvdyBzcGVsbGluZwoJY29udmVudGlvbnMuCgoyMDA3LTAyLTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8yOTk0MwoJKiB2YXJhc20uYyAodXNlX2Jsb2Nrc19mb3JfZGVjbF9wKTogUmV0dXJuIGZhbHNlIGZvciBkZWNscyB3aXRoCglhbGlhcyBhdHRyaWJ1dGUuCgoyMDA3LTAyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoLWZ0cmVlLWxycyk6IFJlbW92ZS4KCjIwMDctMDItMTkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtcHJlLmMgKGNyZWF0ZV92YWx1ZV9leHByX2Zyb20pOiBJbml0aWFsaXplIFBPT0wgdG8KCU5VTEwuCgoyMDA3LTAyLTE5ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfYnVpbHRpbik6IFVzZSB0aGUKCW5ldyBDQUxMX0VYUFJfRk4gbWFjcm8gZm9yIHJldHJpZXZpbmcgdGhlIGZ1bmN0aW9uCglkZWNsYXJhdGlvbiBvZiB0aGUgaW5wdXQgZXhwcmVzc2lvbi4KCjIwMDctMDItMTkgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCSogYy5vcHQgKFdhZGRyZXNzKTogTmV3LgoJKiBjb21tb24ub3B0IChXYWx3YXlzLXRydWUpOiBEZWxldGUuCgkoV3N0cmluZy1saXRlcmFsLWNvbXBhcmlzb24pOiBEZWxldGUuCgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogRGVsZXRlIC1XYWx3YXlzLXRydWUgYW5kCgktV3N0cmluZy1saXRlcmFsLWNvbXBhcmlzb24uIEFkZCAtV2FkZHJlc3MuCgkoV2FkZHJlc3MpOiBOZXcuCgkoV2Fsd2F5cy10cnVlKTogRGVsZXRlLgoJKFdzdHJpbmctbGl0ZXJhbC1jb21wYXJpc29uKTogRGVsZXRlLgoJKiBkb2MvZXh0ZW5kLnRleGkgKCNwcmFnbWEgR0NDIGRpYWdub3N0aWMpOiBVc2UgLVdmb3JtYXQKCWNvbnNpc3RlbnRseSBpbnN0ZWFkIG9mIC1XYWx3YXlzLXRydWUgaW4gZXhhbXBsZS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiAtV2FkZHJlc3MgaXMgZW5hYmxlZCBieSAtV2FsbC4KCSogYy10eXBlY2suYyAocGFyc2VyX2J1aWxkX2JpbmFyeV9vcCk6IFJlcGxhY2UKCS1Xc3RyaW5nLWxpdGVyYWwtY29tcGFyaXNvbiBhbmQgLVdhbHdheXMtdHJ1ZSB3aXRoIC1XYWRkcmVzcy4KCSogYy1jb21tb24uYyAoY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogUmVwbGFjZSAtV2Fsd2F5cy10cnVlCgl3aXRoIC1XYWRkcmVzcy4KCjIwMDctMDItMTkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLWNmZy5jIChkdW1wX2Z1bmN0aW9uX3RvX2ZpbGUpOiBCZSBwcmVwYXJlZCBmb3IgZnVuY3Rpb25zCgl3aXRob3V0IERFQ0xfU1RSVUNUX0ZVTkNUSU9OIGluaXRpYWxpemVkLgoKMjAwNy0wMi0xOSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2luaXRfY3Rvcl9wcmVldmFsXzEpOiBEZXRlY3QgcG90ZW50aWFsIG92ZXJsYXAKCWR1ZSB0byBjYWxscyB0byBmdW5jdGlvbnMgdGFraW5nIHBvaW50ZXJzIGFzIHBhcmFtZXRlcnMuCgoyMDA3LTAyLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzI5NTU4CgkqIHZhci10cmFja2luZy5jICh0cmFja19leHByX3ApOiBEaXNhbGxvdyBBR0dSRUdBVEVfVFlQRV9QCglpbiBtZW1vcnkuCgoyMDA3LTAyLTE5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2NhbGxfc2F2ZWRfcmVnaXN0ZXJfdXNlZCwKCXMzOTBfZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBBZGp1c3QgdGhlIHdheSBDQUxMX0VYUFIgYXJndW1lbnRzIGFyZQoJYWNjZXNzZWQgdG8gdGhlIG5ldyBzY2hlbWUuCgoyMDA3LTAyLTE5ICBKYW4tQmVuZWRpY3QgR2xhdyAgPGpiZ2xhd0BsdWctb3dsLmRlPgoKCSogY29uZmlnL2NyaXMvY3Jpcy5jIChjcmlzX21vdmVtX2xvYWRfcmVzdF9wLCBjcmlzX3N0b3JlX211bHRpcGxlX29wX3ApCgkoY3Jpc19wcmludF9pbmRleCwgY3Jpc19wcmludF9vcGVyYW5kLCBjcmlzX3ByaW50X29wZXJhbmRfYWRkcmVzcykKCShjcmlzX3JlbG9hZF9hZGRyZXNzX2xlZ2l0aW1pemVkLCBjcmlzX3J0eF9jb3N0cywgY3Jpc19hZGRyZXNzX2Nvc3QpCgkoY3Jpc19zaWRlX2VmZmVjdF9tb2RlX29rLCBjcmlzX3ZhbGlkX3BpY19jb25zdCwgY3Jpc19zcGxpdF9tb3ZkeCkKCShjcmlzX2V4cGFuZF9waWNfY2FsbF9hZGRyZXNzKTogVXNlIHh4eF9QIHByZWRpY2F0ZSBtYWNyb3MgaW5zdGVhZCBvZgoJR0VUX0NPREUgKCkgPT0geHh4LgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKFNFQ09OREFSWV9SRUxPQURfQ0xBU1MsIEVYVFJBX0NPTlNUUkFJTlRfUSwKCUVYVFJBX0NPTlNUUkFJTlRfVCwgQkRBUF9JTkRFWF9QLCBCSUFQX0lOREVYX1AsIFNJTVBMRV9BRERSRVNTX1AsCglHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBEaXR0by4KCSogY29uZmlnL2NyaXMvY3Jpcy5tZCAoZGVmaW5lX2luc25zOiAqYnRzdCwgbW92ZGksICptb3Zfc2lkZTxtb2RlPikKCSgqbW92X3NpZGVzaXNmLCAqbW92X3NpZGU8bW9kZT5fbWVtLCAqbW92X3NpZGVzaXNmX21lbSkKCSgqY2xlYXJfc2lkZTxtb2RlPiwgbW92c2ksICptb3ZzaV9pbnRlcm5hbCwgKmV4dF9zaWRlcWloaSkKCSgqZXh0X3NpZGU8bW9kZT5zaSwgKm9wX3NpZGU8bW9kZT4sICpvcF9zd2FwX3NpZGU8bW9kZT4sIGFkZHNpMykKCSgqZXh0b3BxaWhpX3NpZGUsICpleHRvcDxtb2RlPnNpX3NpZGUsICpleHRvcHFpaGlfc3dhcF9zaWRlKQoJKCpleHRvcDxtb2RlPnNpX3N3YXBfc2lkZSwgYWRkaV9tdWwsICphZGRpLGFuZHNpMywgYW5kaGkzLCBhc2hsPG1vZGU+MykKCSh1bWluc2kzLCBjYWxsLCBjYWxsX3ZhbHVlKTogRGl0dG8uCgkoZGVmaW5lX3NwbGl0OiBpbmRpcl90b19yZWdfc3BsaXQsIHVubmFtZWQpOiBEaXR0by4KCjIwMDctMDItMTkgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzA5NzUKCSogdHJlZS12ZWN0LXRyYXNuZm9ybS5jICh2ZWN0X2dldF92ZWNfZGVmX2Zvcl9zdG10X2NvcHkpOiBSZW1vdmUKCXdyb25nIGFzc2VydC4KCjIwMDctMDItMTggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BnbWFpbC5jb20+CgoJKiBtaXBzLmMgKG1pcHNfcHJlcGFyZV9idWlsdGluX2FyZyk6IEFkZCBhcmdudW0gcGFyYW1ldGVyLgoJUmVtb3ZlIHVzZSBvZiBhcmdsaXN0LgoJKG1pcHNfZXhwYW5kX2J1aWx0aW4pOiBSZW1vdmUgdXNlIG9mIGFyZ2xpc3QsIHBhc3MgaW4gZXhwci4KCShtaXBzX2V4cGFuZF9idWlsdGluX2RpcmVjdCk6IFJld3JpdGUgaGFuZGxpbmcgZm9yIGFyZ2xpc3QgcmVtb3ZhbC4KCShtaXBzX2V4cGFuZF9idWlsdGluX21vdnRmKTogRGl0dG8uCgkobWlwc19leHBhbmRfYnVpbHRpbl9jb21wYXJlKTogRGl0dG8uCgoyMDA3LTAyLTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3JhLmMgKHNyYV9idWlsZF9hc3NpZ25tZW50KTogUmVwbGFjZSBhc3NlcnRpb24KCWNoZWNraW5nIHdpdGggYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IGl0IGNhbid0IGJlIGRvbmUuCgoyMDA3LTAyLTE4ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMDgzMwoJKiB0cmVlLWR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEFkZCB0Y2NfdmxfZXhwIGNhc2UgbWlzc2VkCglkdXJpbmcgQ0FMTF9FWFBSIHJlcHJlc2VudGF0aW9uIGNvbnZlcnNpb24uCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChzZXRfcmhzKTogTGlrZXdpc2UuCgoyMDA3LTAyLTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3JhLmMgKHNyYV9idWlsZF9hc3NpZ25tZW50KTogRGlzYWJsZSBhc3NlcnRpb24gY2hlY2tpbmcKCWZvciBub3cuCgoyMDA3LTAyLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGdpbXBsaWZ5X3BhcmFtZXRlcnMpOiBDYWxsIGJ1aWxkX2dpbXBsZV9tb2RpZnlfc3RtdAoJaW5zdGVhZCBvZiBjYWxsaW5nIGJ1aWxkMiB3aXRoIGEgR0lNUExFX01PRElGWV9TVE1ULgoJKiBnaW1wbGUtbG93LmMgKGxvd2VyX2Z1bmN0aW9uX2JvZHksIGxvd2VyX2J1aWx0aW5fc2V0am1wKToKCUxpa2V3aXNlLgoJKiBnaW1wbGlmeS5jIChidWlsZF9zdGFja19zYXZlX3Jlc3RvcmUsIGdpbXBsaWZ5X3JldHVybl9leHByLAoJZ2ltcGxpZnlfZGVjbF9leHByLCAgZ2ltcGxpZnlfc2VsZl9tb2RfZXhwciwgZ2ltcGxpZnlfY29uZF9leHByLAoJZ2ltcGxpZnlfaW5pdF9jdG9yX2V2YWxfcmFuZ2UsIGdpbXBsZV9wdXNoX2NsZWFudXAsCglnaW1wbGlmeV9vbXBfZm9yLCBnaW1wbGlmeV9vbXBfYXRvbWljX3BpcGVsaW5lLAoJZ2ltcGxpZnlfb21wX2F0b21pY19tdXRleCwgZ2ltcGxpZnlfZXhwciwgZ2ltcGxpZnlfb25lX3NpemVwb3MsCglmb3JjZV9naW1wbGVfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBpcGEtY3AuYyAoY29uc3RhbnRfdmFsX2luc2VydCk6IExpa2V3aXNlLgoJKiBsYW1iZGEtY29kZS5jIChsYnZfdG9fZ2NjX2V4cHJlc3Npb24sIGxsZV90b19nY2NfZXhwcmVzc2lvbiwKCWxhbWJkYV9sb29wbmVzdF90b19nY2NfbG9vcG5lc3QsIHJlcGxhY2VfdXNlc19lcXVpdl90b194X3dpdGhfeSwKCXBlcmZlY3RfbmVzdGlmeSk6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuYyAobGhkX29tcF9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkqIG9tcC1sb3cuYyAobG93ZXJfcmVjX2lucHV0X2NsYXVzZXMsIGxvd2VyX3JlZHVjdGlvbl9jbGF1c2VzLAoJbG93ZXJfY29weXByaXZhdGVfY2xhdXNlcywgbG93ZXJfc2VuZF9jbGF1c2VzLAoJbG93ZXJfc2VuZF9zaGFyZWRfdmFycywgZXhwYW5kX3BhcmFsbGVsX2NhbGwsCglleHBhbmRfb21wX2Zvcl9nZW5lcmljLCBleHBhbmRfb21wX2Zvcl9zdGF0aWNfbm9jaHVuaywKCWV4cGFuZF9vbXBfZm9yX3N0YXRpY19jaHVuaywgZXhwYW5kX29tcF9zZWN0aW9ucywKCWxvd2VyX29tcF9zaW5nbGVfY29weSwgbG93ZXJfb21wX2Zvcl9sYXN0cHJpdmF0ZSwKCWxvd2VyX29tcF9wYXJhbGxlbCwgaW5pdF90bXBfdmFyLCBzYXZlX3RtcF92YXIpOiBMaWtld2lzZS4KCSogdmFsdWUtcHJvZi5jICh0cmVlX2Rpdm1vZF9maXhlZF92YWx1ZSwgdHJlZV9tb2RfcG93MiwKCXRyZWVfbW9kX3N1YnRyYWN0LCB0cmVlX2ljLCB0cmVlX3N0cmluZ29wX2ZpeGVkX3ZhbHVlKToKCUxpa2V3aXNlLgoKMjAwNy0wMi0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc2gvZGl2dGFiLmMsIGNvbmZpZy9zaC9zaC5jLCBjb25maWcvc2gvc2guaCwKCWNvbmZpZy9zaC9zaC5tZDogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKCSogY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL2Zydi9mcnYuaCwgY29uZmlnL2Zydi9mcnYubWQsCgljb25maWcvZnJ2L3ByZWRpY2F0ZXMubWQ6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCgkqIGNvbmZpZy9tNjhrL2xpbnV4LXVud2luZC5oOiBGaXggYSBjb21tZW50IHR5cG8uCgkqIHRhcmdldC5oOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA3LTAyLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4MTczCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpIDxJT1I+OiBPcHRpbWl6ZQoJKFggJiBDMSkgfCBDMiBhcyBDMiB3aGVuIChDMSAmIEMyKSA9PSBDMSBhbmQgWCBoYXMgbm8gc2lkZS1lZmZlY3RzLgoJT3B0aW1pemUgKFggJiBDMSkgfCBDMiBhcyBYIHwgQzIgd2hlbiAoQzEgfCBDMikgPT0gfjAuCglDYW5vbmljYWxpemUgKFggJiBDMSkgfCBDMiBhcyAoWCAmIChDMSAmIH5DMikpIHwgQzIuCgk8QU5EPjogQ2Fub25pY2FsaXplIChYIHwgQzEpICYgQzIgYXMgKFggJiBDMikgfCAoQzEgJiBDMikuCgoyMDA3LTAyLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fbG9hZF9leHBvbmVudCk6IE5ldy4KCShmb2xkX2J1aWx0aW5fMik6IFVzZSBpdC4KCjIwMDctMDItMTggIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglQUiBydGwtb3B0aW1pemF0aW9uLzMwNzczCgkqIGxvY2FsLWFsbG9jLmMgKHVwZGF0ZV9lcXVpdl9yZWdzKTogRG8gbm90IHNldCByZWdfZXF1aXZfaW5pdAoJaWYgd2UgZmFpbCB0byBhdHRhY2ggYSBSRUdfRVFVSVYgbm90ZS4KCjIwMDctMDItMTggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCSAgICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChic3dhcHNpMik6IE5ldyBkZWZpbmVfaW5zbiBhbmQgc3BsaXR0ZXIuCgoyMDA3LTAyLTE4ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogUGFzcyBvcmlnaW5hbCBFWFAKCWFuZCBTVFJVQ1RfVkFMVUVfQUREUl9WQUxVRSBpbnN0ZWFkIG9mIGEgbGlzdCBvZiBhcmd1bWVudHMuICBNb3ZlCgljb2RlIHRvIHNwbGl0IGNvbXBsZXggYXJndW1lbnRzIGhlcmUsIGFzIHBhcnQgb2YgaW5pdGlhbGl6aW5nIHRoZQoJQVJHUyBhcnJheS4KCShleHBhbmRfY2FsbCk6IFJlbW92ZSBjb2RlIHRoYXQgYnVpbGRzIGEgbGlzdCBvZiBhcmd1bWVudHMgYW5kCglpbnNlcnRzIGltcGxpY2l0IGFyZ3VtZW50cyBpbnRvIGl0LiAgSW5zdGVhZCwganVzdCBjb3VudCBob3cgbWFueQoJaW1wbGljaXQgYXJndW1lbnRzIHRoZXJlIHdpbGwgYmUgc28gd2UgY2FuIGRldGVybWluZSB0aGUgc2l6ZSBvZgoJdGhlIEFSR1MgYXJyYXksIGFuZCBsZXQgaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbiBkbyB0aGUgd29yay4KCShzcGxpdF9jb21wbGV4X3ZhbHVlcyk6IERlbGV0ZSB1bnVzZWQgZnVuY3Rpb24uCgoyMDA3LTAyLTE4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS1laC5jICh0cmVlX2NvdWxkX3RyYXBfcCk6IEhhbmRsZSBWSUVXX0NPTlZFUlRfRVhQUi4KCjIwMDctMDItMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBjYWxscy5jIChtZW1fb3ZlcmxhcHNfYWxyZWFkeV9jbG9iYmVyZWRfYXJnX3ApOiBSZXR1cm4gdHJ1ZQoJZm9yIGFyZyBwb2ludGVyIGJhc2VkIGluZGV4ZWQgYWRkcmVzc2luZy4KCjIwMDctMDItMTggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oLCBjb25maWcvaWE2NC9pYTY0Lm1kLAoJY29uZmlnL2lhNjQvcHJlZGljYXRlcy5tZCwgY29uZmlnL2lhNjQvc3lzdjQuaDogRm9sbG93CglzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDctMDItMTggIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChzcGxpdF9kaSk6IE5ldy4KCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaDogRGVjbGFyZSBzcGxpdF9kaS4KCSogY29uZmlnL202OGsvbTY4ay5tZCAoZXh0ZW5kc2lkaTIqLGFzaGxkaTMqLGFzaHJkaTMqLGxzaHJkaTMqKToKCSAgSW1wcm92ZSBwcmVkaWNhdGUgaGFuZGxpbmcgYW5kIHNwbGl0IGNvbnN0YW50IHNoaWZ0cy4KCjIwMDctMDItMTggIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogY29uZmlnL202OGsvbTY4ay5tZCAoZXh0dixleHR6dixpbnN2KTogZGlzYWJsZSBkeW5hbWljCglwYXJhbWV0ZXIgZm9yIHJlZ2lzdGVyIGJpdGZpZWxkIG9wZXJhdGlvbnMsIGdlbmVyYWwgcHJlZGljYXRlcwoJY2xlYW51cAoKMjAwNy0wMi0xOCAgUm9tYW4gWmlwcGVsIDx6aXBwZWxAbGludXgtbTY4ay5vcmc+CgoJKiBjb25maWcvbTY4ay9saW51eC5oIChNRF9VTldJTkRfU1VQUE9SVCk6IERlZmluZS4KCSogY29uZmlnL202OGsvbGludXgtdW53aW5kLmg6IE5ldyBmaWxlLgoKMjAwNy0wMi0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjZmdsb29wLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYmZpbi9iZmluLmMsCgljb25maWcvaTM4Ni9hdGhsb24ubWQsIGNvbmZpZy9pYTY0L2lhNjQubWQsCgljb25maWcvcnM2MDAwL3JzNjAwMC5jLCBjb25maWcvczM5MC9zMzkwLmMsIGNvbmZpZy9zcHUvc3B1Lm1kLAoJZGYtcHJvYmxlbXMuYywgZGYuaCwgZm9sZC1jb25zdC5jLCBpcGEtY3AuYywgaXBhLWlubGluZS5jLAoJaXBhLXByb3AuaCwgc2VlLmMsIHN0cnVjdC1lcXVpdi5jLCB0cmVlLWlubGluZS5jLAoJdHJlZS1zc2EtbG9vcC1uaXRlci5jLCB0cmVlLXZlY3QtYW5hbHl6ZS5jLAoJdHJlZS12ZWN0LXRyYW5zZm9ybS5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDctMDItMTcgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogc2NoZWQtZGVwcy5jIChmaW5kX2luc25fbGlzdCk6IFJlbW92ZS4KCSogc2NoZWQtaW50Lmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBmaW5kX2luc25fbGlzdC4KCjIwMDctMDItMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX1NQRUMpOiBBbHdheXMgcGFzcyAtbWFjb3N4X3ZlcnNpb25fbWluCgl0byBsaW5rZXIuCgkoREFSV0lOX0VYVFJBX1NQRUNTKTogQWRkICUoZGFyd2luX21pbnZlcnNpb24pLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IEp1c3QgY2FsbAoJZGFyd2luX3JzNjAwMF9vdmVycmlkZV9vcHRpb25zLgoJKENfQ09NTU9OX09WRVJSSURFX09QVElPTlMpOiBFeHBlY3QKCWRhcndpbl9tYWNvc3hfdmVyc2lvbl9taW4gdG8gYmUgbm9uLU5VTEwgYWx3YXlzLgoJKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogTGlrZXdpc2UuCgkoQ0MxX1NQRUMpOiBBbHdheXMgcGFzcyAtbW1hY29zeC12ZXJzaW9uLW1pbiB0byBjYzEqLgoJKERBUldJTl9NSU5WRVJTSU9OX1NQRUMpOiBOZXcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGRhcndpbl9yczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IE5ldy4KCSogY29uZmlnL2kzODYvZGFyd2luLmggKENDMV9TUEVDKTogQWx3YXlzIHBhc3MgLW1tYWNvc3gtdmVyc2lvbi1taW4KCXRvIGNjMSouCgkoREFSV0lOX01JTlZFUlNJT05fU1BFQyk6IE5ldy4KCSogY29uZmlnL2Rhcndpbi5vcHQgKG1tYWNvc3gtdmVyc2lvbi1taW4pOiBJbml0aWFsaXplIHRvIG5vbi1OVUxMCgl2YWx1ZS4KCSogY29uZmlnL2Rhcndpbi1jLmMgKGRhcndpbl9jcHBfYnVpbHRpbnMpOiBFeHBlY3QKCWRhcndpbl9tYWNvc3hfdmVyc2lvbl9taW4gdG8gYmUgbm9uLU5VTEwgYWx3YXlzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogQ2xlYW4gdXAgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCjIwMDctMDItMTYgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKHg4Nl91c2VfeGNoZ2IpOiBOZXcuCgkoVEFSR0VUX1VTRV9YQ0hHQik6IE5ldyBtYWNyby4KCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfdXNlX3hjaGdiKTogU2V0IGZvciBQRU5UNC4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKnJvdGxoaTNfMSBzcGxpdHRlciwgKnJvdHJoaTNfMSBzcGxpdHRlcik6CglTcGxpdCBhZnRlciByZWxvYWQgaW50byBic3dhcGhpIGZvciBzaGlmdHMgb2YgOC4KCShic3dhcGhpX2xvd3BhcnQpOiBHZW5lcmF0ZSByb2x3IGluc24gZm9yIEhJbW9kZSBieXRlIHN3YXBzLgoJKCpic3dhcGhpX2xvd3BhcnRfMSk6IEdlbmVyYXRlIHhjaGdiIGZvciBRIHJlZ2lzdGVycyBmb3IgVEFSR0VUX1hDSEdCCglvciB3aGVuIG9wdGltaXppbmcgZm9yIHNpemUuCgoyMDA3LTAyLTE2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgkgICAgQ2hyaXN0aWFuIEJydWVsICA8Y2hyaXN0aWFuLmJydWVsQHN0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9zd2FwX29wZXJhbmRzX3ApOiBUcmVhdCBTU0FfTkFNRXMgbGlrZQoJREVDTHMgYnV0IHByZWZlciBTU0FfTkFNRXMgb3ZlciBERUNMcy4KCjIwMDctMDItMTYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoc2luZ2xlX2ltbV91c2VfcCk6IFJlbW92ZS4KCSh6ZXJvX2ltbV91c2VzX3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY29hbGVzY2UuYyAoY3JlYXRlX291dG9mc3NhX3Zhcl9tYXApOiBVc2UgaGFzX3NpbmdsZV91c2UKCWluc3RlYWQgb2Ygc2luZ2xlX2ltbV91c2VfcC4KCSogdHJlZS1jZmcuYyAocmVwbGFjZV91c2VzX2J5KTogVXNlIGhhc196ZXJvX3VzZSBpbnN0ZWFkIG9mCgl6ZXJvX2ltbV91c2VzX3AuCgoyMDA3LTAyLTE2ICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgoKCVBSIG90aGVyLzI3ODQzCgkqIE1ha2VmaWxlLmluIChTWVNURU1fSEVBREVSX0RJUik6IFVzZSBzaW5nbGUgcXVvdGVzIHRvIGF2b2lkCgluZXN0ZWQgZG91YmxlLSBhbmQgYmFja3F1b3Rlcy4KCjIwMDctMDItMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMzAzOTEKCSogdHJlZS5jIChleHByX2FsaWduKTogSGFuZGxlIE1PRElGWV9FWFBSLiAgR0lNUExFX01PRElGWV9TVE1UCglzaG91bGQgYmUgdW5yZWFjaGFibGUuCgkoYnVpbGQyX3N0YXQpOiBBbGxvdyBjb25zdHJ1Y3Rpb24gb2YgTU9ESUZZX0VYUFIgYXQgYW55IHRpbWUuCglGb3IgdGhlIHRpbWUgYmVpbmcgcmVkaXJlY3QgR0lNUExFX01PRElGWV9TVE1UIHRvIHRoZSBuZXcKCShyZW5hbWVkKSBidWlsZF9naW1wbGVfbW9kaWZ5X3N0bXRfc3RhdC4KCShidWlsZDJfZ2ltcGxlX3N0YXQpOiBSZW5hbWUgdG8uLi4KCShidWlsZF9naW1wbGVfbW9kaWZ5X3N0bXRfc3RhdCk6IE5vdyBsb25nZXIgdGFrZSBhIENPREUgYXJndW1lbnQuCglBbHdheXMgYnVpbGQgYSBHSU1QTEVfTU9ESUZZX1NUTVQgbm9kZS4KCSogdHJlZS5oIChidWlsZDJfZ2ltcGxlLCBidWlsZDJfZ2ltcGxlX3N0YXQpOiBEZWxldGUuCgkoYnVpbGRfZ2ltcGxlX21vZGlmeV9zdG10LCBidWlsZF9naW1wbGVfbW9kaWZ5X3N0bXRfc3RhdCk6IE5ldwoJZGVjbGFyYXRpb25zLgoKCSogdHJlZS1jZmcuYyAoZmFjdG9yX2NvbXB1dGVkX2dvdG9zLCB0cmVlX21lcmdlX2Jsb2NrcywKCWdpbXBsaWZ5X3ZhbCk6IFVzZSBidWlsZF9naW1wbGVfbW9kaWZ5X3N0bXQgaW5zdGVhZCBvZiBidWlsZDJfZ2ltcGxlLgoJKiB0cmVlLWNvbXBsZXguYyAoc2V0X2NvbXBvbmVudF9zc2FfbmFtZSwgZXhwYW5kX2NvbXBsZXhfbW92ZSwKCWV4cGFuZF9jb21wbGV4X2Rpdl93aWRlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jIChyZWNvcmRfZXF1aXZhbGVuY2VzX2Zyb21fc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKHNjaGVkdWxlX3NtKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHJld3JpdGVfdXNlX25vbmxpbmVhcl9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAoY3JlYXRlX2l2KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXBoaW9wdC5jIChjb25kaXRpb25hbF9yZXBsYWNlbWVudCwgbWlubWF4X3JlcGxhY2VtZW50LAoJYWJzX3JlcGxhY2VtZW50KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXByZS5jIChjcmVhdGVfZXhwcmVzc2lvbl9ieV9waWVjZXMsIHBvb2xpZnlfbW9kaWZ5X3N0bXQsCglyZWFsaWZ5X2Zha2Vfc3RvcmVzKTogTGlrZXdpc2UuCgoJKiBidWlsdGlucy5jIChzdGRfZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBCdWlsZCBhIE1PRElGWV9FWFBSCglub2RlIHJhdGhlciB0aGFuIGEgR0lNUExFX01PRElGWV9TVE1UIG5vZGUuCgkoc3RkX2dpbXBpZnlfdmFfYXJnX2V4cHIsIGV4cGFuZF9idWlsdGluX3ZhX2NvcHksCglmb2xkX2J1aWx0aW5fbWVtc2V0LCBmb2xkX2J1aWx0aW5fbWVtb3J5X29wLCBkb19tcGZyX3NpbmNvcyk6CglMaWtld2lzZS4KCShpbnRlZ2VyX3ZhbHVlZF9yZWFsX3ApOiBIYW5kbGUgTU9ESUZZX0VYUFIsIG5vdCBHSU1QTEVfTU9ESUZZX1NUTVQuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogSGFuZGxlIGJvdGggTU9ESUZZX0VYUFIgYW5kCglHSU1QTEVfTU9ESUZZX1NUTVQuCgoyMDA3LTAyLTE1ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwNDMzCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb21wYXJpc29uKTogQWRkIGJhY2sgdGhlCglmb2xkaW5nIG9mIGNvbnN0YW50IGNvbXBsZXggY29tcGFyaXNpb25zLgoKMjAwNy0wMi0xNSAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMDcyOQoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogVkFfQVJHX0VYUFIgaGFzIHNpZGUKCWVmZmVjdHMgdW5rbm93biB0byB0aGlzIGZ1bmN0aW9uLCByZXR1cm4gZWFybHkuCgoyMDA3LTAyLTE1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogbG93ZXItc3VicmVnLmMgKG1vdmVfZWhfcmVnaW9uX25vdGUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHJlc29sdmVfc2ltcGxlX21vdmUpOiBDYWxsIGl0LgoJKGRlY29tcG9zZV9tdWx0aXdvcmRfc3VicmVncyk6IFRyYWNrIGJsb2NrcyBmb3Igd2hpY2ggd2UgcmVzb2x2ZSBhCglzaW1wbGUgbW92ZSB3aGljaCBpcyBhbHNvIGEgY29udHJvbCBmbG93IGluc24uICBQYXNzIHRoZW0gdG8KCWZpbmRfbWFueV9zdWJfYmFzaWNfYmxvY2tzLgoJKHBhc3NfbG93ZXJfc3VicmVnKTogQWRkIFRPRE9fdmVyaWZ5X2Zsb3cuCgkocGFzc19sb3dlcl9zdWJyZWcyKTogTGlrZXdpc2UuCgoyMDA3LTAyLTE1ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKGVudW0gdHJlZV9jb2RlX2NsYXNzKTogQWRkIHRjY192bF9leHAuCgkoVkxfRVhQX0NMQVNTX1ApOiBOZXcuCgkoVFJFRV9PUEVSQU5EX0NIRUNLKTogVXNlIFRSRUVfT1BFUkFORF9MRU5HVEggaW5zdGVhZCBvZgoJVFJFRV9DT0RFX0xFTkdUSC4KCShUUkVFX09QRVJBTkRfQ0hFQ0tfQ09ERSk6IExpa2V3aXNlLgoJKEdJTVBMRV9TVE1UX09QRVJBTkRfQ0hFQ0spOiBMaWtld2lzZS4KCShUUkVFX1JUTF9PUEVSQU5EX0NIRUNLKTogTGlrZXdpc2UuCgkodHJlZV9vcGVyYW5kX2NoZWNrX2ZhaWxlZCk6IE1ha2Ugc2Vjb25kIHBhcmFtZXRlciB0aGUgd2hvbGUgdHJlZQoJaW5zdGVhZCBvZiBpdHMgY29kZS4gIEZpeGVkIGNhbGxlcnMuCgkoVkxfRVhQX0NIRUNLKTogTmV3LgoJKFRSRUVfT1BFUkFORF9MRU5HVEgpOiBOZXcuCgkoVkxfRVhQX09QRVJBTkRfTEVOR1RIKTogTmV3LgoJKENBTExfRVhQUl9GTik6IE5ldy4KCShDQUxMX0VYUFJfU1RBVElDX0NIQUlOKTogTmV3LgoJKENBTExfRVhQUl9BUkdTKTogTmV3LgoJKENBTExfRVhQUl9BUkcpOiBOZXcuCgkoY2FsbF9leHByX25hcmdzKTogTmV3LgoJKENBTExfRVhQUl9BUkdQKTogTmV3LgoJKGJ1aWxkX250X2NhbGxfbGlzdCk6IERlY2xhcmUuCgkoYnVpbGRfdmxfZXhwX3N0YXQpOiBEZWNsYXJlLgoJKGJ1aWxkX3ZsX2V4cCk6IE5ldy4KCShidWlsZF9jYWxsX2xpc3QpOiBEZWNsYXJlLgoJKGJ1aWxkX2NhbGxfbmFyeSk6IERlY2xhcmUuCgkoYnVpbGRfY2FsbF92YWxpc3QpOiBEZWNsYXJlLgoJKGJ1aWxkX2NhbGxfYXJyYXkpOiBEZWNsYXJlLgoJKGNhbGxfZXhwcl9hcmcpOiBEZWNsYXJlLgoJKGNhbGxfZXhwcl9hcmdwKTogRGVjbGFyZS4KCShjYWxsX2V4cHJfYXJnbGlzdCk6IERlY2xhcmUuCgkoZm9sZF9idWlsZF9jYWxsX2xpc3QpOiBEZWNsYXJlLgoJKGZvbGRfYnVpbGRfY2FsbF9saXN0X2luaXRpYWxpemVyKTogRGVjbGFyZS4KCShmb2xkX2NhbGxfZXhwcik6IERlY2xhcmUgdG8gcmVwbGFjZSBmb2xkX2J1aWx0aW4uCgkoZm9sZF9idWlsdGluX2ZwdXRzKTogVXBkYXRlIHRvIGFncmVlIHdpdGggbW9kaWZpZWQgZGVmaW5pdGlvbi4KCShmb2xkX2J1aWx0aW5fc3RyY3B5KTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cm5jcHkpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fbWVtb3J5X2Noayk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zdHhjcHlfY2hrKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cm5jcHlfY2hrKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX25leHRfYXJnKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsZF9jYWxsX2V4cHIpOiBEZWNsYXJlLgoJKGZvbGRfYnVpbHRpbl9jYWxsX2xpc3QpOiBEZWNsYXJlLgoJKGZvbGRfYnVpbHRpbl9jYWxsX3ZhbGlzdCk6IERlY2xhcmUuCgkoYnVpbGRfY2FsbF9leHByKTogRGVjbGFyZS4KCSh2YWxpZGF0ZV9hcmdsaXN0KTogVXBkYXRlIHRvIGFncmVlIHdpdGggbW9kaWZpZWQgZGVmaW5pdGlvbi4KCSh0cmVlX29wZXJhbmRfbGVuZ3RoKTogTmV3LgoJKGNhbGxfZXhwcl9hcmdfaXRlcmF0b3IpOiBOZXcuCgkoaW5pdF9jYWxsX2V4cHJfYXJnX2l0ZXJhdG9yKTogTmV3LgoJKG5leHRfY2FsbF9leHByX2FyZyk6IE5ldy4KCShmaXJzdF9jYWxsX2V4cHJfYXJnKTogTmV3LgoJKG1vcmVfY2FsbF9leHByX2FyZ3NfcCk6IE5ldy4KCShGT1JfRUFDSF9DQUxMX0VYUFJfQVJHKTogTmV3LgoKCSogdHJlZS5jICh0cmVlX2NvZGVfY2xhc3Nfc3RyaW5nKTogQWRkIGVudHJpZXMgZm9yIHRjY192bF9leHAKCWFuZCB0Y2NfZ2ltcGxlX3N0bXQuCgkodHJlZV9jb2RlX3NpemUpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4gIFVzZSBzaXplb2YgKHRyZWUpIHJhdGhlcgoJdGhhbiBzaXplb2YgKGNoYXIgKikuCgkodHJlZV9zaXplKTogTGlrZXdpc2UuICBBZGQgY2FzZSBmb3IgdGNjX3ZsX2V4cC4KCSh0cmVlX25vZGVfc3RydWN0dXJlKTogQWRkIGNhc2UgZm9yIHRjY192bF9leHAuCgkoY29udGFpbnNfcGxhY2Vob2xkZXJfcCk6IExpa2V3aXNlLgoJKHN1YnN0aXR1dGVfaW5fZXhwcik6IExpa2V3aXNlLgoJKHN1YnN0aXR1dGVfcGxhY2Vob2xkZXJfaW5fZXhwcik6IExpa2V3aXNlLgoJKHN0YWJpbGl6ZV9yZWZlcmVuY2VfMSk6IExpa2V3aXNlLgoJKGJ1aWxkM19zdGF0KTogUmVtb3ZlIGxvZ2ljIGZvciBDQUxMX0VYUFJzLiAgUmVwbGFjZSB3aXRoIGFzc2VydGlvbgoJdG8gZGlhZ25vc2UgYnJlYWthZ2Ugb2YgdGhpcyBpbnRlcmZhY2UgZm9yIGNvbnN0cnVjdGluZyBDQUxMX0VYUFJzLgoJKGJ1aWxkX250KTogQWRkIHNpbWlsYXIgYXNzZXJ0aW9uIGhlcmUuCgkoYnVpbGRfbnRfY2FsbF9saXN0KTogTmV3LgoJKHNpbXBsZV9jc3RfZXF1YWwpIDxDQUxMX0VYUFI+OiBSZXdyaXRlIHRvIHVzZSBuZXcgYWNjZXNzb3JzLgoJKGl0ZXJhdGl2ZV9oYXNoX2V4cHIpOiBVc2UgVFJFRV9PUEVSQU5EX0xFTkdUSCBpbnN0ZWFkIG9mCglUUkVFX0NPREVfTEVOR1RILgoJKGdldF9jYWxsZWVfZm5kZWNsKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoJKHRyZWVfb3BlcmFuZF9jaGVja19mYWlsZWQpOiBDaGFuZ2UgcGFyYW1ldGVycyB0byBwYXNzIGVudGlyZSBub2RlCglpbnN0ZWFkIG9mIGl0cyBjb2RlLCBzbyB0aGF0IHdlIGNhbiBjYWxsIFRSRUVfT1BFUkFORF9MRU5HVEggb24gaXQuCgkocHJvY2Vzc19jYWxsX29wZXJhbmRzKTogTmV3LgoJKGJ1aWxkX3ZsX2V4cF9zdGF0KTogTmV3LgoJKGJ1aWxkX2NhbGxfbGlzdCk6IE5ldy4KCShidWlsZF9jYWxsX25hcnkpOiBOZXcuCgkoYnVpbGRfY2FsbF92YWxpc3QpOiBOZXcuCgkoYnVpbGRfY2FsbF9hcnJheSk6IE5ldy4KCSh3YWxrX3RyZWUpOiBVc2UgVFJFRV9PUEVSQU5EX0xFTkdUSCBpbnN0ZWFkIG9mIFRSRUVfQ09ERV9MRU5HVEguCgkoY2FsbF9leHByX2FyZ2xpc3QpOiBOZXcuCgoJKiB0cmVlLmRlZiAoQ0FMTF9FWFBSKTogQ2hhbmdlIHJlcHJlc2VudGF0aW9uIG9mIENBTExfRVhQUnMgdG8gdXNlCgl0Y2NfdmxfZXhwIGluc3RlYWQgb2YgYSBmaXhlZC1zaXplIHRjY19leHByZXNzaW9uLgoKCSogZG9jL2MtdHJlZS50ZXhpIChDQUxMX0VYUFIpOiBEb2N1bWVudCBuZXcgcmVwcmVzZW50YXRpb24gYW5kCglhY2Nlc3NvcnMgZm9yIENBTExfRVhQUnMuCgkoQUdHUl9JTklUX0VYUFIpOiBMaWtld2lzZS4KCjIwMDctMDItMTUgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGNfc3RybGVuKTogUmV0dXJuIE5VTExfVFJFRSBpbnN0ZWFkIG9mIDAuCgkoZXhwYW5kX2J1aWx0aW5fbm9ubG9jYWxfZ290byk6IENoYW5nZSBwYXJhbWV0ZXIgdG8gYmUgZW50aXJlCglDQUxMX0VYUFIgaW5zdGVhZCBvZiBhbiBhcmdsaXN0LiAgVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoJKGV4cGFuZF9idWlsdGluX3ByZWZldGNoKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fY2xhc3NpZnlfdHlwZSk6IExpa2V3aXNlLgoJKG1hdGhmbl9idWlsdF9pbik6IFJldHVybiBOVUxMX1RSRUUgaW5zdGVhZCBvZiAwLgoJKGV4cGFuZF9lcnJub19jaGVjayk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCShleHBhbmRfYnVpbHRpbl9tYXRoZm4pOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMgYW5kIGNvbnN0cnVjdG9ycy4KCVJldHVybiBOVUxMX1JUWCBpbnN0ZWFkIG9mIDAuCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tYXRoZm5fMyk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2ludGVyY2xhc3NfbWF0aGZuKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc2luY29zKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fY2V4cGkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9pbnRfcm91bmRpbmdmbik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuXzIpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9wb3cpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9wb3dpKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogUGFzcyBlbnRpcmUgQ0FMTF9FWFBSIGFzIHBhcmFtZXRlciBpbnN0ZWFkCglvZiBhcmdsaXN0LCBmaXhpbmcgY2FsbGVycyBhcHByb3ByaWF0ZWx5LiAgVXNlIG5ldyBDQUxMX0VYUFIKCWFjY2Vzc29ycyBhbmQgY29uc3RydWN0b3JzLiAgUmV0dXJuIE5VTExfUlRYIGluc3RlYWQgb2YgMC4KCShleHBhbmRfYnVpbHRpbl9zdHJzdHIpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJjaHIpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJyY2hyKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RycGJyayk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX21lbWNweSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX21lbXBjcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1wY3B5X2FyZ3MpOiBOZXcuCgkoZXhwYW5kX2J1aWx0aW5fbWVtbW92ZSk6IFNpbWlsYXJseSB0byBleHBhbmRfYnVpbHRpbl9tZW1wY3B5LgoJKGV4cGFuZF9idWlsdGluX21lbW1vdmVfYXJncyk6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9iY29weSk6IFNpbWlsYXJseSB0byBleHBhbmRfYnVpbHRpbl9tZW1wY3B5LgoJKGV4cGFuZF9tb3ZzdHIpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJjcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJjcHlfYXJncyk6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9zdHBjcHkpOiBTaW1pbGFybHkgdG8gZXhwYW5kX2J1aWx0aW5fc3RyY3B5LgoJKGV4cGFuZF9idWlsdGluX3N0cm5jcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1zZXQpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1zZXRfYXJncyk6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9iemVybyk6IFNpbWlsYXJseSB0byBleHBhbmRfYnVpbHRpbl9tZW1zZXQuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY21wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RybmNtcCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cmNhdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jYXQpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJzcG4pOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJjc3BuKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fYXJnc19pbmZvKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBMaWtld2lzZS4KCShnaW1wbGlmeV92YV9hcmdfZXhwcik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3ZhX2VuZCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3ZhX2NvcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9mcmFtZV9hZGRyZXNzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fYWxsb2NhKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fYnN3YXApOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl91bm9wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fZnB1dHMpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9leHBlY3QpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9mYWJzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fY29weXNpZ24pOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9wcmludGYpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9mcHJpbnRmKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3ByaW50Zik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2luaXRfdHJhbXBvbGluZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3NpZ25iaXQpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9mb3JrX29yX2V4ZWMpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zeW5jX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2NvbXBhcmVfYW5kX3N3YXApOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9sb2NrX3Rlc3RfYW5kX3NldCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2xvY2tfcmVsZWFzZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9tYXRoZm5fY29kZSk6IExpa2V3aXNlLgoKCShmb2xkX2J1aWx0aW5fY29uc3RhbnRfcCk6IFBhc3MgY2FsbCBhcmd1bWVudHMgaW5kaXZpZHVhbGx5IGluc3RlYWQKCW9mIGFzIGFuIGFyZ2xpc3QsIGZpeGluZyBjYWxsZXJzIGFwcHJvcHJpYXRlbHkuICBVc2UgbmV3IENBTExfRVhQUgoJYWNjZXNzb3JzIGFuZCBjb25zdHJ1Y3RvcnMuICBSZXR1cm4gTlVMTF9UUkVFIGluc3RlYWQgb2YgMC4KCShmb2xkX2J1aWx0aW5fZXhwZWN0KTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2NsYXNzaWZ5X3R5cGUpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc3RybGVuKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX25hbik6IExpa2V3aXNlLgoJKGludGVnZXJfdmFsdWVkX3JlYWxfcCk6IExpa2V3aXNlLgoJKGZvbGRfdHJ1bmNfdHJhbnNwYXJlbnRfbWF0aGZuKTogTGlrZXdpc2UuCgkoZm9sZF9maXhlZF9tYXRoZm4pOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fY2Ficyk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zcXJ0KTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2NicnQpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fY29zKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2Nvc2gpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fdGFuKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3NpbmNvcyk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9jZXhwKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3RydW5jKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2Zsb29yKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2NlaWwpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fcm91bmQpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5faW50X3JvdW5kaW5nZm4pOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fYml0b3ApOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fYnN3YXApOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fbG9nYXJpdGhtKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2h5cG90KTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3Bvdyk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9wb3dpKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2V4cG9uZW50KTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX21lbXNldCk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9iemVybyk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9tZW1vcnlfb3ApOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fYmNvcHkpOiBEZWxldGVkOyBjYWxsIHNpdGUgY2hhbmdlZCB0byBpbnZva2UKCWZvbGRfYnVpbHRpbl9tZW1vcnlfb3AgZGlyZWN0bHkuCgkoZm9sZF9idWlsdGluX3N0cmNweSk6IFNpbWlsYXJseSBhcyBmb3IgZm9sZF9idWlsdGluX21lbW9yeV9vcC4KCShmb2xkX2J1aWx0aW5fc3RybmNweSk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9tZW1jbXApOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc3RyY21wKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cm5jbXApOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc2lnbmJpdCk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9jb3B5c2lnbik6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9pc2FzY2lpKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3RvYXNjaWkpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5faXNkaWdpdCk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9mYWJzKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2Ficyk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9mbWluX2ZtYXgpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fY2FyZyk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9jbGFzc2lmeSk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl91bm9yZGVyZWRfY21wKTogTGlrZXdpc2UuCgoJKGZvbGRfYnVpbHRpbl8wLCBmb2xkX2J1aWx0aW5fMiwgZm9sZF9idWlsdGluXzMsIGZvbGRfYnVpbHRpbl80KToKCU5ldyBmdW5jdGlvbnMgc3BsaXQgb3V0IGZyb20gZm9sZF9idWlsdGluXzEuCgkoZm9sZF9idWlsdGluX24pOiBOZXcuCgkoZm9sZF9idWlsdGluX3ZhcmFyZ3MpOiBOZXcuCgkoZm9sZF9idWlsdGluKTogRGVsZXRlZC4gIE1vc3QgY2FsbGVycyBjaGFuZ2VkIHRvIHVzZSBmb2xkX2NhbGxfZXhwcgoJaW5zdGVhZC4KCShmb2xkX2NhbGxfZXhwcik6IE5ldy4KCShidWlsZF9mdW5jdGlvbl9jYWxsX2V4cHIpOiBSZXdyaXRlIHRvIHVzZSBuZXcgaGVscGVyIGZ1bmN0aW9uLgoJKGZvbGRfYnVpbHRpbl9jYWxsX2xpc3QpOiBOZXcuCgkoYnVpbGRfY2FsbF9leHByKTogTmV3LgoJKGZvbGRfYnVpbHRpbl9jYWxsX3ZhbGlzdCk6IE5ldy4KCShyZXdyaXRlX2NhbGxfZXhwcik6IE5ldy4KCSh2YWxpZGF0ZV9hcmcpOiBOZXcuCgkodmFsaWRhdGVfYXJnbGlzdCk6IENoYW5nZSBwYXJhbWV0ZXIgdG8gYmUgZW50aXJlIENBTExfRVhQUiBpbnN0ZWFkCglvZiBhbiBhcmdsaXN0LiAgQ2hhbmdlIHJldHVybiB0eXBlIHRvIGJvb2wuICBVc2UgbmV3IENBTExfRVhQUgoJYWNjZXNzb3JzLgoKCShmb2xkX2J1aWx0aW5fc3Ryc3RyKTogUGFzcyBjYWxsIGFyZ3VtZW50cyBpbmRpdmlkdWFsbHkgaW5zdGVhZAoJb2YgYXMgYW4gYXJnbGlzdCwgZml4aW5nIGNhbGxlcnMgYXBwcm9wcmlhdGVseS4gIFVzZSBuZXcgQ0FMTF9FWFBSCglhY2Nlc3NvcnMgYW5kIGNvbnN0cnVjdG9ycy4gIFJldHVybiBOVUxMX1RSRUUgaW5zdGVhZCBvZiAwLgoJKGZvbGRfYnVpbHRpbl9zdHJjaHIpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc3RycmNocik6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zdHJwYnJrKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cmNhdCk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zdHJuY2F0KTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cnNwbik6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zdHJjc3BuKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2ZwdXRzKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX25leHRfYXJnKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3NwcmludGYpOiBMaWtld2lzZS4KCgkoZXhwYW5kX2J1aWx0aW5fb2JqZWN0X3NpemUpOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuICBVc2UKCU5VTExfUlRYIGluc3RlYWQgb2YgMC4KCShleHBhbmRfYnVpbHRpbl9tZW1vcnlfY2hrKTogTGlrZXdpc2UuCgkobWF5YmVfZW1pdF9jaGtfd2FybmluZyk6IExpa2V3aXNlLgoJKG1heWJlX2VtaXRfc3ByaW50Zl9jaGtfd2FybmluZyk6IExpa2V3aXNlLgoKCShmb2xkX2J1aWx0aW5fb2JqZWN0X3NpemUpOiBQYXNzIGNhbGwgYXJndW1lbnRzIGluZGl2aWR1YWxseSBpbnN0ZWFkCglvZiBhcyBhbiBhcmdsaXN0LCBmaXhpbmcgY2FsbGVycyBhcHByb3ByaWF0ZWx5LiAgVXNlIG5ldyBDQUxMX0VYUFIKCWFjY2Vzc29ycyBhbmQgY29uc3RydWN0b3JzLiAgUmV0dXJuIE5VTExfVFJFRSBpbnN0ZWFkIG9mIDAuCgkoZm9sZF9idWlsdGluX21lbW9yeV9jaGspOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc3R4Y3B5X2Noayk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zdHJuY3B5X2Noayk6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl9zdHJjYXRfY2hrKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3N0cmNhdF9jaGspOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc3RybmNhdF9jaGspOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc3ByaW50Zl9jaGspOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fc25wcmludGZfY2hrKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX3ByaW50Zik6IExpa2V3aXNlLgoJKGZvbGRfYnVpbHRpbl92cHJpbnRmKTogTGlrZXdpc2UuCgoJKiBmb2xkLWNvbnN0LmMgKG5lZ2F0ZV9leHByX3ApOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMgYW5kCgljb25zdHJ1Y3RvcnMuCgkob3BlcmFuZF9lcXVhbF9wKTogQWRkIHNlcGFyYXRlIHRjY192bF9leHAvQ0FMTF9FWFBSIGNhc2UuCgkobWFrZV9yYW5nZSk6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YgVFJFRV9DT0RFX0xFTkdUSC4KCShleHRyYWN0X211bGRpdl8xKTogQWRkIFZMX0VYUF9DTEFTU19QIGNhc2UuCgkoZm9sZF9tYXRoZm5fY29tcGFyZSk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycyBhbmQgY29uc3RydWN0b3JzLgoJKGZvbGRfdW5hcnkpOiBMaWtld2lzZS4KCShmb2xkX2JpbmFyeSk6IExpa2V3aXNlLgoJKGZvbGRfdGVybmFyeSk6IFJlbW92ZSBDQUxMX0VYUFIgY2FzZSwgc2luY2UgdGhleSBhcmUgbm8gbG9uZ2VyCgl0ZXJuYXJ5IGV4cHJlc3Npb25zLgoJKGZvbGQpOiBBZGQgbG9naWMgZm9yIHRjY192bF9leHAuCgkoZm9sZF9jaGVja3N1bV90cmVlKTogTWFrZSBpdCBrbm93IGFib3V0IHRjY192bF9leHAuICBVc2UKCVRSRUVfT1BFUkFORF9MRU5HVEggaW5zdGVhZCBvZiBUUkVFX0NPREVfTEVOR1RILgoJKGZvbGRfYnVpbGQzX3N0YXQpOiBBZGQgYXNzZXJ0aW9uIHRvIGZsYWcgYnJva2VuIGludGVyZmFjZSBmb3IKCWNvbnN0cnVjdGluZyBDQUxMX0VYUFJzLgoJKGZvbGRfYnVpbGRfY2FsbF9saXN0KTogTmV3LgoJKGZvbGRfYnVpbGRfY2FsbF9saXN0X2luaXRpYWxpemVyKTogTmV3LgoJKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzIGFuZAoJY29uc3RydWN0b3JzLgoJKGZvbGRfc3RyaXBfc2lnbl9vcHMpOiBMaWtld2lzZS4KCjIwMDctMDItMTUgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKSA8Q0FMTF9FWFBSPjogVXNlIG5ldyBDQUxMX0VYUFIKCWFjY2Vzc29ycyBhbmQgZHVtcCBhcmd1bWVudHMgZXhwbGljaXRseS4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGRvX25peSk6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YKCVRSRUVfQ09ERV9MRU5HVEguCgkoZHVtcF9nZW5lcmljX25vZGUpOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMgYW5kIHdhbGsgYXJndW1lbnRzCglleHBsaWNpdGx5LgoJKHByaW50X2NhbGxfbmFtZSk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IEFkZCBjYXNlIHRjY192bF9leHAuICBQcmludAoJQ0FMTF9FWFBSIGFyZ3VtZW50cyBleHBsaWNpdGx5IGluc3RlYWQgb2YgYXMgYSBsaXN0LiAgVXNlCglUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YgVFJFRV9DT0RFX0xFTkdUSC4KCgkqIHRyZWUtdnJwLmMgKHN0bXRfaW50ZXJlc3RpbmdfZm9yX3ZycCk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCSh2cnBfdmlzaXRfc3RtdCk6IExpa2V3aXNlLgoKCSogdHJlZS1zc2EtbG9vcC1pbS5jIChvdXRlcm1vc3RfaW52YXJpYW50X2xvb3BfZXhwcik6IE1ha2UgaXQKCWtub3cgYWJvdXQgdGNjX3ZsX2V4cC4gIFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YKCVRSRUVfQ09ERV9MRU5HVEguCgkoZm9yY2VfbW92ZV90aWxsX2V4cHIpOiBMaWtld2lzZS4KCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X2V4dGVybmFsX3N0YWNrX3Byb3RlY3RfZmFpbCk6IFVzZQoJYnVpbGRfY2FsbF9leHByIGluc3RlYWQgb2YgYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByLgoJKGRlZmF1bHRfaGlkZGVuX3N0YWNrX3Byb3RlY3RfZmFpbCk6IExpa2V3aXNlLgoKCSogdHJlZS1jb21wbGV4LmMgKGV4cGFuZF9jb21wbGV4X2xpYmNhbGwpOiBVc2UgYnVpbGRfY2FsbF9leHByIHRvCglidWlsZCB0aGUgY2FsbC4KCgkqIGNncmFwaGJ1aWxkLmMgKGJ1aWxkX2NncmFwaF9lZGdlcyk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycwoJYW5kIHdhbGsgYXJndW1lbnRzIGV4cGxpY2l0bHkuCgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHNpbXBsaWZ5X3JlcGxhY2VfdHJlZSk6IFVzZQoJVFJFRV9PUEVSQU5EX0xFTkdUSCBpbnN0ZWFkIG9mIFRSRUVfQ09ERV9MRU5HVEguCgkoZXhwYW5kX3NpbXBsZV9vcGVyYXRpb25zKTogTGlrZXdpc2UuCgkoaW5mZXJfbG9vcF9ib3VuZHNfZnJvbV9hcnJheSk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF90cmVlX2V4cCk6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQKCW9mIFRSRUVfQ09ERV9MRU5HVEguCgkod2Fsa190eXBlKTogVHdlYWsgd2Fsa2luZyBvZiBhcnJheXMgbm90IHRvIGJsb3cgdXAgb24gQ0FMTF9FWFBScy4KCgkqIG9wdGFicy5jIChleHBhbmRfd2lkZW5fcGF0dGVybi1leHByKTogVXNlIFRSRUVfT1BFUkFORF9MRU5HVEgKCWluc3RlYWQgb2YgVFJFRV9DT0RFX0xFTkdUSC4KCgkqIHZhbHVlX3Byb2YuYyAodHJlZV9pYyk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCSh0cmVlX2ljX3RyYW5zZm9ybSk6IExpa2V3aXNlLgoJKGludGVyZXN0aW5nX3N0cmluZ29wX3RvX3Byb2ZpbGVfcCk6IFBhc3MgZW50aXJlIENBTExfRVhQUiBhcwoJcGFyYW1ldGVyIGluc3RlYWQgb2YgYXJnbGlzdC4gIEZpeCBjYWxsZXJzLgoJKHRyZWVfc3RyaW5nb3BfZml4ZWRfdmFsdWUpOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuCgkodHJlZV9zdHJpbmdvcHNfdHJhbnNmb3JtKTogTGlrZXdpc2UuCgkodHJlZV9pbmRpcmVjdF9jYWxsX3RvX3Byb2ZpbGUpOiBMaWtld2lzZS4KCSh0cmVlX3N0cmluZ29wc192YWx1ZXNfdG9fcHJvZmlsZSk6IExpa2V3aXNlLgoKCSogdHJlZS10YWlsY2FsbC5jIChmaW5kX3RhaWxfY2FsbHMpOiBVc2UgbmV3IENBTExfRVhQUiBpdGVyYXRvci4KCShlbGltaW5hdGVfdGFpbF9jYWxsKTogTGlrZXdpc2UuCgoJKiBpcGEtY3AuYyAoaXBjcF91cGRhdGVfY2FsbGdyYXBoKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoKCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGNocmVjX2NvbnRhaW5zX3N5bWJvbHNfZGVmaW5lZF9pbl9sb29wKToKCVVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGFuZCBnZW5lcmFsaXplIHRvIGhhbmRsZSBhbnkgbnVtYmVyIG9mCglvcGVyYW5kcy4KCShpbnN0YW50aWF0ZV9wYXJhbWV0ZXJzXzEpOiBDYW4ndCBoYW5kbGUgdGNjX3ZsX2V4cCBoZXJlLgoKCSogb21wLWxvdy5jIChidWlsZF9vbXBfYmFycmllcik6IFVzZSBidWlsZF9jYWxsX2V4cHIuCgkobG93ZXJfcmVjX2lucHV0X2NsYXVzZXMpOiBMaWtld2lzZS4KCShsb3dlcl9yZWR1Y3Rpb25fY2xhdXNlcyk6IExpa2V3aXNlLgoJKGV4cGFuZF9wYXJhbGxlbF9jYWxsKTogTGlrZXdpc2UuCgkobWF5YmVfY2F0Y2hfZXhjZXB0aW9uKTogTGlrZXdpc2UuCgkoZXhwYW5kX29tcF9mb3JfZ2VuZXJpYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9vbXBfZm9yX3N0YXRpY19ub2NodW5rKTogTGlrZXdpc2UuCgkoZXhwYW5kX29tcF9zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGxvd2VyX29tcF9zaW5nbGVfc2ltcGxlKTogTGlrZXdpc2UuCgkobG93ZXJfb21wX3NpbmdsZV9jb3B5KTogTGlrZXdpc2UuCgkobG93ZXJfb21wX21hc3Rlcik6IExpa2V3aXNlLgoJKGxvd2VyX29tcF9vcmRlcmVkKTogTGlrZXdpc2UuCgkobG93ZXJfb21wX2NyaXRpY2FsKTogTGlrZXdpc2UuCgoJKiBpcGEtcmVmZXJlbmNlLmMgKGNoZWNrLWNhbGwpOiBVc2UgbmV3IENBTExfRVhQUiBpdGVyYXRvci4KCShzY2FuX2Zvcl9zdGF0aWNfcmVmcyk6IENyZWF0ZSB0Y2NfdmxfZXhwIGNhc2UgZm9yIENBTExfRVhQUi4KCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9jYWxsX2FkZHIpOiBGaXggZG9jLgoJKHJlY2FsY3VsYXRlX3NpZGVfZWZmZWN0cyk6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YKCVRSRUVfQ09ERV9MRU5HVEguICBBZGQgdGNjX3ZsX2V4cCBjYXNlLgoKCSogdHJlZS1jaHJlYy5jIChjaHJlY19jb250YWluc19zeW1ib2xzKTogVXNlIFRSRUVfT1BFUkFORF9MRU5HVEgKCWFuZCBnZW5lcmFsaXplIHRvIGhhbmRsZSBhbnkgbnVtYmVyIG9mIG9wZXJhbmRzLgoJKGNocmVjX2NvbnRhaW5zX3VuZGV0ZXJtaW5lZCk6IExpa2V3aXNlLgoJKHRyZWVfY29udGFpbnNfY2hyZWNzKTogTGlrZXdpc2UuCgkoZXZvbHV0aW9uX2Z1bmN0aW9uX2lzX2ludmFyaWFudF9yZWNfcCk6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RILgoKCSogY2dyYXBodW5pdC5jICh1cGRhdGVfY2FsbF9leHByKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoKCSogdHJlZS1zc2EtY2NwLmMgKGNjcF9mb2xkKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLiAgVXNlCglmb2xkX2NhbGxfZXhwciBpbnN0ZWFkIG9mIGZvbGRfYnVpbHRpbi4KCShjY3BfZm9sZF9idWlsdGluKTogTGlrZXdpc2UuICBVcGRhdGUgY2FsbHMgaW50byBidWlsdGlucy5jIHRvCgltYXRjaCBkZWNsYXJhdGlvbnMgdGhlcmUuCgkoZm9sZF9zdG10KTogVXNlIG5ldyBDQUxMX0VYUFIgY29uc3RydWN0b3IgYW5kIGFjY2Vzc29ycy4gIERvYwoJdXBkYXRlcy4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGV4cHJfaW52YXJpYW50X2luX2xvb3BfcCk6IFVzZQoJVFJFRV9PUEVSQU5EX0xFTkdUSCBpbnN0ZWFkIG9mIFRSRUVfQ09ERV9MRU5HVEguCgoJKiBpcGEtcHVyZS1jb25zdC5jIChjaGVja19jYWxsKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoJKHNjYW5fZnVuY3Rpb24pOiBBZGQgY2FzZSB0Y2NfdmxfZXhwIGZvciBDQUxMX0VYUFIuCgoJKiB0cmVlLXN0ZGFyZy5jIChleGVjdXRlX29wdGltaXplX3N0ZGFyZyk6IFVzZSBuZXcgQ0FMTF9FWFBSCglhY2Nlc3NvcnMuCgoJKiB0cmVlLXNzYS1tYXRoLW9wdHMuYyAoZXhlY3V0ZV9jc2Vfc2luY29zXzEpOiBVc2UgYnVpbGRfY2FsbF9leHByLgoJKGV4ZWN1dGVfY3NlX3NpbmNvcyk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGZpbmRfdXNlZF9wb3J0aW9ucyk6IFVzZSBuZXcgQ0FMTF9FWFBSIGl0ZXJhdG9yLgoKCSogZ2ltcGxlLWxvdy5jIChsb3dlcl9mdW5jdGlvbl9ib2R5KTogVXNlIGJ1aWxkX2NhbGxfZXhwci4KCShsb3dlcl9idWlsdGluX3NldGptcCk6IExpa2V3aXNlLgoKCSogZXhwci5jIChlbWl0X2Jsb2NrX21vdmVfdmlhX2xpYmNhbGwpOiBVc2UgYnVpbGRfY2FsbF9leHByLgoJKHNldF9zdG9yYWdlX3ZpYV9saWJjYWxsKTogTGlrZXdpc2UuCgkoc2FmZV9mcm9tX3ApOiBBZGQgdGNjX3ZsX2V4cCBjYXNlLiAgVXNlIFRSRUVfT1BFUkFORF9MRU5HVEgKCWluc3RlYWQgb2YgVFJFRV9DT0RFX0xFTkdUSC4KCShleHBhbmRfZXhwcl9yZWFsXzEpOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuCgoJKiB0cmVlLWJyb3dzZXIuYyAoc3RvcmVfY2hpbGRfaW5mbyk6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGFuZAoJZ2VuZXJhbGl6ZSB0byBoYW5kbGUgYW55IG51bWJlciBvZiBvcGVyYW5kcy4KCShUQl9wYXJlbnRfZXEpOiBMaWtld2lzZS4KCgkqIHByZWRpY3QuYyAoZXhwcl9leHBlY3RlZF92YWx1ZSk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCShzdHJpcF9idWlsdGluX2V4cGVjdCk6IExpa2V3aXNlLgoKCSogZnVuY3Rpb24uYyAoZ2ltcGxpZnlfcGFyYW1ldGVycyk6IFVzZSBidWlsZF9jYWxsX2V4cHIuCgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9pc19zaW1wbGVfcmVkdWN0aW9uKTogVXNlCglUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YgVFJFRV9DT0RFX0xFTkdUSC4KCgkqIGlwYS10eXBlLWVzY2FwZS5jIChjaGVja19jYWxsKTogVXNlIG5ldyBDQUxMX0VYUFIgaXRlcmF0b3JzLgoJKHNjYW5fZm9yX3JlZnMpOiBBZGQgY2FzZSB0Y2NfdmxfZXhwIGZvciBDQUxMX0VYUFIuCgoJKiB0cmVlLWRhdGEtcmVmLmMgKGdldF9yZWZlcmVuY2VzX2luX3N0bXQpOiBVc2UgbmV3IENBTExfRVhQUgoJaXRlcmF0b3JzLgoKCSogZ2ltcGxpZnkuYyAoYnVpbGRfc3RhY2tfc2F2ZV9yZXN0b3JlKTogVXNlIGJ1aWxkX2NhbGxfZXhwci4KCShnaW1wbGlmeV9kZWNsX2V4cHIpOiBMaWtld2lzZS4KCShnaW1wbGlmeV9jYWxsX2V4cHIpOiBVc2UgZm9sZF9jYWxsX2V4cHIgaW5zdGVhZCBvZiBmb2xkX2J1aWx0aW4uCglVc2UgbmV3IENBTExfRVhQUiBpdGVyYXRvcnMuCgkoZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfdG9fbWVtY3B5KTogVXNlIGJ1aWxkX2NhbGxfZXhwci4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcl90b19tZW1zZXQpOiBMaWtld2lzZS4KCShnaW1wbGlmeV92YXJpYWJsZV9zaXplZF9jb21wYXJlKTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfb21wX2F0b21pY19mZXRjaF9vcCk6IExpa2V3aXNlLgoJKGdpbXBsaWZ5X29tcF9hdG9taWNfcGlwZWxpbmUpOiBMaWtld2lzZS4KCShnaW1wbGlmeV9vbXBfYXRvbWljX211dGV4KTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfZnVuY3Rpb25fdHJlZSk6IExpa2V3aXNlLgoKCSogY2FsbHMuYyAoYWxsb2NhX2NhbGxfcCk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCShjYWxsX2V4cHJfZmxhZ3MpOiBMaWtld2lzZS4KCShleHBhbmRfY2FsbCk6IExpa2V3aXNlLgoKCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX2VoX3JldHVybl9kYXRhX3JlZ25vKTogUGFzcyBlbnRpcmUKCUNBTExfRVhQUiBhcyBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhcmdsaXN0LiAgVXNlIG5ldyBDQUxMX0VYUFIKCWFjY2Vzc29ycy4KCgkqIGNvdmVyYWdlLmMgKGNyZWF0ZV9jb3ZlcmFnZSk6IFVzZSBidWlsZF9jYWxsX2V4cHIuCgoJKiB0cmVlLXNzYS1wcmUuYyAoZXhwcmVzc2lvbl9ub2RlX3Bvb2wsIGxpc3Rfbm9kZV9wb29sKTogRGVsZXRlLgoJKHRlbXBfY2FsbF9leHByX29ic3RhY2spOiBOZXcuCgkocG9vbF9jb3B5X2xpc3QpOiBEZWxldGUuCgkodGVtcF9jb3B5X2NhbGxfZXhwcik6IE5ldy4KCShwaGlfdHJhbnNsYXRlKTogQWRkIGNhc2UgdGNjX3ZsX2V4cCBmb3IgQ0FMTF9FWFBSLiAgVXNlIG5ldwoJQ0FMTF9FWFBSIGFjY2Vzc29ycy4gIEdldCByaWQgb2Ygc3BlY2lhbCBnb28gZm9yIGNvcHlpbmcgYXJndW1lbnQKCWxpc3RzIGFuZCB1c2UgdGVtcF9jb3B5X2NhbGxfZXhwciBpbnN0ZWFkLgoJKHZhbGlkX2luX3NldHMpOiBBZGQgY2FzZSB0Y2NfdmxfZXhwIGZvciBDQUxMX0VYUFIuICBVc2UgbmV3CglDQUxMX0VYUFIgYWNjZXNzb3JzLgoJKGNyZWF0ZV9leHByZXNzaW9uX2J5X3BpZWNlcyk6IExpa2V3aXNlLiAgVXNlIGJ1aWxkX2NhbGxfYXJyYXkKCXRvIGNvbnN0cnVjdCB0aGUgcmVzdWx0IGluc3RlYWQgb2YgZm9sZF9idWlsZDMuCgkoY3JlYXRlX3ZhbHVlX2V4cHJfZnJvbSk6IEFkZCB0Y2NfdmxfZXhwLiAgRGVsZXRlIHNwZWNpYWwgZ29vIGZvcgoJZGVhbGluZyB3aXRoIGFyZ3VtZW50IGxpc3RzLgoJKGluaXRfcHJlKTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZXhwcmVzc2lvbl9ub2RlX3Bvb2wgYW5kCglsaXN0X25vZGVfcG9vbC4gIEluaXQgdGVtcF9jYWxsX2V4cHJfb2JzdGFjayBpbnN0ZWFkLgoJKGZpbmlfcHJlKTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZXhwcmVzc2lvbl9ub2RlX3Bvb2wgYW5kCglsaXN0X25vZGVfcG9vbC4KCgkqIHRyZWUtc3JhLmMgKHNyYV93YWxrX2NhbGxfZXhwcik6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycwoJYW5kIHdhbGsgYXJndW1lbnRzIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiBhcyBhIGxpc3QuCgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfYnVpbGRfY2hlY2tfc3RhdGVtZW50X2Zvcik6IFVzZSBidWlsZF9jYWxsX2V4cHIuCgkobXhfcmVnaXN0ZXJfZGVjbHMpOiBMaWtld2lzZS4KCShtdWRmbGFwX3JlZ2lzdGVyX2NhbGwpOiBMaWtld2lzZS4KCShtdWRmbGFwX2ZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgoJKiBpcGEtcHJvcC5jIChpcGFfY2FsbHNpdGVfY29tcHV0ZV9jb3VudCk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCShpcGFfY2FsbHNpdGVfY29tcHV0ZV9wYXJhbSk6IExpa2V3aXNlLgoKCSogdHJlZS12ZWN0LXBhdHRlcm5zLmMgKHZlY3RfcmVjb2dfcG93X3BhdHRlcm4pOiBVc2UgbmV3IENBTExfRVhQUgoJYWNjZXNzb3JzIGFuZCBjb25zdHJ1Y3Rvci4KCgkqIHRyZWUtbmVzdGVkLmMgKGNvbnZlcnRfbmxfZ290b19yZWZlcmVuY2UpOiBVc2UgbmV3IENBTExfRVhQUgoJYWNjZXNzb3JzIGFuZCBjb25zdHJ1Y3Rvci4KCShjb252ZXJ0X3RyYW1wX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGNvbnZlcnRfY2FsbF9leHByKTogTGlrZXdpc2UuCgkoZmluYWxpemVfbmVzdGluZ190cmVlXzEpOiBMaWtld2lzZS4KCgkqIHRyZWUtc3NhLmMgKHRyZWVfc3NhX3VzZWxlc3NfdHlwZV9jb252ZXJzaW9uKTogVXNlIG5ldyBDQUxMX0VYUFIKCWFjY2Vzc29ycy4KCgkqIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYyAoaXNzdWVfcHJlZmV0Y2hfcmVmKTogVXNlIGJ1aWxkX2NhbGxfZXhwci4KCgkqIHRyZWUtaW5saW5lLmMgKGluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzKTogUGFzcyBlbnRpcmUKCUNBTExfRVhQUiBhcyBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhcmdsaXN0LiAgVXNlIG5ldyBDQUxMX0VYUFIKCWFjY2Vzc29ycy4KCShlc3RpbWF0ZV9udW1faW5zbnNfMSk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBUaWR5IHVwIGNhbGwgdG8gaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMuCgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfY3JlYXRlX2VwaWxvZ19mb3JfcmVkdWN0aW9uKTogVXNlCglUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YgVFJFRV9DT0RFX0xFTkdUSC4KCSh2ZWN0b3JpemFibGVfcmVkdWN0aW9uKTogTGlrZXdpc2UuCgkodmVjdG9yaXphYmxlX2NhbGwpOiBVc2UgbmV3IENBTExfRVhQUiBpdGVyYXRvcnMuCgkodmVjdG9yaXphYmxlX2NvbnZlcnNpb24pOiBVc2UgYnVpbGRfY2FsbF9leHByLgoJKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24pOiBVc2UgVFJFRV9PUEVSQU5EX0xFTkdUSC4KCSh2ZWN0X2dlbl93aWRlbmVkX3Jlc3VsdHNfaGFsZik6IFVzZSBidWlsZF9jYWxsX2V4cHIuCgkodmVjdF9zZXR1cF9yZWFsaWdubWVudCk6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV9saXZlX29wZXJhdGlvbik6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RILgoKCSogdHJlZS1vYmplY3Qtc2l6ZS5jIChhbGxvY19vYmplY3Rfc2l6ZSk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCShwYXNzX3Rocm91Z2hfY2FsbCk6IExpa2V3aXNlLgoJKGNvbXB1dGVfb2JqZWN0X3NpemVzKTogTGlrZXdpc2UuICBVc2UgZm9sZF9jYWxsX2V4cHIgaW5zdGVhZCBvZgoJZm9sZF9idWlsdGluLgoKCSogdHJlZS1wcm9maWxlLmMgKHRyZWVfZ2VuX2ludGVydmFsX3Byb2ZpbGVyKTogVXNlIGJ1aWxkX2NhbGxfZXhwci4KCSh0cmVlX2dlbl9wb3cyX3Byb2ZpbGVyKTogTGlrZXdpc2UuCgkodHJlZV9nZW5fb25lX3ZhbHVlX3Byb2ZpbGVyKTogTGlrZXdpc2UuCgkodHJlZV9nZW5faWNfZnVuY19wcm9maWxlcik6IExpa2V3aXNlLgoJKHRyZWVfZ2VuX2F2ZXJhZ2VfcHJvZmlsZXIpOiBMaWtld2lzZS4KCSh0cmVlX2dlbl9pb3JfcHJvZmlsZXIpOiBMaWtld2lzZS4KCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGdldF9jb25zdHJhaW50X2Zvcik6IEFkZCBjYXNlIHRjY192bF9leHAuCgkoZmluZF9mdW5jX2FsaWFzZXMpOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuICBBZGQgY2FzZQoJdGNjX3ZsX2V4cC4gIFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQgb2YgVFJFRV9DT0RFX0xFTkdUSC4KCgkqIHRyZWUtc3NhLXJlYXNzb2MuYyAoZ2V0X3JhbmspOiBVc2UgVFJFRV9PUEVSQU5EX0xFTkdUSCBpbnN0ZWFkCglvZiBUUkVFX0NPREVfTEVOR1RILgoKCSogc3RtdC5jICh3YXJuX2lmX3VudXNlZF92YWx1ZSk6IFVzZSBUUkVFX09QRVJBTkRfTEVOR1RIIGluc3RlYWQKCW9mIFRSRUVfQ09ERV9MRU5HVEguCgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9fcmVhbCk6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycyBhbmQKCWNvbnN0cnVjdG9yLgoJKGNvbnZlcnRfdG9faW50ZWdlcik6IExpa2V3aXNlLgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2NhbGxfZXhwcl9vcGVyYW5kcyk6IFVzZSBuZXcgQ0FMTF9FWFBSCglhY2Nlc3NvcnMuCgoyMDA3LTAyLTE1ICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZXhwYW5kX2J1aWx0aW4pOiBVc2UgbmV3IENBTExfRVhQUgoJYWNjZXNzb3JzLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZ2ltcGxpZnlfdmFfYXJnKTogVXNlIGJ1aWxkX2NhbGxfZXhwci4KCShzcGFyY19leHBhbmRfYnVpbHRpbik6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX2Jpbm9wX2J1aWx0aW4pOiBQYXNzIGVudGlyZSBDQUxMX0VYUFIgYXMgcGFyYW1ldGVyCglpbnN0ZWFkIG9mIGFyZ2xpc3QuICBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMgb24gaXQuICBGaXggY2FsbGVycy4KCShpeDg2X2V4cGFuZF9zdG9yZV9idWlsdGluKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfdW5vcF9idWlsdGluKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfdW5vcDFfYnVpbHRpbik6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX3NzZV9jb21wYXJlKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfc3NlX2NvbWkpOiBMaWtld2lzZS4KCShpeDg2X2V4cGFuZF92ZWNfaW5pdF9idWlsdGluKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfdmVjX2V4dF9idWlsdGluKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfdmVjX3NldF9idWlsdGluKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfYnVpbHRpbik6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9leHBhbmRfYnVpbHRpbik6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jIChleHBhbmRfb25lX2J1aWx0aW4pOiBQYXNzIGVudGlyZSBDQUxMX0VYUFIKCWluc3RlYWQgb2YgYXJnbGlzdC4gIFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4gIEZpeCBjYWxsZXJzLgoJKGlxMjAwMF9leHBhbmRfYnVpbHRpbik6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAoYWx0aXZlY19idWlsZF9yZXNvbHZlZF9idWlsdGluKTogVXNlCglidWlsZF9jYWxsX2V4cHIuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9naW1wbGlmeV92YV9hcmcpOiBMaWtld2lzZS4KCShyczYwMDBfZXhwYW5kX3Vub3BfYnVpbHRpbik6IFBhc3MgZW50aXJlIENBTExfRVhQUiBpbnN0ZWFkIG9mCglhcmdsaXN0LiAgVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLiAgRml4IGNhbGxlcnMuCgkoYWx0aXZlY19leHBhbmRfYWJzX2J1aWx0aW4pOiBMaWtld2lzZS4KCShyczYwMDBfZXhwYW5kX2Jpbm9wX2J1aWx0aW4pOiBMaWtld2lzZS4KCShhbHRpdmVjX2V4cGFuZF9wcmVkaWNhdGVfYnVpbHRpbik6IExpa2V3aXNlLgoJKGFsdGl2ZWNfZXhwYW5kX2x2X2J1aWx0aW4pOiBMaWtld2lzZS4KCShzcGVfZXhwYW5kX3N0dl9idWlsdGluKTogTGlrZXdpc2UuCgkoYWx0aXZlY19leHBhbmRfc3R2X2J1aWx0aW4pOiBMaWtld2lzZS4KCShyczYwMDBfZXhwYW5kX3Rlcm5vcF9idWlsdGluKTogTGlrZXdpc2UuCgkoYWx0aXZlY19leHBhbmRfbGRfYnVpbHRpbik6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4KCShhbHRpdmVjX2V4cGFuZF9zdF9idWlsdGluKTogTGlrZXdpc2UuCgkoYWx0aXZlY19leHBhbmRfZHN0X2J1aWx0aW4pOiBMaWtld2lzZS4KCShhbHRpdmVjX2V4cGFuZF92ZWNfaW5pdF9idWlsdGluKTogUGFzcyBlbnRpcmUgQ0FMTF9FWFBSIGluc3RlYWQgb2YKCWFyZ2xpc3QuICBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuICBGaXggY2FsbGVycy4KCShhbHRpdmVjX2V4cGFuZF92ZWNfc2V0X2J1aWx0aW4pOiBMaWtld2lzZS4KCShhbHRpdmVjX2V4cGFuZF92ZWNfZXh0X2J1aWx0aW4pOiBMaWtld2lzZS4KCShhbHRpdmVjX2V4cGFuZF9idWlsdGluKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoJKHNwZV9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKHNwZV9leHBhbmRfcHJlZGljYXRlX2J1aWx0aW4pOiBQYXNzIGVudGlyZSBDQUxMX0VYUFIgaW5zdGVhZCBvZgoJYXJnbGlzdC4gIFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4gIEZpeCBjYWxsZXJzLgoJKHNwZV9leHBhbmRfZXZzZWxfYnVpbHRpbik6IExpa2V3aXNlLgoJKHJzNjAwMF9leHBhbmRfYnVpbHRpbik6IFVzZSBuZXcgQ0FMTF9FWFBSIGFjY2Vzc29ycy4gIFZDRlVYIGFuZAoJRkNGU1ggY2FzZXMgbXVzdCBjb25zdHJ1Y3Qgd2hvbGUgbmV3IENBTExfRVhQUiwgbm90IGp1c3QgYXJnbGlzdC4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9leHBhbmRfYmlub3BfYnVpbHRpbik6IFBhc3MgZW50aXJlIENBTExfRVhQUgoJaW5zdGVhZCBvZiBhcmdsaXN0LiAgVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLiAgRml4IGNhbGxlcnMuCgkoYXJtX2V4cGFuZF91bm9wX2J1aWx0aW4pOiBMaWtld2lzZS4KCShhcm1fZXhwYW5kX2J1aWx0aW4pOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuCgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZXhwYW5kX2J1aWx0aW4pOiBVc2UgbmV3IENBTExfRVhQUgoJYWNjZXNzb3JzLgoKCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX2V4cGFuZF9iaW5vcF9idWlsdGluKTogUGFzcyBlbnRpcmUKCUNBTExfRVhQUiBpbnN0ZWFkIG9mIGFyZ2xpc3QuICBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuCglGaXggY2FsbGVycy4KCShiZmluX2V4cGFuZF91bm9wX2J1aWx0aW4pOiBMaWtld2lzZS4KCShiZmluX2V4cGFuZF9idWlsdGluKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoKMjAwNy0wMi0xNSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoJICAgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1zZW1hbnRpY3MuYyAoYnVpbGRfc3RtdCk6IEFkZCBpbnRlcm5hbCBkaWFnbm9zdGljIGNoZWNrLgoKCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19wb3N0Zml4X2V4cHJlc3Npb24pOiBVc2UgbmV3IENBTExfRVhQUgoJYWNjZXNzb3JzLiAgUHJpbnQgYXJndW1lbnRzIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiBhcyBhIGxpc3QuCgoJKiBjLXR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsKTogVXNlIG5ldyBDQUxMX0VYUFIgY29uc3RydWN0b3JzLgoKCSogYy1vbXAuYyAoY19maW5pc2hfb21wX2JhcnJpZXIpOiBVc2UgYnVpbGRfY2FsbF9leHByLgoJKGNfZmluaXNoX29tcF9mbGlzaCk6IExpa2V3aXNlLgoKCSogYy1jb21tb24uYyAodmVyaWZ5X3RyZWUpOiBVc2UgbmV3IENBTExfRVhQUiBhY2Nlc3NvcnMuICBUcmF2ZXJzZQoJYXJndW1lbnRzIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiBhcyBhIGxpc3QuICBVc2UgVFJFRV9PUEVSQU5EX0xFTkdUSAoJaW5zdGVhZCBvZiBUUkVFX0NPREVfTEVOR1RILgoJKGNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50c19yZWN1cnNlKTogVXNlIG5ldyBDQUxMX0VYUFIgYWNjZXNzb3JzLgoJKGNfd2Fybl91bnVzZWRfcmVzdWx0KTogTGlrZXdpc2UuCgoyMDA3LTAyLTE1ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBjLzI2NDk0CgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogUmVtb3ZlCgktV2Vycm9yLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uLgoJKFdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbik6IFVwZGF0ZSBkZXNjcmlwdGlvbi4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IE1vdmUgaGFuZGxpbmcgb2YgLVdlcnJvcj0qIHRvLi4uCgkoZW5hYmxlX3dhcm5pbmdfYXNfZXJyb3IpOiAuLi5oZXJlLgoJKiBvcHRzLmggKGVuYWJsZV93YXJuaW5nX2FzX2Vycm9yKTogRGVjbGFyZS4KCSogYy1kZWNsLmMgKGltcGxpY2l0X2RlY2xfd2FybmluZyk6IFVubGVzcwoJLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiBpcyBnaXZlbiwgZW1pdCBhIHBlZHdhcm4gaWYKCS1zdGQ9Yzk5IG9yIGVtaXQgYSB3YXJuaW5nIGlmIC1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24uCgkqIGMub3B0IChXaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24pOiBSZXBsYWNlCgltZXNnX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uIHdpdGgKCXdhcm5faW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb24uCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKToKCS1XZXJyb3ItaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gaXMgZXhhY3RseSBlcXVhbCBhcwoJLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbi4KCShzZXRfV2ltcGxpY2l0KTogUmVwbGFjZSBtZXNnX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uIHdpdGgKCXdhcm5faW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb24uCgkoY19jb21tb25fcG9zdF9vcHRpb25zKTogLVdpbXBsaWN0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIGlzIGVuYWJsZWQKCWJ5IGRlZmF1bHQgYnkgLXN0ZD1jOTksIG90aGVyd2lzZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgoJKiBjLW9iamMtY29tbW9uLmMgKGNfb2JqY19jb21tb25faW5pdCk6IFJlbW92ZSBmbGF3ZWQgbG9naWMuCgoyMDA3LTAyLTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfbW9kaWZ5X2V4cHIpOiBEdXJpbmcgZ2ltcGxpZmljYXRpb24sIGF0dGFjaCBhCglERUNMIG9uIHRoZSByaHMgdG8gYSBERUNMIG9uIHRoZSBsaHMgZm9yIGRlYnVnIGluZm8gcHVycG9zZXMgaWYgdGhlCglmb3JtZXIgaXMgaWdub3JlZCBidXQgbm90IHRoZSBsYXR0ZXIuCgoyMDA3LTAyLTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpIDxub3JtYWxfaW5uZXJfcmVmPjogSWYgYSB0ZW1wb3JhcnkKCWlzIG1hZGUgYW5kIHRoZSByZWZlcmVuY2UgZG9lc24ndCB1c2UgdGhlIGFsaWFzIHNldCBvZiBpdHMgdHlwZSwKCWRvIG5vdCBjcmVhdGUgdGhlIHRlbXBvcmFyeSB1c2luZyB0aGF0IHR5cGUuCgoyMDA3LTAyLTE1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBqdW1wLmM6IFJlbW92ZSBwcm90b3R5cGVzIGZvciBkZWxldGVfY29tcHV0YXRpb24gYW5kCglkZWxldGVfcHJpb3JfY29tcHV0YXRpb24uCgoyMDA3LTAyLTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSoganVtcC5jIChnZXRfbGFiZWxfYWZ0ZXIpOiBEZWxldGUuCgkoZ2V0X2xhYmVsX2JlZm9yZSwgZGVsZXRlX2NvbXB1dGF0aW9uLCBkZWxldGVfanVtcCwKCWRlbGV0ZV9wcmlvcl9jb21wdXRhdGlvbiwgZm9sbG93X2p1bXBzKTogTW92ZS4uLgoJKiByZW9yZy5jIChkZWxldGVfY29tcHV0YXRpb24sIGRlbGV0ZV9wcmlvcl9jb21wdXRhdGlvbik6IC4uLiBoZXJlLi4uCgkoZ2V0X2xhYmVsX2JlZm9yZSwgZGVsZXRlX2p1bXApOiAuLi4gbWFraW5nIHRoZXNlIHN0YXRpYyAuLi4KCShmb2xsb3dfanVtcHMpOiAuLi4gYW5kIHNpbXBsaWZ5aW5nIHRoaXMgc2luY2UgaXQgb25seSBydW5zIGFmdGVyCglyZWxvYWQuCgkqIHJ0bC5oIChnZXRfbGFiZWxfYWZ0ZXIsIGdldF9sYWJlbF9iZWZvcmUsIGRlbGV0ZV9qdW1wLAoJZm9sbG93X2p1bXBzKTogRGVsZXRlIHByb3RvdHlwZXMuCgoyMDA3LTAyLTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY2FsbGVyLXNhdmUuYyAoc2F2ZV9jYWxsX2Nsb2JiZXJlZF9yZWdzKTogRG8gbm90IHByb2Nlc3Mgc2liY2FsbHMuCgoyMDA3LTAyLTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKGRlZmF1bHRfYXNtX291dHB1dF9hbmNob3IpOiBQcmVwZW5kICogdG8gLiBzeW1ib2wgaW4KCW9yZGVyIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyBtdW5nZWQgYnkgdGhlIHRhcmdldC4KCjIwMDctMDItMTUgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50LgoKMjAwNy0wMi0xNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5tZCAocmVsb2FkX2luY2MsIHJlbG9hZF9vdXRjYywgcmVsb2FkX2luY2NfdW5zLAoJcmVsb2FkX291dGNjX3VucywgcmVsb2FkX2luY2NfbnosIHJlbG9hZF9vdXRjY19ueik6IFJlbW92ZQoJaW52YWxpZCBwYXR0ZXJucy4KCjIwMDctMDItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogdHJlZS1zcmEuYyAoaW5zdGFudGlhdGVfbWlzc2luZ19lbGVtZW50cyk6IENhbm9uaWNhbGl6ZQoJYml0LWZpZWxkIHR5cGVzLgoJKHNyYV9idWlsZF9hc3NpZ25tZW50KTogTmV3LgoJKGdlbmVyYXRlX2NvcHlfaW5vdXQsIGdlbmVyYXRlX2VsZW1lbnRfY29weSwKCWdlbmVyYXRlX2VsZW1lbnRfemVybywgZ2VuZXJhdGVfb25lX2VsZW1lbnRfaW5pdCk6IFVzZSBpdC4KCjIwMDctMDItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogdHJlZS1zcmEuYyAoaW5zdGFudGlhdGVfbWlzc2luZ19lbGVtZW50cyk6IENhbm9uaWNhbGl6ZQoJYml0LWZpZWxkIHR5cGVzLgoJKHNyYV9idWlsZF9hc3NpZ25tZW50KTogTmV3LgoJKGdlbmVyYXRlX2NvcHlfaW5vdXQsIGdlbmVyYXRlX2VsZW1lbnRfY29weSwKCWdlbmVyYXRlX2VsZW1lbnRfemVybywgZ2VuZXJhdGVfb25lX2VsZW1lbnRfaW5pdCk6IFVzZSBpdC4KCjIwMDctMDItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9maW5pc2gpOiBBY2NlcHQgbmFtZXNwYWNlcyBhcyBjb250ZXh0IG9mCglsaW1ibyBkaWUgbm9kZXMuCgoyMDA3LTAyLTE0ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVtaXQtcnRsLmMgKHNldF9tZW1fYXR0cmlidXRlc19taW51c19iaXRwb3MpOiBUcmVhdCBjb21wbGV4Cgl0eXBlcyBhcyBhZ2dyZWdhdGVzIG5vdCBzY2FsYXJzLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6IExpa2V3aXNlLgoKMjAwNy0wMi0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtZHVtcC5jIChkdW1wX3N3aXRjaF9wXzEpOiBSZXF1aXJlIGV4YWN0IG1hdGNoIG9mIHRoZSBvcHRpb24KCW5hbWUuCgoyMDA3LTAyLTE0ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogcGFzc2VzLmMgKG5leHRfcGFzc18xKTogQ2xlYXIgdGhlIG5leHQgZmllbGQgb2YgdGhlIGNvcGllZAoJcGFzcyBzdHJ1Y3R1cmUuCgoyMDA3LTAyLTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1zcmEuYyAoZWFybHlfc3JhKTogTmV3LgoJKGRlY2xfY2FuX2JlX2RlY29tcG9zZWRfcCk6IERlbnkgdmFfbGlzdCBpZiBlYXJseV9zcmEuCgkodHJlZV9zcmFfZWFybHksIHBhc3Nfc3JhX2Vhcmx5KTogTmV3LgoJKiB0cmVlLXBhc3MuaCAocGFzc19zcmFfZWFybHkpOiBEZWNsYXJlLgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogVXNlIGl0LgoKMjAwNy0wMi0xNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZmxhZ3MuaCAoaXNzdWVfc3RyaWN0X292ZXJmbG93X3dhcm5pbmcpOiBDb252ZXJ0IHRvIGEgbWFjcm8uCgoyMDA3LTAyLTE0ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCSBQUiB0cmVlLW9wdGltaXphdGlvbi8zMDc3MQoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2RldGVybWluZV92ZWN0b3JpemF0aW9uX2ZhY3Rvcik6IFRyYXZlcnNlCglhbHNvIHBoaSBub2Rlcy4KCSh2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyk6IEluZHVjdGlvbiBwaGlzIGNhbiBub3cgYmUgbWFya2VkIGFzCgl1c2VkX2luX2xvb3AuCgkodmVjdF9tYXJrX3N0bXRzX3RvX2JlX3ZlY3Rvcml6ZWQpOiBObyBzcGVjaWFsIHRyZWF0bWVudCBmb3IgcGhpcy4KCVVwZGF0ZSBkb2N1bWVudGF0aW9uIGFjY29yZGluZ2x5LgoKMjAwNy0wMi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChERUZfRlVOQ1RJT05fVFlQRV94KTogRG8gbm90IGltcGx5IHRoYXQgYXQKCW1vc3QgMyBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZC4KCShERUZfRlVOQ1RJT05fVFlQRV9WQVJfNSk6IEZpeCB0eXBvIGluIGl0cyBkZXNjcmlwdGlvbi4KCjIwMDctMDItMTMgIFNlb25nYmFlIFBhcmsgPHNlb25nYmFlLnBhcmtAZ21haWwuY29tPgoKCSogYml0bWFwLmMgKGJpdG1hcF9hbmQsIGJpdG1hcF9hbmRfY29tcGwsIGJpdG1hcF94b3IpOgoJRW5zdXJlIGRzdC0+Y3VycmVudCBpcyB2YWxpZC4KCjIwMDctMDItMTMgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgYXJtKi0qLXVjbGludXgtKmVhYmkuCgkqIGNvbmZpZy9hcm0vdWNsaW51eC1lbGYuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZS4KCShTVUJUQVJHRVRfRVhUUkFfTElOS19TUEVDKTogRGVmaW5lLgoJKFNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMpOiBSZW1vdmUgYnJva2VuIC1zaGFyZWQgaGFuZGxpbmcuCgkoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogVW5kZWYuCgkoTElOS19TUEVDKTogRGVmaW5lLgoJKExJQl9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSByOSBhcyBFQUJJIFBJQwoJcmVnaXN0ZXIuCgkqIGNvbmZpZy9hcm0vdWNsaW51eC1lYWJpLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL2xpbnV4LWVhYmkuaCAoV0NIQVJfVFlQRSk6IFJlbW92ZS4KCSogY29uZmlnL2FybS9saW51eC1nYXMuaCAoV0NIQVJfVFlQRSk6IFVzZSB1bnNpZ25lZCBsb25nIG9uIEFBUENTCgliYXNlZCB0YXJnZXRzLgoKMjAwNy0wMi0xMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGNvbW1vbi5vcHQ6IEFkZCBXc3RyaWN0LW92ZXJmbG93IGFuZCBXc3RyaWN0LW92ZXJmbG93PS4KCSogZmxhZ3MuaCAod2Fybl9zdHJpY3Rfb3ZlcmZsb3cpOiBEZWNsYXJlLgoJKGVudW0gd2Fybl9zdHJpY3Rfb3ZlcmZsb3dfY29kZSk6IERlZmluZS4KCShpc3N1ZV9zdHJpY3Rfb3ZlcmZsb3dfd2FybmluZyk6IE5ldyBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLgoJKiBvcHRzLmMgKHdhcm5fc3RyaWN0X292ZXJmbG93KTogTmV3IHZhcmlhYmxlLgoJKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIE9QVF9Xc3RyaWN0X292ZXJmbG93IGFuZAoJT1BUX1dzdHJpY3Rfb3ZlcmZsb3dfLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IFNldCB3YXJuX3N0cmljdF9vdmVyZmxvdyBmb3IKCU9QVF9XYWxsLgoJKiBmb2xkLWNvbnN0LmM6IEluY2x1ZGUgaW50bC5oLgoJKGZvbGRfZGVmZXJyaW5nX292ZXJmbG93X3dhcm5pbmdzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShmb2xkX2RlZmVycmVkX292ZXJmbG93X3dhcm5pbmcpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGZvbGRfZGVmZXJyZWRfb3ZlcmZsb3dfY29kZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoZm9sZF9kZWZlcl9vdmVyZmxvd193YXJuaW5ncyk6IE5ldyBmdW5jdGlvbi4KCShmb2xkX3VuZGVmZXJfb3ZlcmZsb3dfd2FybmluZ3MpOiBOZXcgZnVuY3Rpb24uCgkoZm9sZF91bmRlZmVyX2FuZF9pZ25vcmVfb3ZlcmZsb3dfd2FybmluZ3MpOiBOZXcgZnVuY3Rpb24uCgkoZm9sZF9kZWZlcnJpbmdfb3ZlcmZsb3dfd2FybmluZ3NfcCk6IE5ldyBmdW5jdGlvbi4KCShmb2xkX292ZXJmbG93X3dhcm5pbmcpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKG1ha2VfcmFuZ2UpOiBBZGQgc3RyaWN0X292ZXJmbG93X3AgcGFyYW1ldGVyLiAgQ2hhbmdlIGFsbAoJY2FsbGVycy4KCShleHRyYWN0X211bGRpdiwgZXh0cmFjdF9tdWxkaXZfMSk6IExpa2V3aXNlLgoJKGZvbGRfdW5hcnkpIFtBQlNfRVhQUl06IENoZWNrIEFCU19FWFBSIGJlZm9yZSBjYWxsaW5nCgl0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcC4KCShmb2xkX25lZ2F0ZV9leHByKTogQ2FsbCBmb2xkX292ZXJmbG93X3dhcm5pbmcuCgkoZm9sZF9yYW5nZV90ZXN0KTogTGlrZXdpc2UuCgkoZm9sZF9jb21wYXJpc29uKTogTGlrZXdpc2UuCgkoZm9sZF9iaW5hcnkpOiBMaWtld2lzZS4gIENhbGwgdHJlZV9leHByX25vbm5lZ2F0aXZlX3dhcm52X3AKCWluc3RlYWQgb2YgdHJlZV9leHByX25vbm5lZ2F0aXZlX3AuCgkodHJlZV9leHByX25vbm5lZ2F0aXZlX3dhcm52X3ApOiBSZW5hbWUgZnJvbQoJdHJlZV9leHByX25vbm5lZ2F0aXZlX3AsIGFkZCBzdHJpY3Rfb3ZlcmZsb3dfcCBwYXJhbWV0ZXIuCgkodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBOZXcgZnVuY3Rpb24uCgkodHJlZV9leHByX25vbnplcm9fd2FybnZfcCk6IFJlbmFtZSBmcm9tIHRyZWVfZXhwcl9ub256ZXJvX3AsIGFkZAoJc3RyaWN0X292ZXJmbG93X3AgcGFyYW1ldGVyLgoJKHRyZWVfZXhwcl9ub256ZXJvX3ApOiBOZXcgZnVuY3Rpb24uCgkqIHBhc3Nlcy5jICh2ZXJpZnlfaW50ZXJwYXNzX2ludmFyaWFudHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGV4ZWN1dGVfb25lX3Bhc3MpOiBDYWxsIGl0LgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKGV4cGFuZF9zaW1wbGVfb3BlcmF0aW9ucyk6IElnbm9yZSBmb2xkCgl3YXJuaW5ncy4KCShudW1iZXJfb2ZfaXRlcmF0aW9uc19leGl0LCBsb29wX25pdGVyX2J5X2V2YWwpOiBMaWtld2lzZS4KCShlc3RpbWF0ZV9udW1iZXJzX29mX2l0ZXJhdGlvbnMpOiBMaWtld2lzZS4KCShzY2V2X3Byb2JhYmx5X3dyYXBzX3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY2NwLmM6IEluY2x1ZGUgInRvcGxldi5oIi4KCShldmFsdWF0ZV9zdG10KTogRGVmZXIgZm9sZCBvdmVyZmxvdyB3YXJuaW5ncyB1bnRpbCB3ZSBrbm93IHdlIGFyZQoJZ29pbmcgdG8gb3B0aW1pemUuCgkoc3RydWN0IGZvbGRfc3RtdF9yX2RhdGEpOiBBZGQgc3RtdCBmaWVsZC4KCShmb2xkX3N0bXRfcik6IERlZmVyIGZvbGQgb3ZlcmZsb3cgd2FybmluZ3MgdW50aWwgd2Uga25vdyB3ZQoJb3B0aW1pemVkLgoJKGZvbGRfc3RtdCk6IEluaXRpYWxpemUgc3RtdCBmaWVsZCBvZiBmb2xkX3N0bXRfcl9kYXRhLgoJKGZvbGRfc3RtdF9pbnBsYWNlKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnY2xlYW51cC5jOiBJbmNsdWRlICJ0b3BsZXYuaCIgcmF0aGVyIHRoYW4gImVycm9ycy5oIi4KCShjbGVhbnVwX2NvbnRyb2xfZXhwcl9ncmFwaCk6IERlZmVyIGZvbGQgb3ZlcmZsb3cgd2FybmluZ3MgdW50aWwKCXdlIGtub3cgd2UgYXJlIGdvaW5nIHRvIG9wdGltaXplLgoJKiB0cmVlLWNmZy5jIChmb2xkX2NvbmRfZXhwcl9jb25kKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXRocmVhZGVkZ2UuYyAoc2ltcGxpZnlfY29udHJvbF9zdG10X2NvbmRpdGlvbik6CglMaWtld2lzZS4KCSogdHJlZS12cnAuYyAodnJwX2V4cHJfY29tcHV0ZXNfbm9ubmVnYXRpdmUpOiBDYWxsCgl0cmVlX2V4cHJfbm9ubmVnYXRpdmVfd2FybnZfcCBpbnN0ZWFkIG9mIHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKGNyZWF0ZV9pdik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkqIHRyZWUtdnJwLmMgKHZycF9leHByX2NvbXB1dGVzX25vbnplcm8pOiBDYWxsCgl0cmVlX2V4cHJfbm9uemVyb193YXJudl9wIGluc3RlYWQgb2YgdHJlZV9leHByX25vbnplcm9fcC4KCShleHRyYWN0X3JhbmdlX2Zyb21fdW5hcnlfZXhwcik6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfY29uc3RfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBXYXJuIHdoZW4KCWFzc3VtaW5nIHRoYXQgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90IG9jY3VyLgoJKiBjLWNvbW1vbi5jIChwb2ludGVyX2ludF9zdW0pOiBJZ25vcmUgZm9sZCBvdmVyZmxvdyB3YXJuaW5ncy4KCSogdHJlZS5oICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfd2FybnZfcCk6IERlY2xhcmUuCgkoZm9sZF9kZWZlcl9vdmVyZmxvd193YXJuaW5ncyk6IERlY2xhcmUuCgkoZm9sZF91bmRlZmVyX292ZXJmbG93X3dhcm5pbmdzKTogRGVjbGFyZS4KCShmb2xkX3VuZGVmZXJfYW5kX2lnbm9yZV9vdmVyZmxvd193YXJuaW5ncyk6IERlY2xhcmUuCgkoZm9sZF9kZWZlcnJpbmdfb3ZlcmZsb3dfd2FybmluZ3NfcCk6IERlY2xhcmUuCgkodHJlZV9leHByX25vbnplcm9fd2FybnZfcCk6IERlY2xhcmUuCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW9uIFN1bW1hcnkpOiBBZGQgLVdzdHJpY3Qtb3ZlcmZsb3cgdG8gbGlzdAoJb2Ygd2FybmluZyBvcHRpb25zLgoJKFdhcm5pbmcgT3B0aW9ucyk6IERvY3VtZW50IC1Xc3RyaWN0LW92ZXJmbG93LgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2EtdGhyZWFkZWRnZS5vKTogRGVwZW5kIG9uIHRvcGxldi5oLgoJKHRyZWUtc3NhLWNjcC5vKTogTGlrZXdpc2UuCgkodHJlZS1jZmdjbGVhbnVwLm8pOiBDaGFuZ2UgZXJyb3JzLmggZGVwZW5kZW5jeSB0byB0b3BsZXYuaC4KCShmb2xkLWNvbnN0Lm8pOiBEZXBlbmQgb24gaW50bC5oLgoKMjAwNy0wMi0xMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwNzUxCgkqIGxvd2VyLXN1YnJlZy5jIChyZXNvbHZlX3NpbXBsZV9tb3ZlKTogRGVjb21wb3NlIHN1YnJlZ3MgaW4KCWFkZHJlc3Nlcy4KCjIwMDctMDItMTMgIFN0dWFydCBIYXN0aW5ncyAgPHN0dWFydEBhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChmaXh1bnNfdHJ1bmNkZmhpMik6IFJlcXVpcmUgU1NFMi4KCjIwMDctMDItMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc3RkYXJnX29wdGltaXplX2hvb2spOiBTdHJpcAoJaGFuZGxlZF9jb21wb25lbnRfcCBiZWZvcmUgbG9va2luZyBmb3IgdGhlIGluZGlyZWN0X3JlZi4KCjIwMDctMDItMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChic3dhcHNpXzEpOiBSZW5hbWUgZnJvbSBic3dhcHNpMiwKCXJlbW92ZSBmbGFncyBjbG9iYmVyLgoJKGJzd2Fwc2kyKTogTmV3IGV4cGFuZGVyLCBlbWl0IGNvZGUgZm9yICFUQVJHRVRfQlNXQVAuCgkoYnN3YXBoaV9sb3dwYXJ0KTogTmV3LgoJKGJzd2FwZGkyKTogUmVuYW1lIGZyb20gYnN3YXBkaTJfcmV4LCByZW1vdmUgZmxhZ3MgY2xvYmJlciwKCXJlbW92ZSBUQVJHRVRfQlNXQVAgdGVzdC4gIERlbGV0ZSBleHBhbmRlciBvZiB0aGUgc2FtZSBuYW1lLgoKCSogb3B0YWJzLmMgKHdpZGVuX2Jzd2FwLCBleHBhbmRfZG91Ymxld29yZF9ic3dhcCk6IE5ldy4KCShleHBhbmRfdW5vcCk6IFVzZSB0aGVtLgoKMjAwNy0wMi0xMyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGNtcGRpX2Njbm9fMV9yZXg2NCwgKmNtcHNpX2Njbm9fMSwKCSpjbXBoaV9jY25vXzEsICpjbXBxaV9jY25vXzEsICptb3ZzaV94b3IsICptb3ZzdHJpY3RoaV94b3IsCgkqbW92c3RyaWN0cWlfeG9yLCAqbW92ZGlfeG9yX3JleDY0LCAqYXNobGRpM18xX3JleDY0LAoJKmFzaGxkaTNfY21wX3JleDY0LCAqYXNobGRpM19jY29ubHlfcmV4NjQsIGFzaGxzaTMsICphc2hsc2kzXzFfemV4dCwKCSphc2hsc2kzX2NtcCwgKmFzaGxzaTNfY2Nvbmx5LCAqYXNobHNpM19jbXBfemV4dCwgKmFzaGxoaTNfMV9sZWEsCgkqYXNobGhpM18xLCAqYXNobGhpM19jbXAsICphc2hsaGkzX2Njb25seSwgKmFzaGxxaTNfMV9sZWEsCgkqYXNobHFpM18xLCAqYXNobHFpM19jbXAsICphc2hscWkzX2Njb25seSk6IFJlbW92ZSBlcXVpdmFsZW50Cglhc3NlbWJsZXIgZGlhbGVjdCBjaG9pY2UgZnJvbSBhc20gdGVtcGxhdGVzLgoKMjAwNy0wMi0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGZpeHVuc190cnVuYzxTU0VNT0RFRj5zaV8xKTogTmV3IGluc24uCgkoZml4dW5zX3RydW5jPFNTRU1PREVGPnNpMik6IFVzZSBpdC4KCSogY29uZmlnL2kzODYvc3NlLm1kICh2ZWNfc2V0djRzZl8wKTogRXhwb3J0LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYnVpbGRfY29uc3RfdmVjdG9yKTogRXhwb3J0LgoJKGl4ODZfc3BsaXRfY29udmVydF91bnNfc2lfc3NlKTogUmVuYW1lIGZyb20KCWl4ODZfZXhwYW5kX2NvbnZlcnRfdW5zX3NpX3NzZSBhbmQgcmV3cml0ZSBhcyBhIHNwbGl0dGVyLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oOiBVcGRhdGUuCgoyMDA3LTAyLTEzICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBjLzI5NTIxCgkqIGMtdHlwZWNrLmMgKGNfZmluaXNoX3JldHVybik6IEltcHJvdmUgd2FybmluZyBtZXNzYWdlLgoKMjAwNy0wMi0xMiAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJKiBhbGlhcy5jIChmaW5kX3N5bWJvbGljX3Rlcm0pOiBEZWxldGUgdW51c2VkIGZ1bmN0aW9uLgoKMjAwNy0wMi0xMiAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHBhcml0eWRpMiwgcGFyaXR5c2kyKTogTmV3IGV4cGFuZGVycy4KCShwYXJpdHlkaTJfY21wLCBwYXJpdHlkaTJfY21wKTogTmV3IGluc24gYW5kIHNwbGl0IHBhdHRlcm5zLgoJKCpwYXJpdHloaTJfY21wLCAqcGFyaXR5cWkyX2NtcCk6IE5ldyBpbnNuIHBhdHRlcm5zLgoKMjAwNy0wMi0xMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUuaCAoREVDTF9JR05PUkVEX1ApOiBEb2N1bWVudCBmdXJ0aGVyIGVmZmVjdCBmb3IgRlVOQ1RJT05fREVDTC4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogSWYgREVDTF9JR05PUkVEX1AgaXMgc2V0IG9uCgl0aGUgZnVuY3Rpb24sIHRlbXBvcmFyaWx5IHBvaW50IHRoZSBkZWJ1ZyBpbnRlcmZhY2UgdG8gdGhlIG51bGwgb25lLgoKMjAwNy0wMi0xMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChyb3VuZF91cF90b19hbGlnbik6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZmllbGRfYnl0ZV9vZmZzZXQpOiBVc2UgaXQgdG8gcm91bmQgdGhlIG9mZnNldC4KCjIwMDctMDItMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGJzd2Fwc2kyLCBic3dhcGRpMik6IE5ldy4KCShpbnN3bF9jb25zdCk6IEV4cG9ydC4KCjIwMDctMDItMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogSWYgUFJPTU9URV9NT0RFIG1vZGlmZWQgdGhlCglyZXN1bHQgbW9kZSBvZiB0aGUgbGliY2FsbCwgY29udmVydCBiYWNrIHRvIG91dG1vZGUuCgoyMDA3LTAyLTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpic3dhcGRpMl9yZXgpOiBSZW5hbWVkIGZyb20gYnN3YXBkaTIuCgkoYnN3YXBkaTIpOiBOZXcgZGVmaW5lX2V4cGFuZCB0byBpbXBsZW1lbnQgMzItYml0IGltcGxlbWVudGF0aW9uLgoKMjAwNy0wMi0xMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3ZlcmFsbCBPcHRpb25zKTogRG9jdW1lbnQgLS1oZWxwPS4KCSogZ2NjLmMgKHRhcmdldF9oZWxwX2ZsYWcpOiBSZW5hbWUgdG8gcHJpbnRfc3VicHJvY2Vzc19mbGFnLgoJKGNjMV9vcHRpb25zKTogUGFzcyAtLWhlbHA9IG9uIHRvIGNjMS4KCShkaXNwbGF5X2hlbHApOiBBZGQgZGVzY3JpcHRpb24gb2YgLS1oZWxwPS4KCShwcm9jZXNzX2NvbW1hbmQpOiBBZGQgY29kZSB0byBoYW5kbGUgLS1oZWxwPS4gIEFsbG93IHRyYW5zbGF0ZWQKCS0taGVscCBhbmQgLS10YXJnZXQtaGVscCBzd2l0Y2hlcyB0byBiZSBwYXNzZWQgb24gdG8gY29tcGlsZXIKCXN1Yi1wcm9jZXNzLgoJKG1haW4pOiBSZW1vdmUgdW51c2VkIGlmIHN0YXRlbWVudC4KCSogb3B0cy5jIChjb2x1bW5zKTogUmVtb3ZlLgoJKExFRlRfQ09MVU1OKTogRGVmaW5lLgoJKHdyYXBfaGVscCk6IEFkZCBjb2x1bW5zIGFyZ3VtZW50LgoJKHByaW50X2ZpbHRlcmVkX2hlbHApOiBDaGFuZ2UgcGFyYW1ldGVycyB0byBiZSBhbiBpbmNsdWRlIGJpdG1hc2ssCglhbiBleGNsdWRlIGJpdG1hc2ssIGFuIGFueSBiaXRtYXNrIGFuZCB0aGUgY29sdW1uIHdpZHRoLiAgTW92ZSB0aGUKCWNvZGUgdG8gZGlzcGxheSB0aGUgcGFyYW1zIGxpc3QgaGVyZS4gIEFkZCBjb2RlIHRvIGRpc3BsYXkgdGhlCglzdGF0dXMgb2Ygb3B0aW9ucyByYXRoZXIgdGhhbiB0aGVpciBkZXNjcmlwdGlvbnMgaWYgdGhlIHF1aWV0IGZsYWcKCWlzIG5vdCBhY3RpdmUuCgkocHJpbnRfc3BlY2lmaWNfaGVscCk6IENoYW5nZSBwYXJhbWV0ZXJzIHRvIGJlIGFuIGluY2x1ZGUgYml0bWFzaywKCWFuIGV4Y2x1ZGUgYml0bWFzayBhbmQgYW4gYW55IGJpdG1hc2suICBNb3ZlIGNvZGUgdG8gbG9vayB1cCB0aGUKCWNvbHVtbiB3aWR0aCBoZXJlLiAgRGVjaWRlIHVwb24gdGhlIHRpdGxlIGZvciBhbiBvcHRpb25zIGxpc3RpbmcuCgkoY29tbW9uX2hhbmRsZV9vcHRpb25zKTogQWRkIGNvZGUgdG8gaGFuZGxlIC0taGVscD0uICBBZGFwdCBjb2RlCglmb3IgLS1oZWxwIGFuZCAtLXRhcmdldC1oZWxwIHRvIHVzZSB0aGUgcmV2aXNlZCBmb3JtIG9mIHRoZQoJcHJpbnRfc3BlY2lmaWNfaGVscCBmdW5jdGlvbi4KCShwcmludF9oZWxwKTogRGVsZXRlLgoJKHByaW50X3BhcmFtX2hlbHApOiBEZWxldGUuCgkocHJpbnRfc3dpdGNoKTogRGVsZXRlLgoJKiBvcHRzLmggKGNsX2xhbmdfY291bnQpOiBBZGQgcHJvdG90eXBlLgoJKENMX1BBUkFNUywgQ0xfV0FSTklORywgQ0xfT1BUSU1JWkFUSU9OLCBDTF9NSU5fT1BUSU9OX0NMQVNTLAoJQ0xfTUFYX09QVElPTl9DTEFTUyk6IE5ldyBkZWZpbmVzLgoJKiBvcHRjLWdlbi5hd2s6IEFkZCBjb25zdHJ1Y3Rpb24gb2YgY2xfbGFuZ19jb3VudC4KCSogYy5vcHQ6IEFkZCBXYXJuaW5nIGF0dHJpYnV0ZSB0byB3YXJuaW5nIG9wdGlvbnMgYW5kIE9wdGltaXphdGlvbgoJYXR0cmlidXRlIHRvIG9wdGltaXphdGlvbiBvcHRpb25zLgoJKiBjb21tb24ub3B0OiBMaWtld2lzZS4KCUFkZCAtLWhlbHA9LgoJQWRkIC1maGVscCBhbmQgLWZ0YXJnZXQtaGVscCBhcyBhbGlhc2VzIGZvciB0aGUgdHJhbnNmb3JtZWQgLS1oZWxwCglhbmQgLS10YXJnZXQtaGVscCBvcHRpb25zLgoJKiBvcHQtZnVuY3Rpb25zLmF3azogQWRkIGNvZGUgdG8gaGFuZGxlIFdhcm5pbmcgYW5kIE9wdGltaXphdGlvbgoJYXR0cmlidXRlcy4KCjIwMDctMDItMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvY29uc3RyYWludHMubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYzogSW5jbHVkZSB0bS1jb25zdHJzLmguCgkoYWxwaGFfY29uc3Rfb2tfZm9yX2xldHRlcl9wLCBhbHBoYV9jb25zdF9kb3VibGVfb2tfZm9yX2xldHRlcl9wLAoJYWxwaGFfZXh0cmFfY29uc3RyYWludCk6IFJlbW92ZS4KCShhbHBoYV9lbWl0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IFVzZSBzYXRpc2ZpZXNfY29uc3RyYWludF8qLgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IFJlbW92ZS4KCShDT05TVF9PS19GT1JfTEVUVEVSX1AsIENPTlNUX0RPVUJMRV9PS19GT1JfTEVUVEVSX1ApOiBSZW1vdmUuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IFJlbW92ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kOiBJbmNsdWRlIGNvbnN0cmFpbnRzLm1kLgoJKGFkZGRpIHNwbGl0dGVyKTogVXNlIHNhdGlzZmllc19jb25zdHJhaW50XyouCgkqIGNvbmZpZy9hbHBoYS9wcmVkaWNhdGVzLm1kIChhZGRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKHNleHRfYWRkX29wZXJhbmQsIGFkZGl0aW9uX29wZXJhdGlvbik6IExpa2V3aXNlLgoKMjAwNy0wMi0xMiAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yOTE0NQoJKiB0cmVlLWRhdGEtcmVmLmMgKGJhc2VfYWRkcl9kaWZmZXJfcCk6IE1ha2UgdXMgbW9yZSBjb25zZXJ2YXRpdmUKCWluIG91ciBoYW5kbGluZyBvZiByZXN0cmljdCBxdWFsaWZpZWQgcG9pbnRlcnMuCgoyMDA3LTAyLTEyICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBtaWRkbGUtZW5kLzc2NTEKCSogZG9jL2ludm9rZS50ZXhpIChXdW51c2VkLXZhbHVlKTogVXBkYXRlIGRlc2NyaXB0aW9uLgoJKFdleHRyYSk6IERlbGV0ZSBpdGVtLgoJKiBvcHRzLmMgKHNldF9XZXh0cmEpOiBEb24ndCB1c2UgdGhlIHZhbHVlIG9mIFdleHRyYSB0byBzZXQgdGhlCgl2YWx1ZSBvZiBXdW51c2VkLXZhbHVlLgoJKiBjLXR5cGVjay5jIChjX3Byb2Nlc3NfZXhwcl9zdG10KTogRG9uJ3QgY2hlY2sgZXh0cmFfd2FybmluZ3MuCgkoY19maW5pc2hfc3RtdF9leHByKTogRG9uJ3QgY2hlY2sgZXh0cmFfd2FybmluZ3MuCgkoZW1pdF9zaWRlX2VmZmVjdF93YXJuaW5ncyk6IFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgdG8gY2hlY2sKCXdhcm5fdW51c2VkX3ZhbHVlLgoKMjAwNy0wMi0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgTWF0dCBUaG9tYXMgIDxtYXR0QDNhbS1zb2Z0d2FyZS5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSk6IENvcnJlY3QgdHlwby4KCjIwMDctMDItMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uXzEpOiBPcHRpbWl6ZQoJY29tcGFyaXNvbnMgb2YgUE9QQ09VTlQgYWdhaW5zdCB6ZXJvLgoJKHNpbXBsaWZ5X2NvbnN0X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgoyMDA3LTAyLTExICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2V4dHJhKTogRGVsZXRlIG91dGRhdGVkIHBhcmFncmFwaC4KCjIwMDctMDItMTEgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCSogZHdhcmYyb3V0LmMgKHJvb3RfdHlwZSk6IERlbGV0ZSB1bnVzZWQgZnVuY3Rpb24uCgoyMDA3LTAyLTExICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIGdlbmF0dHJ0YWIuYyAoY29udGFpbmVkX2luX3ApOiBEZWxldGUgdW51c2VkIGZ1bmN0aW9uLgoJKHdyaXRlX2V4cHJfYXR0cl9jYWNoZSk6IExpa2V3aXNlLgoKMjAwNy0wMi0xMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaXBhLWlubGluZS5jIChjZ3JhcGhfZWRnZV9iYWRuZXNzKTogQWRkICJlbHNlIiBtaXNzaW5nIGluIHRoZQoJcHJldmlvdXMgcGF0Y2guCgoyMDA3LTAyLTExICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBmd3Byb3AuYyAodHJ5X2Z3cHJvcF9zdWJzdCk6IFVzZSBzZXRfdW5pcXVlX3JlZ19ub3RlCgl0byBhZGQgdGhlIFJFR19FUSogbm90ZS4KCSogc2VlLmMgKHNlZV9tZXJnZV9vbmVfdXNlX2V4dGVuc2lvbik6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jICh1cGRhdGVfZXF1aXZfcmVncyk6IExpa2V3aXNlLiAgQWxzbyBkb24ndAoJdHVybiBSRUdfRVFVQUwgbm90ZXMgaW50byBSRUdfRVFVSVYgbm90ZXMgaWYgdGhlIHRhcmdldAoJcmVnaXN0ZXIgbWF5IGhhdmUgbW9yZSB0aGFuIG9uZSBzZXQuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX3NldHVwX3JlZyk6IFVzZSBzZXRfdW5pcXVlX3JlZ19ub3RlLgoJKiBnY3NlLmMgKHRyeV9yZXBsYWNlX3JlZyk6IExpa2V3aXNlLgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKTogVXNlIGZpbmRfcmVnX2VxdWFsX2VxdWl2X25vdGUuCgkqIGNhbGxzLmMgKGZpeHVwX3RhaWxfY2FsbHMpOiBMaWtld2lzZS4gIEFib3J0IGlmIHRoZXJlIGlzCgltb3JlIHRoYW4gb25lIFJFR19FUVVJViBub3RlLgoJKiByZWxvYWQxLmMgKGdlbl9yZWxvYWQpOiBVc2Ugc2V0X3VuaXF1ZV9yZWdfbm90ZS4KCjIwMDctMDItMTEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKFRBUkdFVF9WRUNUT1JJWkVfQlVJTFRJTl9DT05WRVJTSU9OKTogRGVmaW5lLgoJKGl4ODZfYnVpbHRpbl9jb252ZXJzaW9uKTogTmV3IGZ1bmN0aW9uLgoKMjAwNy0wMi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjk0ODcKCSogdHJlZS5oIChERUNMX1JFUExBQ0VBQkxFX1ApOiBOZXcgbWFjcm8uCgkqIGV4Y2VwdC5jIChzZXRfbm90aHJvd19mdW5jdGlvbl9mbGFncyk6IExpa2V3aXNlLgoKMjAwNy0wMi0xMSAgVGVoaWxhIE1leXplbHMgIDx0ZWhpbGFAaWwuaWJtLmNvbT4KCSAgICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgkgICAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfVkVDVE9SSVpFX0JVSUxUSU5fQ09OVkVSU0lPTik6IE5ldyB0YXJnZXQgaG9vay4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfYnVpbHRpbl92ZWN0b3JpemVkX2NvbnZlcnNpb24pOiBOZXcuCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X2J1aWx0aW5fdmVjdG9yaXplZF9mdW5jdGlvbik6IE5ldyBkZWNsYXJhdGlvbi4KCSogdGFyZ2V0LmggKHN0cnVjdCB2ZWN0b3JpemUpOiBBZGQgYnVpbHRpbl9jb252ZXJzaW9uIGZpZWxkLgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAodHlwZV9jb252ZXJzaW9uX3ZlY19pbmZvX3R5cGUpOiBOZXcgZW51bQoJc3RtdF92ZWNfaW5mb190eXBlIHZhbHVlLgoJKHZlY3Rvcml6YWJsZV9jb252ZXJzaW9uKTogTmV3IGRlY2xhcmF0aW9uLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyk6IEFkZAoJdmVjdG9yaXphYmxlX2NvbnZlcnNpb24gY2FsbC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfVkVDVE9SSVpFX0JVSUxUSU5fQ09OVkVSU0lPTik6IE5ldy4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0b3JpemFibGVfY29udmVyc2lvbik6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X3RyYW5zZm9ybV9zdG10KTogQWRkIGNhc2UgZm9yIHR5cGVfY29udmVyc2lvbl92ZWNfaW5mb190eXBlLgoJKiB0cmVlLXZlY3QtZ2VuZXJpYy5jIChleHBhbmRfdmVjdG9yX29wZXJhdGlvbnNfMSk6IENvbnNpZGVyIGNvcnJlY3QKCW1vZGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9idWlsdGluX2NvbnZlcnNpb24pOiBOZXcuCgkoVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX0NPTlZFUlNJT04pOiBEZWZpbmVkLgoJKHJzNjAwMF9leHBhbmRfYnVpbHRpbik6IEFkZCBoYW5kbGluZyBhIGNhc2Ugb2YgQUxUSVZFQ19CVUlMVElOX1ZDRlVYCglvciBBTFRJVkVDX0JVSUxUSU5fVkNGU1guCgoyMDA3LTAyLTEwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8zMDYzNAoJKiBwYS5tZCAobW92ZGYpOiBGb3IgNjQtYml0IHRhcmdldCwgZmFpbCBpZiBvcGVyYW5kIDEgaXMgYSBub24temVybwoJQ09OU1RfRE9VQkxFIGFuZCBvcGVyYW5kIDAgaXMgYSBoYXJkIHJlZ2lzdGVyLgoJKG1vdmRpKTogRm9yIDY0LWJpdCB0YXJnZXQsIHJlbW92ZSBjb2RlIHRvIGZvcmNlIENPTlNUX0RPVUJMRSB0bwoJbWVtb3J5LiAgRmFpbCBpZiBvcGVyYW5kIDEgaXMgYSBub24temVybyBDT05TVF9JTlQgYW5kIG9wZXJhbmQgMAoJaXMgYSBoYXJkIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyLgoKMjAwNy0wMi0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJnY2Mtc3VwcG9ydCwgbGliZ2NjLm12YXJzKTogQWRkIGVtdXRscy5jLgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfV09SRCk6IE1ha2UgdW5zaWduZWQuCgkoQlRfRk5fVk9JRF9QVFJfV09SRF9XT1JEX1BUUik6IE5ldy4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9FTVVUTFNfR0VUX0FERFJFU1MpOiBOZXcuCgkoQlVJTFRfSU5fRU1VVExTX1JFR0lTVEVSX0NPTU1PTik6IE5ldy4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZXJyb3IgaWYgIWhhdmVfdGxzLgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9vbXBfdGhyZWFkcHJpdmF0ZSk6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYyAobG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlXzEpOiBEb24ndCBkbyBhbnl0aGluZyBmb3IKCWVtdWxhdGVkIHRscy4KCSogZXhwci5jIChlbXV0bHNfdmFyX2FkZHJlc3MpOiBOZXcuCgkoZXhwYW5kX2V4cHJfcmVhbF8xKTogRXhwYW5kIGVtdWxhdGVkIHRscy4KCShleHBhbmRfZXhwcl9hZGRyX2V4cHJfMSk6IExpa2V3aXNlLgoJKiBsaWJnY2Mtc3RkLnZlcjogQWRkIF9fZW11dGxzX2dldF9hZGRyZXNzLCBfX2VtdXRsc19yZWdpc3Rlcl9jb21tb24uCgkqIG91dHB1dC5oIChlbXV0bHNfZmluaXNoKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IENhbGwgaXQuCgkqIHRyZWUtc3NhLWFkZHJlc3MuYyAoZ2VuX2FkZHJfcnR4KTogQ2hlY2sgZm9yIGNvbnN0LW5lc3Mgb2YgdGhlCglhZGRyZXNzIGJlZm9yZSB3cmFwcGluZyBpbiBDT05TVC4KCSogdmFyYXNtLmMgKGVtdXRsc19odGFiLCBlbXV0bHNfb2JqZWN0X3R5cGUpOiBOZXcuCgkoRU1VVExTX1ZBUl9QUkVGSVgsIEVNVVRMU19UTVBMX1BSRUZJWCk6IE5ldy4KCShnZXRfZW11dGxzX29iamVjdF9uYW1lLCBnZXRfZW11dGxzX29iamVjdF90eXBlKTogTmV3LgoJKGdldF9lbXV0bHNfaW5pdF90ZW1wbF9hZGRyLCBlbXV0bHNfZGVjbCk6IE5ldy4KCShlbXV0bHNfY29tbW9uXzEsIGVtdXRsc19maW5pc2gpOiBOZXcuCgkoYXNzZW1ibGVfdmFyaWFibGUpOiBXaGVuIGVtdWxhdGluZyB0bHMsIHN3YXAgZGVjbHM7IGdlbmVyYXRlCgljb25zdHJ1Y3RvciBmb3IgdGhlIGVtdXRscyBvYmplY3RzLgoJKGRvX2Fzc2VtYmxlX2FsaWFzKTogV2hlbiBlbXVsYXRpbmcgdGxzLCBzd2FwIGRlY2wgYW5kIHRhcmdldCBuYW1lLgoJKGRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IERvbid0IGFkZCBTWU1CT0xfRkxBR19UTFNfU0hJRlQKCWZvciBlbXVsYXRlZCB0bHMuCgkqIHZhcnBvb2wuYyAoZGVjaWRlX2lzX3ZhcmlhYmxlX25lZWRlZCk6IExvb2sgYXQgZm9yY2Vfb3V0cHV0LgoJUmVjdXJzZSBmb3IgZW11bGF0ZWQgdGxzLgoJKGNncmFwaF92YXJwb29sX3JlbW92ZV91bnJlZmVyZW5jZWRfZGVjbHMpOiBSZW1vdmUgY2hlY2tzIHJlZHVuZGFudAoJd2l0aCBkZWNpZGVfaXNfdmFyaWFibGVfbmVlZGVkLgoJKiBlbXV0bHMuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmggKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogT25seSBlbWl0Cgl0bHNfb2JqZWN0IGZvciByZWFsIHRscy4KCjIwMDctMDItMTAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjk1OTkKCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVnc19pbl9pbnNuKTogVGFrZSB0aGUgZGVzdGluYXRpb24KCW1vZGUgaW50byBhY2NvdW50IHdoZW4gY29tcHV0aW5nIHRoZSBvZmZzZXQuCgoyMDA3LTAyLTA5ICBTdHVhcnQgSGFzdGluZ3MgIDxzdHVhcnRAYXBwbGUuY29tPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9LRUVQU19WRUNUT1JfQUxJR05FRF9TVEFDSyk6IE5ldy4KCSogY29uZmlnL2kzODYvZGFyd2luLmg6IChUQVJHRVRfS0VFUFNfVkVDVE9SX0FMSUdORURfU1RBQ0spOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGZpeHVuc190cnVuYzxtb2RlPnNpMiwgZml4dW5zX3RydW5jc2ZoaTIsCglmaXh1bnNfdHJ1bmNkZmhpMik6IE5ldy4KCShmaXhfdHJ1bmNzZmRpX3NzZSk6IENhbGwgaXg4Nl9leHBhbmRfY29udmVydF9zaWduX2RpZGZfc3NlLgoJKGZsb2F0dW5zZGlkZjIpOiBDYWxsIGl4ODZfZXhwYW5kX2NvbnZlcnRfdW5zX2RpZGZfc3NlLgoJKGZsb2F0dW5zc2lzZjIpOiBBZGQgY2FsbCB0byBpeDg2X2V4cGFuZF9jb252ZXJ0X3Vuc19zaXNmX3NzZS4KCShmbG9hdHVuc3NpZGYyKTogQWxsb3cgbm9uaW1tZWRpYXRlIHNvdXJjZS4KCSogY29uZmlnL2kzODYvc3NlLm1kIChtb3ZkaV90b19zc2UpOiBOZXcuCgkodmVjX2NvbmNhdHYyZGkpOiBEcm9wICcqJy4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9leHBhbmRfY29udmVydF91bnNfc2lfc3NlLAoJaXg4Nl9leHBhbmRfY29udmVydF91bnNfZGlkZl9zc2UsIGl4ODZfZXhwYW5kX2NvbnZlcnRfdW5zX3NpZGZfc3NlLAoJaXg4Nl9leHBhbmRfY29udmVydF91bnNfc2lzZl9zc2UsIGl4ODZfZXhwYW5kX2NvbnZlcnRfc2lnbl9kaWRmX3NzZSk6CglOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfY29udmVydF91bnNfc2lfc3NlLAoJaXg4Nl9leHBhbmRfY29udmVydF91bnNfZGlkZl9zc2UsIGl4ODZfZXhwYW5kX2NvbnZlcnRfdW5zX3NpZGZfc3NlLAoJaXg4Nl9leHBhbmRfY29udmVydF91bnNfc2lzZl9zc2UsIGl4ODZfZXhwYW5kX2NvbnZlcnRfc2lnbl9kaWRmX3NzZSwKCWl4ODZfYnVpbGRfY29uc3RfdmVjdG9yLCBpeDg2X2V4cGFuZF92ZWN0b3JfaW5pdF9vbmVfbm9uemVybyk6IE5ldy4KCShpeDg2X2J1aWxkX3NpZ25iaXRfbWFzayk6IEZpeCBkZWNsIG9mIHYsIHJlZmFjdG9yIHRvIGNhbGwKCWl4ODZfYnVpbGRfY29uc3RfdmVjdG9yLgoJKHg4Nl9lbWl0X2Zsb2F0dW5zKTogUmV3cml0ZS4KCjIwMDctMDItMTAgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCSogZ2VuYXV0b21hdGEuYyAobG9uZ2VzdF9wYXRoX2xlbmd0aCk6IERlbGV0ZSB1bnVzZWQgZnVuY3Rpb24uCgkoc3RydWN0IHN0YXRlKTogRGVsZXRlIHVudXNlZCBsb25nZXN0X3BhdGhfbGVuZ3RoLgoJKFVOREVGSU5FRF9MT05HRVNUX1BBVEhfTEVOR1RIKTogRGVsZXRlIHVudXNlZCBtYWNyby4KCShnZXRfZnJlZV9zdGF0ZSk6IERlbGV0ZSB1bnVzZWQuCgoyMDA3LTAyLTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwYXJhbXMuZGVmIChQQVJBTV9JTkxJTkVfVU5JVF9HUk9XVEgpOiBTZXQgdG8gMzAuCgkqIGRvYy9pbnZva2UudGV4aSAoaW5saW5lLXVuaXQtZ3Jvd3RoKTogVXBkYXRlIGRlZmF1bHQgdmFsdWUuCgoJKiBNYWtlZmlsZS5pbiAocGFzc2VzLm8sIGlwYS1pbmxpbmUubyk6IEFkZCBkZXBlbmRlbmNpZXMuCgkqIGNncmFwaGJ1aWxkLmMgKGJ1aWxkX2NncmFwaF9lZGdlcyk6IENvbXB1dGUgZnJlcXVlbmNpZXMuCgkocmVidWlsZF9jZ3JhcGhfZWRnZXMpOiBMaWtld2lzZS4KCSogY2dyYXBoLmMgKGNncmFwaF9zZXRfY2FsbF9zdG10KTogQWRkIG5ldyBhcmd1bWVudCBmcmVxdWVuY3kuCgkoZHVtcF9jZ3JhcGhfbm9kZSk6IER1bXAgZnJlcXVlbmNpZXMuCgkoY2dyYXBoX2Nsb25lX2VkZ2UpOiBBZGQgZnJlcXVlbmN5IHNjYWxlcy4KCShjZ3JhcGhfY2xvbmVfbm9kZSk6IEFkZCBmcmV1cW5lY3kuCgkqIGNncmFwaC5oIChjZ3JhcGhfZWRnZSk6IEFkZCBmcmV1cW5lY3kgYXJndW1lbnQuCgkoQ0dSQVBIX0ZSRVFfQkFTRSwgQ0dSQVBIX0ZSRVFfTUFYKTogTmV3IGNvbnN0YW50cy4KCShjZ3JhcGhfY3JlYXRlX2VkZ2UsIGNncmFwaF9jbG9uZV9lZGdlLCBjZ3JhcGhfY2xvbmVfbm9kZSk6IFVwZGF0ZS4KCSogdHJlZS1wYXNzLmggKFRPRE9fcmVidWlsZF9mcmVxdWVuY2llcyk6IE5ldyBjb25zdGFudC4KCSogY2dyYXBodW5pdC5jICh2ZXJpZnlfY2dyYXBoX25vZGUpOiBWZXJpZnkgZnJlcXVlbmNpZXMuCgkoY2dyYXBoX2NvcHlfbm9kZV9mb3JfdmVyc2lvbmluZyk6IFVwZGF0ZSBjYWxsIG9mIGNncmFwaF9jbG9uZV9lZGdlLgoJKHNhdmVfaW5saW5lX2Z1bmN0aW9uX2JvZHkpOiBMaWtld2lzZS4KCSogaXBhLWlubGluZS5jOiBpbmx1Y2UgcnRsLmgKCShjZ3JhcGhfY2xvbmVfaW5saW5lZF9ub2RzKTogVXBkYXRlIGNhbGwgb2YgY2dyYXBoX2Nsb25lX25vZGUuCgkoY2dyYXBoX2VkZ2VfYmFkbmVzcyk6IFVzZSBmcmVxdWVuY2llcy4KCShjZ3JhcGhfZGVjaWRlX3JlY3Vyc2l2ZV9pbmxpbmluZyk6IFVwZGF0ZSBjbG9ubmluZy4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nX29mX3NtYWxsX2Z1bmN0aW9uKTogRHVtcCBmcmVxdWVuY3kuCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfYmJfZnJlcXVlbmNpZXMpOiBFeHBvcnQuCgkqIHByZWRpY3QuaCAoZXN0aW1hdGVfYmJfZnJlcXVlbmNpZXMpOiBEZWNsYXJlLgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JiKTogV2F0Y2ggb3ZlcmZsb3dzLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IFVwZGF0ZSBjYWxsIG9mIGNncmFwaF9jcmVhdGVfZWRnZS4KCShvcHRpbWl6ZV9pbmxpbmVfY2FsbHMpOiBVc2UgVE9ETyBmbGFncyB0byB1cGRhdGUgZnJlcXVuZWNpZXMuCgkqIHBhc3Nlcy5oOiBJbmNsdWRlIHByZWRpY3QuaAoJKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IE1vdmUgcHJvZmlsZSBhaGVhZC4KCShleGVjdXRlX2Z1bmN0aW9uX3RvZG8pOiBIYW5kbGUgVE9ET19yZWJ1aWxkX2ZyZXF1ZW5jaWVzLgoKMjAwNy0wMi0wOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoZW1pdF9pbnN4bCk6IEZvcmNlIHRoZSBmaXJzdCBvcGVyYW5kIG9mCgl0aGUgaW5zYmwgb3IgaW5zd2wgcGF0dGVybiBpbnRvIGEgcmVnaXN0ZXIuCgoyMDA3LTAyLTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGJzd2FwZGkyKTogTmV3IGRlZmluZV9pbnNuLgoKMjAwNy0wMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIChZbSk6IE5ldyBjb25zdHJhaW50LgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtb3ZzaV8xKTogQ2hhbmdlIFkyIHRvIFlpIGNvbnN0cmFpbnRzLgoJKG1vdmRpXzFfcmV4NjQpOiBTcGxpdCBzc2UgYW5kIHhtbSBnZW5lcmFsIHJlZ2lzdGVyIG1vdmVzIGZyb20KCW1lbW9yeSBtb3ZlIGFsdGVybmF0aXZlcy4gIFVzZSBjb25kaXRpb25hbCByZWdpc3RlciBjb25zdHJhaW50cy4KCShtb3ZzZl8xLCBtb3ZkZl9pbnRlZ2VyKTogTGlrZXdpc2UuCgkoemVyb19leHRlbmRzaWRpMl8zMiwgemVyb19leHRlbmRzaWRpMl9yZXg2NCk6IExpa2V3aXNlLgoJKG1vdmRmX2ludGVnZXJfcmV4NjQpOiBOZXcuCgkocHVzaHNmX3JleDY0KTogRml4IG91dHB1dCBjb25zdHJhaW50cy4KCSogY29uZmlnL2kzODYvc3NlLm1kIChzc2UyX2xvYWRsZCk6IFNwbGl0IHJtIGFsdGVybmF0aXZlLCB1c2UgWWkuCgkoc3NlMl9zdG9yZWQpOiBMaWtld2lzZS4KCShzc2UyX3N0b3JlcV9yZXg2NCk6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfaW50ZXJfdW5pdF9tb3Zlcyk6IEVuYWJsZSBmb3Igbm90CglhbWQgYW5kIG5vdCBnZW5lcmljLgoJKGl4ODZfc2Vjb25kYXJ5X21lbW9yeV9uZWVkZWQpOiBEb24ndCBieXBhc3MgVEFSR0VUX0lOVEVSX1VOSVRfTU9WRVMKCWZvciBvcHRpbWl6ZV9zaXplLiAgUmVtb3ZlIFNGL0RGbW9kZSBoYWNrLgoKMjAwNy0wMi0wOSAgRHdhcmFrYW5hdGggUmFqYWdvcGFsICA8ZHdhcmFrLnJhamFnb3BhbEBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvZHJpdmVyLWkzODYuYzogVHVybiBvbiAtbXR1bmU9bmF0aXZlIGZvciBBTURGQU0xMC4KCShiaXRfU1NFNGEpOiBOZXcuCgoyMDA3LTAyLTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAobTY4MDEwLSotbmV0YnNkZWxmKiwgbTY4ayotKi1uZXRic2RlbGYqKQoJKG02OGsqLSotb3BlbmJzZCosIG02OGstKi1saW51eCopOiBTZXQgZGVmYXVsdF9jZl9jcHUuCgkobTY4ay0qLWFvdXQqLCBtNjhrLSotY29mZiosIG02OGstKi11Y2xpbnV4KiwgbTY4ay0qLXJ0ZW1zKik6IEFkZAoJbTY4ay90LW1saWIgdG8gdG1ha2VfZmlsZS4KCShtNjgwMjAtKi1lbGYqLCBtNjhrLSotZWxmKik6IExpa2V3aXNlLiAgQWRkIHQtbTY4a2JhcmUgYXMgd2VsbC4KCShtNjhrKi0qLSopOiBVc2UgLS13aXRoLWFyY2ggdG8gcGljayBhIGRlZmF1bHQgZm9yIC0td2l0aC1jcHUuCgkobTY4MFswMTJdMC0qLSosIG02OGsqLSotKik6IEFkZCBzdXBwb3J0IGZvciAtLXdpdGgtYXJjaC4KCUFsbG93IGl0IHRvIGJlIGNmIG9yIG02OGsuICBTZXQgbTY4a19hcmNoX2ZhbWlseS4gIElmIHRoYXQKCXZhcmlhYmxlIGlzIG5vdCBlbXB0eSwgYWRkIHQtJG02OGtfYXJjaF9mYW1pbHkgdG8gdG1ha2VfZmlsZS4KCUFkZCB0LW1saWJzIHRvIHRtYWtlX2ZpbGUuCgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IC0td2l0aC1hcmNoPW02OGsgYW5kIC0td2l0aC1hcmNoPWNmLgoJKiBjb25maWcvbTY4ay90LWNmOiBOZXcgZmlsZS4KCSogY29uZmlnL202OGsvdC1tNjhrOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvdC1tbGliczogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL3QtbTY4a2JhcmUgKE1VTFRJTElCX09QVElPTlMsIE1VTFRJTElCX0RJUk5BTUVTKQoJKE1VTFRJTElCX01BVENIRVMsIE1VTFRJTElCX0VYQ0VQVElPTlMpOiBEZWxldGUuCgkoTTY4S19NTElCX0RJUk5BTUVTLCBNNjhLX01MSUJfT1BUSU9OUyk6IERlZmluZS4KCSogY29uZmlnL202OGsvdC1tNjhrZWxmIChNVUxUSUxJQl9PUFRJT05TLCBNVUxUSUxJQl9ESVJOQU1FUykKCShNVUxUSUxJQl9NQVRDSEVTLCBNVUxUSUxJQl9FWENFUFRJT05TLCBMSUJHQ0MsIElOU1RBTExfTElCR0NDKToKCURlbGV0ZS4KCSogY29uZmlnL202OGsvdC1vcGVuYnNkIChNVUxUSUxJQl9PUFRJT05TLCBMSUJHQ0MpOiBEZWxldGUuCgkoSU5TVEFMTF9MSUJHQ0MpOiBEZWxldGUuCgkoTTY4S19NTElCX0RJUk5BTUVTLCBNNjhLX01MSUJfT1BUSU9OUyk6IERlZmluZS4KCSogY29uZmlnL202OGsvdC1ydGVtcyAoTVVMVElMSUJfT1BUSU9OUywgTVVMVElMSUJfRElSTkFNRVMpCgkoTVVMVElMSUJfTUFUQ0hFUywgTVVMVElMSUJfRVhDRVBUSU9OUyk6IERlbGV0ZS4KCShNNjhLX01MSUJfQ1BVKTogRGVmaW5lLgoJKiBjb25maWcvbTY4ay90LXVjbGludXggKE1VTFRJTElCX09QVElPTlMsIE1VTFRJTElCX0RJUk5BTUVTKQoJKE1VTFRJTElCX01BVENIRVMsIE1VTFRJTElCX0VYQ0VQVElPTlMpOiBEZWxldGUuCgkoTTY4S19NTElCX0NQVSwgTTY4S19NTElCX09QVElPTlMsIE02OEtfTUxJQl9ESVJOQU1FUyk6IERlZmluZS4KCjIwMDctMDItMDkgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgkgICAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjMzNjEKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbXBhcmlzb24pOiBIYW5kbGUgb2JmdXNjYXRlZCBjb21wYXJpc29ucwoJYWdhaW5zdCBJTlRfTUlOL0lOVF9NQVguCgkqIHRyZWUtc3NhLWxvb3AtaXZjYW5vbi5jIChyZW1vdmVfZW1wdHlfbG9vcCk6IFByaW50IHRvIGR1bXAKCWZpbGUgaWYgYSBsb29wIGlzIHJlbW92ZWQuCgoyMDA3LTAyLTA5ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGxzLmMgKHN0b3JlX29uZV9hcmcpOiBQYXNzIGNvcnJlY3QgYWxpZ25tZW50IHRvCgllbWl0X3B1c2hfaW5zbiBmb3Igbm9uLUJMS21vZGUgdmFsdWVzLgoJKiBleHByLmMgKGVtaXRfcHVzaF9pbnNuKTogSWYgU1RSSUNUX0FMSUdOTUVOVCwgY29weSB0byBhbgoJdW5hbGlnbmVkIHN0YWNrIHNsb3QgdmlhIGEgc3VpdGFibHkgYWxpZ25lZCBzbG90LgoKMjAwNy0wMi0wOCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy9tMzJjLmMgKG0zMmNfdW5wZW5kX2NvbXBhcmUpOiBBZGQgZGVmYXVsdCB0byBzaWxlbmNlCgl3YXJuaW5ncy4KCShsZWdhbF9zdWJyZWdzKTogVXNlIHVuc2lnbmVkIGNoYXIsIG1ha2UgY29uc3QuCgkobTMyY19pbGxlZ2FsX3N1YnJlZ19wKTogVXNlIEFSUkFZX1NJWkUuICBEZWxldGUgdW51c2VkIHZhcmlhYmxlcy4KCjIwMDctMDItMDggIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc20gKFJFVExETSk6IFBvcCBkaXJlY3RseSBpbnRvIFBDIHdoZW4gbm8KCXNwZWNpYWwgaW50ZXJ3b3JraW5nIG5lZWRlZC4KCjIwMDctMDItMDggIEhhcnNoYSBKYWdhc2lhICA8aGFyc2hhLmphZ2FzaWFAYW1kLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3htbWludHJpbi5oOiBNYWtlIGluY2x1c2lvbiBvZiBlbW1pbnRyaW4uaAoJY29uZGl0aW9uYWwgdG8gX19TU0UyX18uCgkoRW50cmllcyBiZWxvdyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIGZpcnN0IENoYW5nZUxvZwoJZW50cnkgZm9yIGFtZGZhbTEwIGRhdGVkIDIwMDctMDItMDUpCgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oOiBHZW5lcmF0ZSAjZXJyb3IgaWYgX19TU0UyX18gaXMgbm90CglkZWZpbmVkLgoJKiBjb25maWcvaTM4Ni9wbW1pbnRyaW4uaDogR2VuZXJhdGUgI2Vycm9yIGlmIF9fU1NFM19fIGlzIG5vdAoJZGVmaW5lZC4KCSogY29uZmlnL2kzODYvdG1taW50cmluLmg6IEdlbmVyYXRlICNlcnJvciBpZiBfX1NTU0UzX18gaXMgbm90CglkZWZpbmVkLgoKMjAwNy0wMi0wOCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy9tMzJjLXByb3Rvcy5oIChtMzJjX2lsbGVnYWxfc3VicmVnX3ApOiBOZXcuCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobGVnYWxfc3VicmVncyk6IE5ldy4KCShtMzJjX2lsbGVnYWxfc3VicmVnX3ApOiBOZXcuCgkqIGNvbmZpZy9tMzJjL3ByZWRpY2F0ZXMubWQgKG0zMmNfYW55X29wZXJhbmQpOiBVc2UgaXQgdG8gcmVqZWN0Cgl1bnN1cHBvcnRlZCBzdWJyZWdzIG9mIGhhcmQgcmVncy4KCjIwMDctMDItMDggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtY2ZnLmMgKGJzaV9yZXBsYWNlKTogU2hvcnRjdXQgd2hlbiByZXBsYWNpbmcgdGhlIHN0YXRlbWVudCB3aXRoCgl0aGUgc2FtZSBvbmU7IGFsd2F5cyB1cGRhdGUgaGlzdG9ncmFtcy4KCjIwMDctMDItMDggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFRpZHkgY29tbWVudC4KCjIwMDctMDItMDggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbl8xKSA8UE9QQ09VTlQ+OiBXZSBjYW4KCXN0cmlwIHplcm9fZXh0ZW5kLCBic3dhcCBhbmQgcm90YXRlcyBmcm9tIFBPQ09VTlQncyBhcmd1bWVudC4KCTxQQVJJVFk+OiBMaWtld2lzZSwgd2UgY2FuIHN0cmlwIG5vdCwgYnN3YXAsIHNpZ25fZXh0ZW5kLAoJemVyb19leHRlbmQgYW5kIHJvdGF0ZXMgZnJvbSBQQVJJVFkncyBhcmd1bWVudC4KCTxCU1dBUD46IEEgYnl0ZS1zd2FwIGZvbGxvd2VkIGJ5IGEgYnl0ZS1zd2FwIGlzIGFuIGlkZW50aXR5LgoJKHNpbXBsaWZ5X2NvbnN0X3VuYXJ5X29wZXJhdGlvbikgPEJTV0FQPjogRXZhbHVhdGUgdGhlIGJ5dGUtc3dhcAoJb2YgYW4gaW50ZWdlciBjb25zdGFudCBhdCBjb21waWxlLXRpbWUuCgoyMDA3LTAyLTA4ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiAzMDU2MgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IHZhcl9hbm5fZCk6IFJlbW92ZSBmaWVsZCAnaXNfdXNlZCcuCglVcGRhdGUgYWxsIHVzZXJzLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb21wdXRlX2lzX2FsaWFzZWQpOiBSZW1vdmUuICBVcGRhdGUgYWxsCgl1c2Vycy4KCShpbml0X2FsaWFzX2luZm8pOgoJKiB0cmVlLXNzYS1saXZlLmMgKHJlbW92ZV91bnVzZWRfbG9jYWxzKTogRG8gbm90IHJlbW92ZQoJVFJFRV9BRERSRVNTQUJMRSB2YXJpYWJsZXMuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGNvbXB1dGVfcG9pbnRzX3RvX3NldHMpOiBUaWR5LgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmlydHVhbF9vcGVyYW5kKTogUmVtb3ZlIGFyZ3VtZW50CglGT1JfQ0xPQkJFUi4gIFVwZGF0ZSBhbGwgdXNlcnMuCglJZiBWQVIgaGFzIGFuIGFzc29jaWF0ZWQgYWxpYXMgc2V0LCBhZGQgYSB2aXJ0dWFsIG9wZXJhbmQgZm9yCglpdCBpZiBubyBhbGlhcyBpcyBmb3VuZCB0byBjb25mbGljdCB3aXRoIHRoZSBtZW1vcnkgcmVmZXJlbmNlLgoKMjAwNy0wMi0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJICAgIFJvYmVydCBLaWRkIDxya2lkZEBjcmhjLnVpdWMuZWR1PgoKCSogdmFsdWUtcHJvZi5jICh2aXNpdF9oaXN0LCBmcmVlX2hpc3QpOiBSZXR1cm4gMSBpbnN0ZWFkIG9mIDAuCgoyMDA3LTAyLTA3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogbG93ZXItc3VicmVnLmMgKHNpbXBsZV9tb3ZlKTogUmVqZWN0IFBBUlRJQUxfSU5UIG1vZGVzLgoKMjAwNy0wMi0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoY3R6PG1vZGU+MiwgZmZzPG1vZGU+MiwgcG9wY291bnQ8bW9kZT4yLAoJcGFyaXR5PG1vZGU+Miwgc211bHNpM19oaWdocGFydCwgYWJzdGYyX2ludGVybmFsLCBhbGxvY2F0ZV9zdGFjaywKCXRhYmxlanVtcGRpLCBtb3ZzaV90b19jcl9vbmUpOiBSZW1vdmUgY29uc3RyYWludHMgZnJvbQoJZGVmaW5lX2V4cGFuZCdzIG1hdGNoX29wZXJhbmRzLgoKMjAwNy0wMi0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBnbG9iYWwuYyAoY29tcHV0ZV9yZWdzZXRzKTogTW92ZSBkZWNsYXRhdGlvbiBvZiAiaSIgaW5zaWRlIG9mCgkjaWZkZWYgRUxJTUlOQUJMRV9SRUdTIHRvIGF2b2lkIHVudXNlZCB2YXJpYWJsZSBib290c3RyYXAgZmFpbHVyZS4KCjIwMDctMDItMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMDcwMwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9zY2FuX29tcF9jbGF1c2VzKTogUmVtb3ZlIHNwZWNpYWwgY2FzaW5nCglvZiBJTkRJUkVDVF9SRUYgPFJFU1VMVF9ERUNMPi4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBQVEFfU1NTRTMgZm9yIGNvcmUyLgoKMjAwNy0wMi0wNiAgSiJvcm4gUmVubmVja2UgIDxqb2Vybi5yZW5uZWNrZUBhcmMuY29tPgoJICAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8yOTc0NgoJKiBjb25maWcvc2gvc2guYyAoZXhwYW5kX2NicmFuY2hkaTQpOiBVc2Ugc2NyYXRjaCByZWdpc3RlcgoJcHJvcGVybHkuCgkoc2hfaW5pdGlhbGl6ZV90cmFtcG9saW5lKTogQWRkIHBhcmVudGhlc2VzIHRvIGF2b2lkIGEgd2FybmluZy4KCjIwMDctMDItMDYgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGRvYy9sb29wLnRleGk6IERvY3VtZW50IHBvc3NpYmlsaXR5IG5vdCB0byBwZXJmb3JtIGRpc2FtYmlndWF0aW9uCglvZiBsb29wcyB3aXRoIG11bHRpcGxlIGxhdGNoZXMuCgkqIGNmZ2xvb3BtYW5pcC5jIChhbHBfZW51bV9wKTogUmVtb3ZlZC4KCShhZGRfbG9vcCk6IEhhbmRsZSBzdWJsb29wcy4gIFVzZSBnZXRfbG9vcF9ib2R5X3dpdGhfc2l6ZS4KCShjcmVhdGVfcHJlaGVhZGVyKTogRG8gbm90IGFsbG93IEVOVFJZX0JMT0NLX1BUUiB0byBiZSBwcmVoZWFkZXIuCgkqIGNmZ2hvb2tzLmMgKHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaF9mb3JjZSk6IFNldCBkb21pbmF0b3IgZm9yCgl0aGUgbmV3IGZvcndhcmRlciBibG9jay4KCShtYWtlX2ZvcndhcmRlcl9ibG9jayk6IE9ubHkgY2FsbCBuZXdfYmJfY2JrIGlmIGl0IGlzIG5vdCBOVUxMLgoJSGFuZGxlIHRoZSBjYXNlIGxhdGNoIGlzIE5VTEwuCgkqIHRyZWUtc3NhLWRvbS5jICh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBBdm9pZCBjZmcKCW1vZGlmaWNhdGlvbnMgd2hlbiBtYXJraW5nIGxvb3AgZXhpdHMuCgkqIGlmY3Z0LmMgKGlmX2NvbnZlcnQpOiBEaXR0by4gIE1hcmsgbG9vcCBleGl0cyBldmVuIGlmIGNmZyBjYW5ub3QKCWJlIG1vZGlmaWVkLgoJKiBsb29wLWluaXQuYyAobG9vcF9vcHRpbWl6ZXJfaW5pdCk6IERvIG5vdCBtb2RpZnkgY2ZnLiAgQ2FsbAoJZGlzYW1iaWd1YXRlX2xvb3BzX3dpdGhfbXVsdGlwbGVfbGF0Y2hlcy4KCSogdHJlZS1jZmdjbGVhbnVwLmMgKGNsZWFudXBfdHJlZV9jZmdfbG9vcCk6IENhbGN1bGF0ZSBkb21pbmF0b3JzCgliZWZvcmUgZml4X2xvb3Bfc3RydWN0dXJlLgoJKiBjZmdsb29wLmM6IEluY2x1ZGUgcG9pbnRlci1zZXQuaCBhbmQgb3V0cHV0LmguCgkoY2Fub25pY2FsaXplX2xvb3BfaGVhZGVycywgSEVBREVSX0JMT0NLLCBMQVRDSF9FREdFLAoJdXBkYXRlX2xhdGNoX2luZm8sIG1mYl9rZWVwX2p1c3QsIG1mYl9rZWVwX25vbmxhdGNoKTogUmVtb3ZlZC4KCShnZXRfbG9vcF9sYXRjaF9lZGdlcywgZmluZF9zdWJsb29wX2xhdGNoX2VkZ2VfYnlfcHJvZmlsZSwKCWZpbmRfc3VibG9vcF9sYXRjaF9lZGdlX2J5X2l2cywgZmluZF9zdWJsb29wX2xhdGNoX2VkZ2UsCgltZmJfcmVkaXJlY3RfZWRnZXNfaW5fc2V0LCBmb3JtX3N1Ymxvb3AsIG1lcmdlX2xhdGNoX2VkZ2VzLAoJZGlzYW1iaWd1YXRlX211bHRpcGxlX2xhdGNoZXMsIGdldF9sb29wX2JvZHlfd2l0aF9zaXplLAoJZGlzYW1iaWd1YXRlX2xvb3BzX3dpdGhfbXVsdGlwbGVfbGF0Y2hlcyk6IE5ldyBmdW5jdGlvbnMuCgkoZmxvd19sb29wX2R1bXApOiBEdW1wIG11bHRpcGxlIGxhdGNoIGVkZ2VzLgoJKGZsb3dfbG9vcF9ub2Rlc19maW5kKTogSGFuZGxlIGxvb3BzIHdpdGggbXVsdGlwbGUgbGF0Y2hlcy4KCShmbG93X2xvb3BzX2ZpbmQpOiBEaXR0by4gRG8gbm90IGNhbGwgY2Fub25pY2FsaXplX2xvb3BfaGVhZGVycy4KCShnbGJfZW51bV9wKTogTW9kaWZpZWQuCgkoZ2V0X2xvb3BfYm9keSk6IFVzZSBnZXRfbG9vcF9ib2R5X3dpdGhfc2l6ZS4KCSogY2ZnbG9vcC5oIChMT09QU19IQVZFX1JFQ09SREVEX0VYSVRTKTogTmV3IGZsYWcuCgkoQVZPSURfQ0ZHX01PRElGSUNBVElPTlMpOiBOZXcgY29uc3RhbnQuCgkoZGlzYW1iaWd1YXRlX2xvb3BzX3dpdGhfbXVsdGlwbGVfbGF0Y2hlcywgYWRkX2xvb3AsCglnZXRfbG9vcF9ib2R5X3dpdGhfc2l6ZSk6IERlY2xhcmUuCgkqIE1ha2VmaWxlLmluIChjZmdsb29wLm8pOiBBZGQgcG9pbnRlci1zZXQuaCBhbmQgb3V0cHV0LmguCgoyMDA3LTAyLTA2ICBTZW9uZ2JhZSBQYXJrIDxzZW9uZ2JhZS5wYXJrQGdtYWlsLmNvbT4KCglQUiBpbmxpbmUtYXNtLzI4Njg2CgkqIGdsb2JhbC5jIChjb21wdXRlX3JlZ3NldHMpOiBOZXcgZnVuY3Rpb24uCgkoZ2xvYmFsX2FsbG9jKTogUmVmYWN0b3JlZCBFTElNSU5BQkxFX1JFR1NFVAoJYW5kIE5PX0dMT0JBTF9BTExPQ19SRUdTIGNvbXB1dGF0aW9uIG91dC4KCShyZXN0X29mX2hhbmRsZV9nbG9iYWxfYWxsb2MpOiBDYWxsIGNvbXB1dGVfcmVnc2V0cygpCglmb3Igbm9uLW9wdGltaXppbmcgY2FzZS4KCjIwMDctMDItMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCAoWTIpOiBSZW5hbWUgZnJvbSBZLgoJKFlpKTogTmV3IGNvbnN0cmFpbnQuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKG1vdnNpXzEsIG1vdmRpXzIsIHB1c2hkZl9ub2ludGVnZXIsCglwdXNoZGZfaW50ZWdlciwgbW92ZGZfbm9pbnRlZ2VyLCBtb3ZkZl9pbnRlZ2VyLCB6ZXJvX2V4dGVuZHNpZGkyXzMyLAoJemVyb19leHRlbmRzaWRpMl9yZXg2NCwgdHJ1bmN4ZmRmMl9taXhlZCk6IENoYW5nZSBZIGNvbnN0cmFpbnRzIHRvIFkyLgoJKGV4dGVuZHNmZGYyX21peGVkLCBleHRlbmRzZmRmMl9zc2UsIHRydW5jZGZzZl9mYXN0X21peGVkLAoJdHJ1bmNkZnNmX2Zhc3Rfc3NlLCB0cnVuY2Rmc2ZfbWl4ZWQsIGZpeF90cnVuY2RmZGlfc3NlLAoJZml4X3RydW5jZGZzaV9zc2UsIGZsb2F0c2lkZjJfbWl4ZWQsIGZsb2F0c2lkZjJfc3NlLAoJZmxvYXRkaWRmMl9taXhlZCwgZmxvYXRkaWRmMl9zc2UsIGFic25lZ2RmMl9taXhlZCwKCWFic25lZ2RmMl9zc2UsIHNzZV9zZXRjY2RmLCBmb3BfZGZfY29tbV9taXhlZCwgZm9wX2RmX2NvbW1fc3NlLAoJZm9wX2RmXzFfbWl4ZWQsIGZvcF9kZl8xX3NzZSk6IENoYW5nZSBZIGNvbnN0cmFpbnRzIHRvIHguCgkqIGNvbmZpZy9pMzg2L21teC5tZCAobW92PE1NWE1PREVJPl9pbnRlcm5hbF9yZXg2NCwKCW1vdjxNTVhNT0RFST5faW50ZXJuYWwsIG1vdnYyc2ZfaW50ZXJuYWxfcmV4NjQsIG1vdnYyc2ZfaW50ZXJuYWwsCgl2ZWNfZXh0cmFjdHYyc2lfMSk6IENoYW5nZSBZIGNvbnN0cmFpbnRzIHRvIFkyLgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKHZlY19zZXR2NHNmXzAsIHZlY19jb25jYXR2MmRmLCB2ZWNfZHVwdjRzaSwKCXZlY19kdXB2MmRpLCBzc2UyX2NvbmNhdHYyc2ksIHZlY19jb25jYXR2NHNpXzEsIHZlY19jb25jYXR2MmRpKToKCUNoYW5nZSBZIGNvbnN0cmFpbnRzIHRvIFkyLgoJKHNzZTJfbG9hZGxkKTogQ2hhbmdlIFkgY29uc3RyYWludHMgdG8geC4KCjIwMDctMDItMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKHBvcGNvdW50PG1vZGU+Mik6IFJld3JpdGUuCgkocGFyaXR5PG1vZGU+Mik6IE5ldyBkZWZpbmVfZXhwYW5kIHVzaW5nIHJzNjAwMF9lbWl0X3Bhcml0eS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfcG9wY291bnQsCglyczYwMDBfZW1pdF9wYXJpdHkpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX2VtaXRfcG9wY291bnQsCglyczYwMDBfZW1pdF9wYXJpdHkpOiBQcm90b3R5cGUgaGVyZS4KCjIwMDctMDItMDYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBsb3dlci1zdWJyZWcuYyAoc2ltcGxlX21vdmVfb3BlcmFuZCk6IFJlamVjdCBDT05TVC4KCShyZXNvbHZlX2Nsb2JiZXIpOiBDYWxsIHZhbGlkYXRlX2NoYW5nZSByYXRoZXIgdGhhbiBkaXJlY3RseQoJYXNzaWduaW5nIHRvIFhFWFAgKHBhdCwgMCkuCgoyMDA2LTAyLTA2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLWxvb3AtaXZvcHRzLm8pOiBBZGQgcG9pbnRlci1zZXQuaCBkZXBlbmRlbmN5LgoJKHRyZWUtc3NhLXJlYXNzb2Mubyk6IEFkZCBwb2ludGVyLXNldC5oIGRlcGVuZGVuY3kuCgkodHJlZS1jZmcubyk6IFJlbW92ZSBoYXNodGFiLmggZGVwZW5kZW5jeS4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmM6IEluY2x1ZGUgcG9pbnRlci1zZXQuaC4KCShzdHJ1Y3QgaXZvcHRzX2RhdGEpOiBDaGFuZ2Ugbml0ZXJzIHRvIHBvaW50ZXJfbWFwX3QuCgkoc3RydWN0IG5mZV9jYWNoZV9lbHQsIG5mZV9oYXNoLCBuZmVfZXEpOiBEZWxldGUuCgkobml0ZXJfZm9yX2V4aXQpOiBDcmVhdGUgcG9pbnRlcl9tYXAgb24gZGVtYW5kLiAgQ2hhbmdlIGZvcgoJcG9pbnRlcl9tYXAgQVBJLgoJKHRyZWVfc3NhX2l2X29wdGltaXplX2luaXQpOiBJbml0aWFsaXplIGRhdGEtPm5pdGVycyB0byBOVUxMLgoJKGZyZWVfbG9vcF9kYXRhKTogRGVzdHJveSBkYXRhLT5uaXRlcnMgaWYgY3JlYXRlZCBhbmQgcmVzZXQgZmllbGQuCgkodHJlZV9zc2FfaXZfb3B0aW1pemVfZmluYWxpemUpOiBEb24ndCBkZWxldGUgZGF0YS0+bml0ZXJzIGhlcmUuCgkodHJlZV9zc2FfaXZfb3B0aW1pemVfbG9vcCk6IENoZWNrIGZvciBwcmVzZW5jZSBvZiBzdGFsZSBkYXRhLgoKCSogdHJlZS1zc2EtcmVhc3NvYy5jOiBJbmNsdWRlIHBvaW50ZXItc2V0LmguCgkoYmJfcmFuayk6IENoYW5nZSB0byBsb25nICouCgkob3BlcmFuZF9yYW5rKTogQ2hhbmdlIHRvIHBvaW50ZXJfbWFwX3QuCgkoZmluZF9vcGVyYW5kX3JhbmspOiBSZXR1cm4gbG9uZywgLTEgaWYgbm90IGZvdW5kLiAgRGVjbGFyZSBhcyBpbmxpbmUuCgkoaW5zZXJ0X29wZXJhbmRfcmFuayk6IEFjY2VwdCBsb25nLgoJKG9wZXJhbmRfZW50cnlfaGFzaCwgb3BlcmFuZF9lbnRyeV9lcSk6IFJlbW92ZS4KCShnZXRfcmFuayk6IFJldHVybiBsb25nLiAgQWRqdXN0IGZvciBjaGFuZ2VzIGFib3ZlLgoJKGluaXRfcmVhc3NvYyk6IENoYW5nZSByYW5rIHR5cGUgdG8gbG9uZy4gIEFkanVzdCBjcmVhdGlvbiBvZiBiYl9yYW5rCglhbmQgb3BlcmFuZF9yYW5rLgoJKGZpbmlfcmVhc3NvYyk6IERlbGV0ZSBvcGVyYW5kX3Jhbmsgd2l0aCBwb2ludGVyX21hcF9kZXN0cm95LgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAodmlfZm9yX3RyZWUpOiBDaGFuZ2UgdG8gcG9pbnRlcl9tYXAuCgkoc3RydWN0IHRyZWVfdmksIHRyZWVfdmlfdCwgdHJlZV92aV9oYXNoLCB0cmVlX3ZpX2VxKTogRGVsZXRlLgoJKGluc2VydF92aV9mb3JfdHJlZSk6IFJld3JpdGUgZm9yIHBvaW50ZXJfbWFwIEFQSS4gIEFzc2VydCBhcmd1bWVudAoJaXMgbm90IE5VTEwuCgkobG9va3VwX3ZpX2Zvcl90cmVlKTogUmV3cml0ZSBmb3IgcG9pbnRlcl9tYXAgQVBJLiAgUmV0dXJuIHZhcmluZm9fdAoJZGlyZWN0bHkgc2luY2UgaXQgY2Fubm90IGJlIE5VTEwuCgkoZ2V0X3ZpX2Zvcl90cmVlKTogUmV3cml0ZSBmb3IgcG9pbnRlcl9tYXAgQVBJLgoJKGZpbmRfd2hhdF9wX3BvaW50c190byk6IEFkanVzdCBmb3IgY2hhbmdlIHRvIGxvb2t1cF92aV9mb3JfdHJlZS4KCShpbml0X2FsaWFzX3ZhcnMpOiBDcmVhdGUgdmlfZm9yX3RyZWUgYXMgcG9pbnRlcl9tYXAuCgkoZGVsZXRlX3BvaW50c190b19zZXRzKTogRGVsZXRlIHZpX2Zvcl90cmVlIHVzaW5nIHBvaW50ZXJfbWFwX2Rlc3Ryb3kuCgoJKiB0cmVlLWNmZy5jOiBEb24ndCBpbmNsdWRlIGhhc2h0YWIuaC4KCShlZGdlX3RvX2Nhc2VzKTogRGVjbGFyZSBhcyBwb2ludGVyX21hcC4KCShzdHJ1Y3QgZWRnZV90b19jYXNlc19lbHQsIGVkZ2VfdG9fY2FzZXNfaGFzaCwgZWRnZV90b19jYXNlc19lcSk6CglEZWxldGUuCgkoZWRnZV90b19jYXNlc19jbGVhbnVwKTogUmV3cml0ZSBhcyBwb2ludGVyX21hcF90cmF2ZXJzZSBjYWxsYmFjay4KCShzdGFydF9yZWNvcmRpbmdfY2FzZV9sYWJlbHMpOiBDcmVhdGUgZWRnZV90b19jYXNlcyBhcyBwb2ludGVyX21hcC4KCShlbmRfcmVjb2RpbmdfY2FzZV9sYWJlbHMpOiBDbGVhbnVwIGVkZ2VfdG9fY2FzZXMgbWFudWFsbHkgYmVmb3JlCglkZXN0cm95aW5nIGl0LgoJKHJlY29yZF9zd2l0Y2hfZWRnZSk6IERlbGV0ZS4KCShnZXRfY2FzZXNfZm9yX2VkZ2UpOiBBZGp1c3QgZm9yIHBvaW50ZXJfbWFwIEFQSSwgaW5saW5lCglyZWNvcmRfc3dpdGNoX2VkZ2UgKHJld3JpdHRlbiBmb3IgbmV3IEFQSSksIHJlbW92ZSBnb3RvLgoKMjAwNi0wMi0wNiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluICh0cmVlLW5lc3RlZC5vKTogQWRkIHBvaW50ZXItc2V0LmggZGVwZW5kZW5jeS4KCSogdHJlZS1uZXN0ZWQuYzogSW5jbHVkZSBwb2ludGVyLXNldC5oLgoJKHZhcl9tYXBfZWx0LCB2YXJfbWFwX2VxLCB2YXJfbWFwX2hhc2gpOiBEZWxldGUuCgkoc3RydWN0IG5lc3RpbmdfaW5mbyk6IFJlbW92ZSBHVFkgbWFya2VyLiAgQ2hhbmdlIHRoZSB0d28gaHRhYl90J3MKCXRvIHBvaW50ZXJfbWFwX3Qncy4KCShuZXN0aW5nX2luZm9fYml0bWFwX29ic3RhY2spOiBOZXcuCgkobG9va3VwX2ZpZWxkX2Zvcl9kZWNsKTogQWRqdXN0IGZvciBwb2ludGVyX21hcCBBUEkuCgkobG9va3VwX3RyYW1wX2Zvcl9kZWNsKTogQWRqdXN0IGZvciBwb2ludGVyX21hcCBBUEkuCgkoZ2V0X25vbmxvY2FsX2RlYnVnX2RlY2wpOiBBZGp1c3QgZm9yIHBvaW50ZXJfbWFwIEFQSS4KCShnZXRfbG9jYWxfZGVidWdfZGVjbCk6IEFkanVzdCBmb3IgcG9pbnRlcl9tYXAgQVBJLgoJKGNvbnZlcnRfbmxfZ290b19yZWZlcmVuY2UpOiBBZGp1c3QgZm9yIHBvaW50ZXJfbWFwIEFQSS4KCShjb252ZXJ0X25sX2dvdG9fcmVjZWl2ZXIpOiBBZGp1c3QgZm9yIHBvaW50ZXJfbWFwIEFQSS4KCShjcmVhdGVfbmVzdGluZ190cmVlKTogQ3JlYXRlIG91dHNpZGUgR0dDIHNwYWNlLiAgQ3JlYXRlIGJpdG1hcCBvbgoJdGhlIG5ldyBvYnN0YWNrLiAgQ3JlYXRlIGZpZWxkX21hcCBhbmQgdmFyX21hcCBhcyBwb2ludGVyX21hcHMuCgkoZnJlZV9uZXN0aW5nX3RyZWUpOiBBZGp1c3QgZm9yIGNoYW5nZXMgdG8gY3JlYXRlX25lc3RpbmdfdHJlZS4KCShyb290KTogRGVsZXRlLgoJKGxvd2VyX25lc3RlZF9mdW5jdGlvbnMpOiBNb3ZlIHJvb3QgaGVyZSwgbm8gbmVlZCB0byBOVUxMIGl0LgoJSW5pdGlhbGl6ZSBhbmQgcmVsZWFzZSB0aGUgb2JzdGFjay4KCjIwMDctMDItMDYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiB0cmVlLmMgKHRyZWVfaW50X21hcF9oYXNoLCB0cmVlX2ludF9tYXBfZXEsIHRyZWVfaW50X21hcF9tYXJrZWRfcCk6CglSZW1vdmUgcHJvdG90eXBlcyBhbmQgbWFrZSB0aGVtIG5vbi1zdGF0aWMuCgkoc3RydWN0IHRyZWVfaW50X21hcCk6IFJlbW92ZS4KCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9pbnRfbWFwKTogTW92ZSBoZXJlLCB0dXJuaW5nIFRPIGludG8gYW4KCXVuc2lnbmVkIGludC4KCSh0cmVlX2ludF9tYXBfaGFzaCwgdHJlZV9pbnRfbWFwX2VxLCB0cmVlX2ludF9tYXBfbWFya2VkX3ApOiBEZWNsYXJlLgoKCSogdHJlZS5oIChUUkVFX0NPTVBMRVhJVFkpOiBSZW1vdmUuCgkoc3RydWN0IHRyZWVfZXhwKTogUmVtb3ZlIGNvbXBsZXhpdHkgZmllbGQuCgkqIHRyZWUuYyAoYnVpbGQxX3N0YXQpOiBEb24ndCBzZXQgaXQuCgoyMDA3LTAyLTA2ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoJICAgIFZpY3RvciBLYXBsYW5za3kgIDx2aWN0b3JrQGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9pc19zaW1wbGVfdXNlKTogU3VwcG9ydCBpbmR1Y3Rpb24uCgkodmVjdF9pc19zaW1wbGVfcmVkdWN0aW9uKTogU3VwcG9ydCByZWR1Y3Rpb24gd2l0aCBpbmR1Y3Rpb24gYXMKCW9uZSBvZiB0aGUgb3BlcmFuZHMuCgkodmVjdF9pc19zaW1wbGVfaXZfZXZvbHV0aW9uKTogRml4IGZvcm1hdHRpbmcuCgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3RfbWFya19zdG10c190b19iZV92ZWN0b3JpemVkKTogRml4Cglmb3JtYXR0aW5nLiAgRG9uJ3QgbWFyayBpbmR1Y3Rpb24gcGhpcyBmb3IgdmVjdG9yaXphdGlvbi4KCSh2ZWN0X2FuYWx5emVfc2NhbGFyX2N5Y2xlcyk6IEFuYWx5emUgYWxsIGluZHVjdGlvbnMsIHRoZW4gcmVkdWN0aW9ucy4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jIChnZXRfaW5pdGlhbF9kZWZfZm9yX2luZHVjdGlvbik6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X2dldF92ZWNfZGVmX2Zvcl9vcGVyYW5kKTogU3VwcG9ydCBpbmR1Y3Rpb24uCgkodmVjdF9nZXRfdmVjX2RlZl9mb3Jfc3RtdF9jb3B5KTogRml4IGZvcm1hdHRpbmcgYW5kIGFkZCBjaGVjayBmb3IKCWluZHVjdGlvbiBjYXNlLgoJKHZlY3Rvcml6YWJsZV9yZWR1Y3Rpb24pOiBTdXBwb3J0IHJlZHVjdGlvbiB3aXRoIGluZHVjdGlvbiBhcyBvbmUgb2YKCXRoZSBvcGVyYW5kcy4KCSh2ZWN0b3JpemFibGVfdHlwZV9kZW1vdGlvbik6IFVzZSBkZWYtdHlwZSBvZiBzdG10IGFyZ3VtZW50IHJhdGhlcgoJdGhhbiBkdW1teSBkZWYtdHlwZS4KCgkqIHRyZWUtc3NhLWxvb3AuYyAoZ2F0ZV9zY2V2X2NvbnN0X3Byb3ApOiBSZXR1cm4gdGhlIHZhbHVlIG9mCglmbGFnX3RyZWVfc2Nldl9jcHJvcC4KCSogY29tbW9uLm9wdCAodHJlZS1zY2V2LWNwcm9wKTogTmV3IGZsYWcuCgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfY3JlYXRlX2Rlc3RpbmF0aW9uX3Zhcik6IFVzZSAna2luZCcgaW4KCWNhbGwgdG8gdmVjdF9nZXRfbmV3X3ZlY3RfdmFyLgoKMjAwNy0wMi0wNiAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0LXBhdHRlcm5zLmMgKHZlY3RfcmVjb2dfd2lkZW5fbXVsdF9wYXR0ZXJuKTogQ2hlY2sgdGhhdAoJdmVjdHlwZSBpcyBub3QgTlVMTC4KCSh2ZWN0X3BhdHRlcm5fcmVjb2dfMSk6IExpa2V3aXNlLgoKMjAwNy0wMi0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZm9sZC1jb25zdC5jIChuZWdhdGVfZXhwcl9wKTogSGFuZGxlIENPTkpfRVhQUi4KCShmb2xkX25lZ2F0ZV9leHByKTogTGlrZXdpc2UuCgoyMDA3LTAyLTA1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy8zMDE4OQoJKiBkd2FyZjJvdXQuYyAobW9kaWZpZWRfdHlwZV9kaWUpOiBGb2xsb3cgREVDTF9PUklHSU5BTF9UWVBFCglldmVuIGlmIGN2LXF1YWxpZmljYXRpb24gaXMgdGhlIHNhbWUuCgoyMDA3LTAyLTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLXRyYW1wLmFzbSAoX190cmFtcG9saW5lX3NldHVwKTogQ2FsbAoJX19lbmFibGVfZXhlY3V0ZV9zdGFjayBvbiBjb21wbGV0aW9uLgoKMjAwNy0wMi0wNSAgSGFyc2hhIEphZ2FzaWEgIDxoYXJzaGEuamFnYXNpYUBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvYXRobG9uLm1kIChhdGhsb25fZmxkeGZfazgsIGF0aGxvbl9mbGRfazgsCglhdGhsb25fZnN0eGZfazgsIGF0aGxvbl9mc3RfazgsIGF0aGxvbl9maXN0LCBhdGhsb25fZm1vdiwKCWF0aGxvbl9mYWRkX2xvYWQsIGF0aGxvbl9mYWRkX2xvYWRfazgsIGF0aGxvbl9mYWRkLCBhdGhsb25fZm11bCwKCWF0aGxvbl9mbXVsX2xvYWQsIGF0aGxvbl9mbXVsX2xvYWRfazgsIGF0aGxvbl9mc2duLAoJYXRobG9uX2ZkaXZfbG9hZCwgYXRobG9uX2ZkaXZfbG9hZF9rOCwgYXRobG9uX2ZkaXZfazgsCglhdGhsb25fZnBzcGNfbG9hZCwgYXRobG9uX2Zwc3BjLCBhdGhsb25fZmNtb3ZfbG9hZCwKCWF0aGxvbl9mY21vdl9sb2FkX2s4LCBhdGhsb25fZmNtb3ZfazgsIGF0aGxvbl9mY29taV9sb2FkX2s4LAoJYXRobG9uX2Zjb21pLCBhdGhsb25fZmNvbV9sb2FkX2s4LCBhdGhsb25fZmNvbSk6IEFkZGVkIGFtZGZhbTEwLgoKMjAwNy0wMi0wNSAgSGFyc2hhIEphZ2FzaWEgIDxoYXJzaGEuamFnYXNpYUBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoeDg2X3NhaGZfMSwgY21wZnBfaV9taXhlZCwgY21wZnBfaV9zc2UsCgljbXBmcF9pX2kzODcsIGNtcGZwX2l1X21peGVkLCBjbXBmcF9pdV9zc2UsIGNtcGZwX2l1XzM4NywKCXN3YXBzaSwgc3dhcGhpXzEsIHN3YXBxaV8xLCBzd2FwZGlfcmV4NjQsIGZpeF90cnVuY3NmZGlfc3NlLAoJZml4X3RydW5jZGZkaV9zc2UsIGZpeF90cnVuY3Nmc2lfc3NlLCBmaXhfdHJ1bmNkZnNpX3NzZSwKCXg4Nl9mbGRjd18xLCBmbG9hdHNpc2YyX21peGVkLCBmbG9hdHNpc2YyX3NzZSwgZmxvYXRkaXNmMl9taXhlZCwKCWZsb2F0ZGlzZjJfc3NlLCBmbG9hdHNpZGYyX21peGVkLCBmbG9hdHNpZGYyX3NzZSwKCWZsb2F0ZGlkZjJfbWl4ZWQsIGZsb2F0ZGlkZjJfc3NlLCBtdWxkaTNfMV9yZXg2NCwgbXVsc2kzXzEsCgltdWxzaTNfMV96ZXh0LCBtdWxoaTNfMSwgbXVscWkzXzEsIHVtdWxxaWhpM18xLCBtdWxxaWhpM19pbnNuLAoJdW11bGRpdGkzX2luc24sIHVtdWxzaWRpM19pbnNuLCBtdWxkaXRpM19pbnNuLCBtdWxzaWRpM19pbnNuLAoJdW11bGRpM19oaWdocGFydF9yZXg2NCwgdW11bHNpM19oaWdocGFydF9pbnNuLAoJdW11bHNpM19oaWdocGFydF96ZXh0LCBzbXVsZGkzX2hpZ2hwYXJ0X3JleDY0LAoJc211bHNpM19oaWdocGFydF9pbnNuLCBzbXVsc2kzX2hpZ2hwYXJ0X3pleHQsIHg4Nl82NF9zaGxkLAoJeDg2X3NobGRfMSwgeDg2XzY0X3NocmQsIHNxcnRzZjJfbWl4ZWQsIHNxcnRzZjJfc3NlLAoJc3FydHNmMl9pMzg3LCBzcXJ0ZGYyX21peGVkLCBzcXJ0ZGYyX3NzZSwgc3FydGRmMl9pMzg3LAoJc3FydGV4dGVuZHNmZGYyX2kzODcsIHNxcnR4ZjIsIHNxcnRleHRlbmRzZnhmMl9pMzg3LAoJc3FydGV4dGVuZGRmeGYyX2kzODcpOiBBZGRlZCBhbWRmYW0xMF9kZWNvZGUuCgoJKiBjb25maWcvaTM4Ni9hdGhsb24ubWQgKGF0aGxvbl9pZGlyZWN0X2FtZGZhbTEwLAoJYXRobG9uX2l2ZWN0b3JfYW1kZmFtMTAsIGF0aGxvbl9pZGlyZWN0X2xvYWRfYW1kZmFtMTAsCglhdGhsb25faXZlY3Rvcl9sb2FkX2FtZGZhbTEwLCBhdGhsb25faWRpcmVjdF9ib3RoX2FtZGZhbTEwLAoJYXRobG9uX2l2ZWN0b3JfYm90aF9hbWRmYW0xMCwgYXRobG9uX2lkaXJlY3Rfc3RvcmVfYW1kZmFtMTAsCglhdGhsb25faXZlY3Rvcl9zdG9yZV9hbWRmYW0xMCk6IE5ldyBkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbi4KCShhdGhsb25faWRpcmVjdF9sb2FkbW92LCBhdGhsb25faWRpcmVjdF9tb3ZzdG9yZSk6IEFkZGVkCglhbWRmYW0xMC4KCjIwMDctMDItMDUgIEhhcnNoYSBKYWdhc2lhICA8aGFyc2hhLmphZ2FzaWFAYW1kLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2F0aGxvbi5tZCAoYXRobG9uX2NhbGxfYW1kZmFtMTAsCglhdGhsb25fcG9wX2FtZGZhbTEwLCBhdGhsb25fbGVhX2FtZGZhbTEwKTogTmV3CglkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbi4KCShhdGhsb25fYnJhbmNoLCBhdGhsb25fcHVzaCwgYXRobG9uX2xlYXZlX2s4LCBhdGhsb25faW11bF9rOCwKCWF0aGxvbl9pbXVsX2s4X0RJLCBhdGhsb25faW11bF9tZW1fazgsIGF0aGxvbl9pbXVsX21lbV9rOF9ESSwKCWF0aGxvbl9pZGl2LCBhdGhsb25faWRpdl9tZW0sIGF0aGxvbl9zdHIpOiBBZGRlZCBhbWRmYW0xMC4KCjIwMDctMDItMDUgIEhhcnNoYSBKYWdhc2lhICA8aGFyc2hhLmphZ2FzaWFAYW1kLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2F0aGxvbi5tZCAoYXRobG9uX3NzZWxkX2FtZGZhbTEwLAoJYXRobG9uX21teGxkX2FtZGZhbTEwLCBhdGhsb25fc3Nlc3RfYW1kZmFtMTAsCglhdGhsb25fbW14c3Nlc3Rfc2hvcnRfYW1kZmFtMTApOiBOZXcgZGVmaW5lX2luc25fcmVzZXJ2YXRpb24uCgoyMDA3LTAyLTA1ICBIYXJzaGEgSmFnYXNpYSAgPGhhcnNoYS5qYWdhc2lhQGFtZC5jb20+CgoJKiBjb25maWcvaTM4Ni9hdGhsb24ubWQgKGF0aGxvbl9zc2VpbnNfYW1kZmFtMTApOiBOZXcKCWRlZmluZV9pbnNuX3Jlc2VydmF0aW9uLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzc2VpbnMpOiBBZGRlZCBzc2VpbnMgdG8gZGVmaW5lX2F0dHIgdHlwZQoJYW5kIGRlZmluZV9hdHRyIHVuaXQuCgkqIGNvbmZpZy9pMzg2L3NzZS5tZDogU2V0IHR5cGUgYXR0cmlidXRlIHRvIHNzZWlucyBmb3IgaW5zZXJ0cQoJYW5kIGluc2VydHFpLgoKMjAwNy0wMi0wNSAgSGFyc2hhIEphZ2FzaWEgIDxoYXJzaGEuamFnYXNpYUBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvYXRobG9uLm1kIChzc2Vsb2dfbG9hZF9hbWRmYW0xMCwgc3NlbG9nX2FtZGZhbTEwLAoJc3NlY21wdmVjdG9yX2xvYWRfYW1kZmFtMTAsIHNzZWNtcHZlY3Rvcl9hbWRmYW0xMCwKCXNzZWNvbWlfbG9hZF9hbWRmYW0xMCwgc3NlY29taV9hbWRmYW0xMCwKCXNzZWFkZHZlY3Rvcl9sb2FkX2FtZGZhbTEwLCBzc2VhZGR2ZWN0b3JfYW1kZmFtMTApOiBOZXcKCWRlZmluZV9pbnNuX3Jlc2VydmF0aW9uLgoJKHNzZWNtcF9sb2FkX2s4LCBzc2VjbXAsIHNzZWFkZF9sb2FkX2s4LCBzZWFkZCk6IEFkZGVkIGFtZGZhbTEwLgoKMjAwNy0wMi0wNSAgSGFyc2hhIEphZ2FzaWEgIDxoYXJzaGEuamFnYXNpYUBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvYXRobG9uLm1kIChjdnRzczJzZF9sb2FkX2FtZGZhbTEwLAoJY3Z0c3Myc2RfYW1kZmFtMTAsIGN2dHBzMnBkX2xvYWRfYW1kZmFtMTAsIGN2dHBzMnBkX2FtZGZhbTEwLAoJY3Z0c2kyc2RfbG9hZF9hbWRmYW0xMCwgY3Z0c2kyc3NfbG9hZF9hbWRmYW0xMCwKCWN2dHNpMnNkX2FtZGZhbTEwLCBjdnRzaTJzc19hbWRmYW0xMCwgY3Z0c2Qyc3NfbG9hZF9hbWRmYW0xMCwKCWN2dHNkMnNzX2FtZGZhbTEwLCBjdnRwZDJwc19sb2FkX2FtZGZhbTEwLCBjdnRwZDJwc19hbWRmYW0xMCwKCWN2dHNYMnNpX2xvYWRfYW1kZmFtMTAsIGN2dHNYMnNpX2FtZGZhbTEwKTogTmV3CglkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbi4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoY3Z0c2kyc3MsIGN2dHNpMnNzcSwgY3Z0c3Myc2ksCgljdnRzczJzaXEsIGN2dHRzczJzaSwgY3Z0dHNzMnNpcSwgY3Z0c2kyc2QsIGN2dHNpMnNkcSwKCWN2dHNkMnNpLCBjdnRzZDJzaXEsIGN2dHRzZDJzaSwgY3Z0dHNkMnNpcSwKCWN2dHBkMmRxLCBjdnR0cGQyZHEsIGN2dHNkMnNzLCBjdnRzczJzZCwKCWN2dHBkMnBzLCBjdnRwczJwZCk6IEFkZGVkIGFtZGZhbTEwX2RlY29kZSBhdHRyaWJ1dGUuCgoyMDA3LTAyLTA1ICBIYXJzaGEgSmFnYXNpYSAgPGhhcnNoYS5qYWdhc2lhQGFtZC5jb20+CgoJKiBjb25maWcvaTM4Ni9hdGhsb24ubWQgKGF0aGxvbl9zc2VkaXZ2ZWN0b3JfYW1kZmFtMTAsCglhdGhsb25fc3NlZGl2dmVjdG9yX2xvYWRfYW1kZmFtMTAsIGF0aGxvbl9zc2VtdWx2ZWN0b3JfYW1kZmFtMTAsCglhdGhsb25fc3NlbXVsdmVjdG9yX2xvYWRfYW1kZmFtMTApOiBOZXcgZGVmaW5lX2luc25fcmVzZXJ2YXRpb24uCgkoYXRobG9uX3NzZWRpdiwgYXRobG9uX3NzZWRpdl9sb2FkX2s4LCBhdGhsb25fc3NlbXVsLAoJYXRobG9uX3NzZW11bF9sb2FkX2s4KTogQWRkZWQgYW1kZmFtMTAuCgoyMDA3LTAyLTA1ICBIYXJzaGEgSmFnYXNpYSAgPGhhcnNoYS5qYWdhc2lhQGFtZC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9TU0VfVU5BTElHTkVEX01PVkVfT1BUSU1BTCk6IE5ldyBtYWNyby4KCSh4ODZfc3NlX3VuYWxpZ25lZF9tb3ZlX29wdGltYWwpOiBOZXcgdmFyaWFibGUuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl9zc2VfdW5hbGlnbmVkX21vdmVfb3B0aW1hbCk6IEVuYWJsZSBmb3IKCW1fQU1ERkFNMTAuCgkoaXg4Nl9leHBhbmRfdmVjdG9yX21vdmVfbWlzYWxpZ24pOiBBZGQgY29kZSB0byBnZW5lcmF0ZSBtb3Z1cGQvbW92dXBzCglmb3IgdW5hbGlnbmVkIHZlY3RvciBTU0UgZG91YmxlL3NpbmdsZSBwcmVjaXNpb24gbG9hZHMgZm9yIEFNREZBTTEwLgoKMjAwNy0wMi0wNSAgSGFyc2hhIEphZ2FzaWEgIDxoYXJzaGEuamFnYXNpYUBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfQU1ERkFNMTApOiBOZXcgbWFjcm8uCgkoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBBZGQgY29kZSBmb3IgYW1kZmFtMTAuCglEZWZpbmUgVEFSR0VUX0NQVV9ERUZBVUxUX2FtZGZhbTEwLgoJKFRBUkdFVF9DUFVfREVGQVVMVF9OQU1FUyk6IEFkZCBhbWRmYW0xMC4KCShwcm9jZXNzb3JfdHlwZSk6IEFkZCBQUk9DRVNTT1JfQU1ERkFNMTAuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBBZGQgYW1kZmFtMTAgYXMgYSBuZXcgY3B1IGF0dHJpYnV0ZSB0byBtYXRjaAoJcHJvY2Vzc29yX3R5cGUgaW4gY29uZmlnL2kzODYvaTM4Ni5oLgoJRW5hYmxlIGltdWwgcGVlcGhvbGVzIGZvciBUQVJHRVRfQU1ERkFNMTAuCgoJKiBjb25maWcuZ2NjOiBBZGQgc3VwcG9ydCBmb3IgLS13aXRoLWNwdSBvcHRpb24gZm9yIGFtZGZhbTEwLgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChhbWRmYW0xMF9jb3N0KTogTmV3IHZhcmlhYmxlLgoJKG1fQU1ERkFNMTApOiBOZXcgbWFjcm8uCgkobV9BVEhMT05fSzhfQU1ERkFNMTApOiBOZXcgbWFjcm8uCgkoeDg2X3VzZV9sZWF2ZSwgeDg2X3B1c2hfbWVtb3J5LCB4ODZfbW92eCwgeDg2X3Vucm9sbF9zdHJsZW4sCgl4ODZfY21vdmUsIHg4Nl8zZG5vd19hLCB4ODZfZGVlcF9icmFuY2gsIHg4Nl91c2Vfc2ltb2RlX2Zpb3AsCgl4ODZfcHJvbW90ZV9RSW1vZGUsIHg4Nl9pbnRlZ2VyX0RGbW9kZV9tb3ZlcywKCXg4Nl9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4ODZfbWVtb3J5X21pc21hdGNoX3N0YWxsLAoJeDg2X2FjY3VtdWxhdGVfb3V0Z29pbmdfYXJncywgeDg2X2FyY2hfYWx3YXlzX2ZhbmN5X21hdGhfMzg3LAoJeDg2X3NzZV9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4ODZfc3NlX3R5cGVsZXNzX3N0b3JlcywKCXg4Nl91c2VfZmZyZWVwLCB4ODZfdXNlX2luY2RlYywgeDg2X2ZvdXJfanVtcF9saW1pdCwKCXg4Nl9zY2hlZHVsZSwgeDg2X3VzZV9idCwgeDg2X2NtcHhjaGcxNmIsIHg4Nl9wYWRfcmV0dXJucyk6CglFbmFibGUvZGlzYWJsZSBmb3IgYW1kZmFtMTAuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBhbWRmYW0xMF9jb3N0IHRvIHByb2Nlc3Nvcl90YXJnZXRfdGFibGUuCglTZXQgdXAgUFJPQ0VTU09SX0FNREZBTTEwIGZvciBhbWRmYW0xMCBlbnRyeSBpbgoJcHJvY2Vzc29yX2FsaWFzX3RhYmxlLgoJKGl4ODZfaXNzdWVfcmF0ZSk6IEFkZCBQUk9DRVNTT1JfQU1ERkFNMTAuCgkoaXg4Nl9hZGp1c3RfY29zdCk6IEFkZCBjb2RlIGZvciBhbWRmYW0xMC4KCjIwMDctMDItMDUgIEhhcnNoYSBKYWdhc2lhICA8aGFyc2hhLmphZ2FzaWFAYW1kLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0OiBBZGQgbmV3IEFkdmFuY2VkIEJpdCBNYW5pcHVsYXRpb24gKC1tYWJtKQoJaW5zdHJ1Y3Rpb24gc2V0IGZlYXR1cmUgZmxhZy4gQWRkIG5ldyAoLW1wb3BjbnQpIGZsYWcgZm9yIHBvcGNudAoJaW5zdHJ1Y3Rpb24uIEFkZCBuZXcgU1NFNEEgKC1tc3NlNGEpIGluc3RydWN0aW9uIHNldCBmZWF0dXJlIGZsYWcuCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogQWRkIGJ1aWx0aW4gZGVmaW5pdGlvbiBmb3IgU1NFNEEuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IEFkZCBzdXBwb3J0IGZvciBBQk0gaW5zdHJ1Y3Rpb25zCgkocG9wY250IGFuZCBsemNudCkuCgkqIGNvbmZpZy9pMzg2L3NzZS5tZDogQWRkIHN1cHBvcnQgZm9yIFNTRTRBIGluc3RydWN0aW9ucwoJKG1vdm50c3MsIG1vdm50c2QsIGV4dHJxLCBpbnNlcnRxKS4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBBZGQgc3VwcG9ydCBmb3IgQUJNIGFuZCBTU0U0QSBidWlsdGlucy4KCUFkZCAtbWFyY2g9YW1kZmFtMTAgZmxhZy4KCSogY29uZmlnL2kzODYvYW1taW50cmluLmg6IEFkZCBzdXBwb3J0IGZvciBTU0U0QSBpbnRyaW5zaWNzLgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIG9uIGZsYWdzIGZvciBzc2U0YSwgYWJtLCBwb3BjbnQKCWFuZCBhbWRmYW0xMC4KCSogZG9jL2V4dGVuZC50ZXhpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgU1NFNEEgYnVpbHRpbnMuCgoyMDA3LTAyLTA1ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoY29uc3RhbnRwb29sX21lbV9wKTogU2tpcCBvdmVyIFNVQlJFR3MuCgoyMDA3LTAyLTA1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuaCAodmVjdG9yaXphYmxlX2Z1bmN0aW9uKTogQWRkIGFyZ3VtZW50IHR5cGUKCWFyZ3VtZW50LCBjaGFuZ2UgcmV0dXJuIHR5cGUuCgkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jICh2ZWN0X3JlY29nX3Bvd19wYXR0ZXJuKTogQWRqdXN0IGNhbGxlci4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0b3JpemFibGVfZnVuY3Rpb24pOiBIYW5kbGUgZXh0cmEKCWFyZ3VtZW50LCByZXR1cm4gdmVjdG9yaXplZCBmdW5jdGlvbiBkZWNsLgoJKGJ1aWxkX3ZlY3Rvcml6ZWRfZnVuY3Rpb25fY2FsbCk6IFJlbW92ZS4KCSh2ZWN0b3JpemFibGVfY2FsbCk6IEhhbmRsZSBjYWxscyB3aXRoIHJlc3VsdCBhbmQgYXJndW1lbnQgdHlwZXMKCWRpZmZlcmluZy4gIEhhbmRsZSBsb29wIHZlY3Rvcml6YXRpb24gZmFjdG9yIGNvcnJlY3RseS4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uKTogQWRqdXN0IGZvcgoJZXh0cmEgYXJndW1lbnQuCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X2J1aWx0aW5fdmVjdG9yaXplZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiB0YXJnZXQuaCAoYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uKTogQWRkIGFyZ3VtZW50IHR5cGUKCWFyZ3VtZW50LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uKTogSGFuZGxlCglleHRyYSBhcmd1bWVudCwgYWxsb3cgdmVjdG9yaXppbmcgb2YgbHJpbnRmLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX1ZFQ1RPUklaRURfRlVOQ1RJT04pOiBBZGp1c3QKCWRvY3VtZW50YXRpb24gb2YgdGFyZ2V0IGhvb2suCgoyMDA3LTAyLTA1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiB0YXJnZXQvMzA2NjUKCSogY29uZmlnL2NyaXMvY3Jpcy5tZCAoIiphbmRzaV9tb3Z1IiwgIiphbmRzaV9jbGVhciIsICIqYW5kaGlfbW92dSIpCgkoIiphbmRoaV9jbGVhciIsIGFuZHUgKGNhc2VzaSs0NSkpOiBGb3Igc2l6ZS1jaGFuZ2VkIG9wZXJhbmQgd2hlcmUKCW1lbW9yeSBpcyBhbGxvd2VkLCByZXF1aXJlICFzaWRlX2VmZmVjdHNfcCwgbm90IGp1c3QgIU1FTV9WT0xBVElMRV9QLgoKMjAwNy0wMi0wNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfdW5hcnkpIDxSRUFMX1BBUlQ+OiBUZXN0IGZvciBhdmFpbGFiaWxpdHkgb2YKCUJVSUxUX0lOX0NPUyBiZWZvcmUgc2ltcGxpZnlpbmcgUkVBTF9QQVJUKENFWFBJKSkgdG8gQ09TLgoJPElNQUdfUEFSVD46IExpa2V3aXNlLCBjaGVjayBmb3IgYXZhaWxhYmlsaXR5IG9mIEJVSUxUX0lOX1NJTi4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX3NpbmNvcyk6IENoZWNrIGZvciBUQVJHRVRfQzk5X0ZVTkNUSU9OUwoJYmVmb3JlIGNhbm9uaWNhbGl6aW5nIHNpbmNvcyB0byBjZXhwaS4KCShmb2xkX2J1aWx0aW5fY2V4cCk6IExpa2V3aXNlLCBmb3IgY2Fub25pY2FsaXppbmcgY2V4cCB0byBjZXhwaS4KCjIwMDctMDItMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2FkZF9idWlsdGlucyk6IE5ldyBIZWxwZXIgZnVuY3Rpb24uCglTZXQgVFJFRV9SRUFET05MWSBhbmQgVFJFRV9OT1RIUk9XIGRpcmVjdGx5LCBub3QgdmlhIGF0dHJpYnV0ZXMuCgkoYWxwaGFfaW5pdF9idWlsdGlucyk6IFVzZSBhbHBoYV9hZGRfYnVpbHRpbnMgdG8gcHJvY2VzcyB0YWJsZXMuCgoyMDA3LTAyLTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIG1pcHMtdGZpbGUuYyAoaW5pdGlhbGl6ZV9pbml0X2ZpbGUpOiBDb3JyZWN0IGVuZGlhbm5lc3MgdGVzdC4KCjIwMDctMDItMDUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5tZCAocHVzaGRpLTEsIHB1c2hkaSwgbW92c2krMSk6IERvbid0IHVzZQoJdGhlICd5JyBjb25zdHJhaW50LgoKMjAwNy0wMi0wNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBSZWNvcmQgdGhlIHJlZ2lzdGVyCglzYXZlcyBpbiBhIFBBUkFMTEVMIGJlZm9yZSB0aGUgcmVnaXN0ZXIgYXNzaWdubWVudHMuCgoyMDA3LTAyLTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy90bS50ZXhpIChEV0FSRl9BTFRfRlJBTUVfUkVUVVJOX0NPTFVNTik6IERvIG5vdCByZXF1aXJlCglEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OIHRvIGJlIGEgZ2VuZXJhbCByZWdpc3Rlci4KCSogZHdhcmYyb3V0LmMgKGluaXRfcmV0dXJuX2NvbHVtbl9zaXplKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBmcm9tLi4uCgkoZXhwYW5kX2J1aWx0aW5faW5pdF9kd2FyZl9yZWdfc2l6ZXMpOiAuLi5oZXJlLiAgQWxsb3cgYm90aAoJRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTiBhbmQgRFdBUkZfQUxUX0ZSQU1FX1JFVFVSTl9DT0xVTU4KCXRvIGJlIG5vbmdlbmVyYWwgcmVnaXN0ZXJzLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKERXQVJGX0ZSQU1FX1JFR05VTSk6IE9ubHkgbWFwIEZQIGFuZAoJaW50ZWdlciByZWdpc3RlcnMuCgkoRFdBUkZfRlJBTUVfUkVHSVNURVJTLCBEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogRGVmaW5lLgoJKERXQVJGX0FMVF9GUkFNRV9SRVRVUk5fQ09MVU1OKTogRGVmaW5lLgoKMjAwNy0wMi0wNCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jICh0cnlfb3B0aW1pemVfY2ZnKTogQXZvaWQgcmVtb3ZpbmcgRU5UUllfQkxPQ0tfUFRSLgoKMjAwNy0wMi0wNCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY2ZnbG9vcG1hbmlwLmMgKGxvb3BfZGVsZXRlX2JyYW5jaF9lZGdlKTogUmVtb3ZlZC4KCShyZW1vdmVfcGF0aCk6IFVzZSBjYW5fcmVtb3ZlX2JyYW5jaF9wIGFuZCByZW1vdmVfYnJhbmNoIGluc3RlYWQKCW9mIGxvb3BfZGVsZXRlX2JyYW5jaF9lZGdlLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKHNjYWxlX2RvbWluYXRlZF9ibG9ja3NfaW5fbG9vcCk6IE5ldyBmdW5jdGlvbi4KCSh0cmVlX3RyYW5zZm9ybV9hbmRfdW5yb2xsX2xvb3ApOiBSZW1vdmUgZGVhZCBicmFuY2hlcyBpbW1lZGlhdGVseS4KCVVwZGF0ZSBwcm9maWxlIHVzaW5nIHNjYWxlX2RvbWluYXRlZF9ibG9ja3NfaW5fbG9vcC4KCSogY2ZnaG9va3MuYyAoY2FuX3JlbW92ZV9icmFuY2hfcCwgcmVtb3ZlX2JyYW5jaCk6IE5ldyBmdW5jdGlvbnMuCgkqIGNmZ2hvb2tzLmggKHN0cnVjdCBjZmdfaG9va3MpOiBBZGQgY2FuX3JlbW92ZV9icmFuY2hfcC4KCShjYW5fcmVtb3ZlX2JyYW5jaF9wLCByZW1vdmVfYnJhbmNoKTogRGVjbGFyZS4KCSogdHJlZS1jZmcuYyAodHJlZV9jYW5fcmVtb3ZlX2JyYW5jaF9wKTogTmV3IGZ1bmN0aW9uLgoJKHRyZWVfY2ZnX2hvb2tzKTogQWRkIHRyZWVfY2FuX3JlbW92ZV9icmFuY2hfcC4KCSogY2ZncnRsLmMgKHJ0bF9jYW5fcmVtb3ZlX2JyYW5jaF9wKTogTmV3IGZ1bmN0aW9uLgoJKHJ0bF9jZmdfaG9va3MsIGNmZ19sYXlvdXRfcnRsX2NmZ19ob29rKTogQWRkIHJ0bF9jYW5fcmVtb3ZlX2JyYW5jaF9wLgoKMjAwNy0wMi0wNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIG1pZGRsZS1lbmQvMzA2OTYKCSogaXBhLWlubGluZS5jIChjZ3JhcGhfY2xvbmVfaW5saW5lZF9ub2Rlcyk6IFdoZW4gdGhlcmUgYXJlIHVuYW5hbHl6ZWQKCW5vZGVzIGluIGNncmFwaCwgZG9uJ3QgcmVtb3ZlIG9mZmxpbmUgY29weSBvZiB0aGUgZnVuY3Rpb24uCgoyMDA3LTAyLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXNyYS5jIChzcmFfd2Fsa19leHByKTogQWRkIGxpbmVicmVha3MuIEJJVEZJRUxEX1JFRnMgaW50bwoJdmVjdG9ycyBtaWdodCBjYXVzZSBtYXliZV9sb29rdXBfZWxlbWVudF9mb3JfZXhwciB0byBiZSBjYWxsZWQKCW9uIG5vbi1zcmEtY2FuZGlkYXRlLgoKMjAwNy0wMi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLW1vZGVzLmRlZiwgY29uZmlnL2JmaW4vYmZpbi5jLAoJY29uZmlnL2JmaW4vYmZpbi5tZCwgY29uZmlnL2JmaW4vcHJlZGljYXRlcy5tZDogRm9sbG93CglzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDctMDItMDQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzMwNjM2CgkqIGZvbGQtY29uc3QuYyAodHJ5X21vdmVfbXVsdF90b19pbmRleCk6IE1ha2Ugc3VyZSB0byBub3QKCW92ZXJmbG93IG9uZSBkaW1lbnNpb24gb2YgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSBhY2Nlc3MuCgoyMDA3LTAyLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogUmVpbmRlbnQuCgoyMDA3LTAyLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUtb3B0aW1pemUuYyAoaGFzX2Fibm9ybWFsX291dGdvaW5nX2VkZ2VfcCk6IE1vdmUgdG8uLi4KCShleGVjdXRlX2ZpeHVwX2NmZyk6IEJyZWFrIG91dCB0aGUgYWJub3JtYWwgZ290byBjb2RlLgoJKiB0cmVlLWlubGluZS5jIChoYXNfYWJub3JtYWxfb3V0Z29pbmdfZWRnZV9wKTogLi4uaGVyZS4KCShtYWtlX25vbmxvY2FsX2xhYmVsX2VkZ2VzKTogTW92ZSBoZXJlIGZyb20gZXhlY3V0ZV9maXh1cF9jZmcuCgkob3B0aW1pemVfaW5saW5lX2NhbGxzKTogQ2FsbCBtYWtlX25vbmxvY2FsX2xhYmVsX2VkZ2VzLgoKMjAwNy0wMi0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UpOiBSZXR1cm4KCXRydWUgd2hlbiBzb21ldGhpbmcgd2FzIGNoYW5nZWQuCgkocmVuYW1lX3NzYV9jb3BpZXMpOiBXaGVuIHNvbWV0aGluZyB3YXMgY2hhbmdlZCwgZG8KCVRPRE9fcmVtb3ZlX3VudXNlZF9sb2NhbHMuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFsdWUpOgoJYWRkIFRPRE9fcmVtb3ZlX3VudXNlZF9sb2NhbHMgd2hlbiBpbnN0cnVjdGlvbiB3YXMgcmVtb3ZlZC4KCjIwMDctMDItMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGlwYS1pbmxpbmUuYyAodHJ5X2lubGluZSk6IEltcHJvdmUgZGVidWcgb3V0cHV0OyB3b3JrIG9uIGFscmVhZHkKCWlubGluZSBlZGdlcyB0b28uCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19pbmNyZW1lbnRhbGx5KTogSW5kZW50OyBpbXByb3ZlIGRlYnVnIG91dHB1dDsKCWNhbGwgdHJ5X2lubGluZSBmb3IgYWxyZWFkeSBpbmxpbmVkIGVkZ2VzIHRvbyB3aGVuIGZsYXR0ZW5pbmc7CglpbmxpbmUgYWxzbyBmdW5jdGlvbnMgdGhhdCBtYWtlIGNhbGxlZSBncm93dGggYnV0IG92ZXJhbGwgdW5pdCBzaXplCglyZWR1Y2UuCgoyMDA3LTAyLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tMzJjL2JpdG9wcy5tZCwgY29uZmlnL20zMmMvanVtcC5tZCwKCWNvbmZpZy9tMzJjL20zMmMuYywgY29uZmlnL20zMmMvbTMyYy5oLCBjb25maWcvbTMyci9tMzJyLmMsCgljb25maWcvbTMyci9tMzJyLmgsIGNvbmZpZy9tMzJyL20zMnIubWQsCgljb25maWcvbTMyci9wcmVkaWNhdGVzLm1kLCBjb25maWcvbTY4aGMxMS9sYXJpdGguYXNtLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMS5jLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmgsCgljb25maWcvbTY4ay9tNjhrLmgsIGNvbmZpZy9tY29yZS9tY29yZS5tZCwgY29uZmlnL21pcHMvNGsubWQsCgljb25maWcvbWlwcy9taXBzLXByb3Rvcy5oLCBjb25maWcvbWlwcy9taXBzLmMsCgljb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9taXBzL21pcHMubWQsIGNvbmZpZy9taXBzL21pcHMxNi5TLAoJY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oLCBjb25maWcvbW4xMDMwMC9wcmVkaWNhdGVzLm1kLAoJY29uZmlnL210L210LmMsIGNvbmZpZy9tdC9tdC5oLCBjb25maWcvbXQvbXQubWQ6IEZvbGxvdwoJc3BlbGxpbmcgY29udmVudGlvbnMuCgoJKiBjb25maWcvdjg1MC92ODUwLmMsIGNvbmZpZy92ODUwL3Y4NTAuaCwgY29uZmlnL3Y4NTAvdjg1MC5tZDoKCUZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDctMDItMDMgIERvdWdsYXMgR3JlZ29yICA8ZG91Zy5ncmVnb3JAZ21haWwuY29tPgoKCSogYy1vcHRzLmMgKGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyk6IElmIEMrKzB4IG1vZGUgaXMgZW5hYmxlZCwgZG9uJ3QKCXdhcm4gYWJvdXQgQysrMHggY29tcGF0aWJpbGl0eS4KCjIwMDctMDItMDQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMsIGNvbmZpZy9oODMwMC9oODMwMC5oLAoJY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA3LTAyLTAzICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCVBSIG1pZGRsZS1lbmQvMzA2NjcKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IERvIG5vdCBzdWJzdGl0dXRlIHNvdXJjZSBvcGVyYW5kCgl3aXRoIGNvbnN0YW50cyB3aWRlciB0aGFuIDIgKiBIT1NUX0JJVFNfUEVSX1dJREVfSU5ULgoKMjAwNy0wMi0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGdjb3YtcHJvZmlsZS8zMDY1MAoJKiB2YWx1ZS1wcm9mLmMgKHN0cmluZ29wX2Jsb2NrX3Byb2ZpbGUpOiBGaXggaGFuZGxpbmcgb2Ygc2l6ZSBjb3VudGVyOwoJZG8gbm90IGRpdmlkZSBieSB6ZXJvIGZvciBuZXZlciBleGVjdXRlZCBjb3VudGVycy4KCSh0cmVlX2ZpbmRfdmFsdWVzX3RvX3Byb2ZpbGUpOiBGaXggY291bnRlcnMuCgkqIGdjb3YtdWkuaCAoR0NPVl9DT1VOVEVSX0FWRVJBR0UsIEdDT1ZfQ09VTlRFUl9JT1IpOiBGaXggY29tbWVudHMuCgoyMDA3LTAyLTAzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogbG93ZXItc3VicmVnLmMgKHNpbXBsZV9tb3ZlX29wZXJhbmQpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLAoJYnJva2VuIG91dCBvZiBzaW1wbGVfbW92ZS4gIFJlamVjdCBMQUJFTF9SRUYsIFNZTUJPTF9SRUYsIGFuZCBISUdICglvcGVyYW5kcy4KCShzaW1wbGVfbW92ZSk6IENhbGwgc2ltcGxlX21vdmVfb3BlcmFuZC4KCShmaW5kX2RlY29tcG9zYWJsZV9zdWJyZWdzKTogQWRkIHNwZWNpYWwgaGFuZGxpbmcgb2YgTUVNcy4KCShjYW5fZGVjb21wb3NlX3ApOiBSZW5hbWUgZnJvbSBjYW5ub3RfZGVjb21wb3NlX3AuICBSZXZlcnNlCgltZWFuaW5nIG9mIHJldHVybiB2YWx1ZS4gIElmIHdlIHNlZSBhIGhhcmQgcmVnaXN0ZXIsIHRlc3Qgd2hldGhlcgoJaXQgY2FuIHN0b3JlIGEgd29yZF9tb2RlIHZhbHVlLiAgQ2hhbmdlIGFsbCBjYWxsZXJzLgoKMjAwNy0wMi0wMyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLm1kIChhZGR2ZGkzLCBhZGR2c2kzLCBzdWJ2ZGkzLCBzdWJ2c2kzLCBuZWd2ZGkyLCBuZWd2c2kyKTogTmV3CglmdHJhcHYgaW5zbnMgYW5kIGV4cGFuZGVycy4KCShzdWJkaTMpOiBDaGFuZ2UgZGVmaW5lX2V4cGFuZCBvcGVyYW5kIDEgdG8gYXJpdGgxMV9vcGVyYW5kLCBhbmQKCW9wZXJhbmQgMiB0byByZWdfb3JfMF9vcGVyYW5kLiAgQ2hhbmdlIGNvbnN0cmFpbnRzIG9mIDY0LWJpdCBpbnNuCglwYXR0ZXJuIHRvIGhhbmRsZSByZWdfb3JfMCBvcGVyYW5kcy4gIFJldmlzZSAzMi1iaXQgaW5zbiBwYXR0ZXJuIHRvCgloYW5kbGUgMTEtYml0IGNvbnN0YW50cyBhbmQgcmVnX29yXzAgb3BlcmFuZHMgaW4gb3BlcmFuZHMgMSBhbmQgMiwKCXJlc3BlY3RpdmVseS4KCglQUiBtaWRkbGUtZW5kLzMwMTc0CgkqIHZhcmFzbS5jIChub3RpY2VfZ2xvYmFsX3N5bWJvbCk6IFRyZWF0IGdsb2JhbCBvYmplY3RzIGFzIHdlYWsgd2hlbgoJZmxhZ19zaGxpYiBpcyB0cnVlLgoKMjAwNy0wMi0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZW1pdC1ydGwuYyAoZGNvbnN0cGkpOiBEZWxldGUuCgkoZGNvbnN0c3FydDIpOiBOZXcuCgkoaW5pdF9lbWl0X29uY2UpOiBEZWxldGUgZGNvbnN0cGkgYW5kIGluaXQgZGNvbnN0c3FydDIuCgkqIHJlYWwuaCAoZGNvbnN0cGkpOiBEZWxldGUuCgkoZGNvbnN0c3FydDIpOiBOZXcuCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jYWJzKTogVXNlIGRjb25zdHNxcnQyLgoJKGZvbGRfYnVpbHRpbl9oeXBvdCk6IExpa2V3aXNlLgoKMjAwNy0wMi0wMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGRyaXZlci8zMDI0NgoJKiBnY2MuYyAoY3BwX3VuaXF1ZV9vcHRpb25zKTogQW55IG9mIC1nZ2RiMywgLWdzdGFiczMsCgktZ2NvZmYzLCAtZ3hjb2ZmMywgLWd2bXMzIGltcGxpZXMgLWRELgoKMjAwNy0wMi0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYywgY29uZmlnL2F2ci9hdnIuYywgY29uZmlnL2F2ci9hdnIuaCwKCWNvbmZpZy9tNjhrL202OGsuYywgY29uZmlnL202OGsvbmV0YnNkLWVsZi5oLAoJY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jLCBjb25maWcvcGRwMTEvcGRwMTEuaCwKCWNvbmZpZy9yczYwMDAvY2VsbC5tZCwgY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCwKCWNvbmZpZy9zaC9zaC5tZCwgY29uZmlnL3NoL3NoNC0zMDAubWQsIGNvbmZpZy9zcHUvc3B1LmMsCgljb25maWcvc3B1L3NwdS5tZCwgY3NlbGliLmMsIGV4cHIuYywgaGFpZmEtc2NoZWQuYywgaHdpbnQuaCwKCWp1bXAuYywgcmVsb2FkLmMsIHNjaGVkLWRlcHMuYywgc2NoZWQtaW50LmgsIHRyZWUtaW5saW5lLmMsCgl0cmVlLXByb2ZpbGUuYywgdHJlZS1zc2EtbGl2ZS5oLCB0cmVlLXZycC5jOiBGaXggY29tbWVudAoJdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGRvYy9pbnZva2UudGV4aTogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKMjAwNy0wMi0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSk6IEltcGxlbWVudCBzb21lCgljYW5vbmljYWxpemF0aW9uIHRyYW5zZm9ybWF0aW9ucyB0aGF0IGF0dGVtcHQgdG8gc2ltcGxpZnkgaW50ZWdlcgoJY29uc3RhbnQgY29tcGFyaXNvbnMgdG8gYmVjb21lIGNvbXBhcmlzb25zIGFnYWluc3QgemVyby4KCjIwMDctMDItMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jYWJzKTogRm9sZCBjYWJzKHgreGkpIGludG8KCWZhYnMoeCkqc3FydCgyKS4KCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IEZpeCBjb21tZW50IHR5cG9zLiAgRm9sZCBjb21wbGV4CgkoeCwwKS0oMCx5KSBpbnRvICh4LC15KS4gIExpa2V3aXNlICgwLHkpLSh4LDApIGludG8gKC14LHkpLgoKMjAwNy0wMi0wMiAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luOS5oIChEQVJXSU5fTElOS0VSX0dFTkVSQVRFU19JU0xBTkRTKTogQWRkLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChEQVJXSU5fR0VORVJBVEVfSVNMQU5EUyk6IEFkZC4KCShvdXRwdXRfY2FsbCk6IFVzZSBEQVJXSU5fR0VORVJBVEVfSVNMQU5EUyB0byBkZWNpZGUgd2hlbiB0bwoJZ2VuZXJhdGUgYSBicmFuY2ggaXNsYW5kLgoKMjAwNy0wMi0wMiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHNtYWxsb2Zmc2V0X21lbV9wKTogVXNlIEJBU0VfUkVHX1AuCgkoeHRlbnNhX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogTmV3LgoJKHh0ZW5zYV9sZWdpdGltaXplX2FkZHJlc3MpOiBOZXcuCgkoeHRlbnNhX291dHB1dF9hZGRyX2NvbnN0X2V4dHJhKTogTmV3LgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChSRUdfT0tfU1RSSUNUX0ZMQUcpOiBEZWZpbmUuCgkoQkFTRV9SRUdfUCk6IE5ldy4KCShSRUdfT0tfRk9SX0JBU0VfUCk6IFVzZSBCQVNFX1JFR19QLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IE1vdmUgY29kZSB0byB4dGVuc2FfbGVnaXRpbWF0ZV9hZGRyZXNzX3AuCgkoTEVHSVRJTUlaRV9BRERSRVNTKTogTW92ZSBjb2RlIHRvIHh0ZW5zYV9sZWdpdGltaXplX2FkZHJlc3MuCgkoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBNb3ZlIGNvZGUgdG8geHRlbnNhX291dHB1dF9hZGRyX2NvbnN0X2V4dHJhLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaCAoeHRlbnNhX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogTmV3LgoJKHh0ZW5zYV9sZWdpdGltaXplX2FkZHJlc3MpOiBOZXcuCgkoeHRlbnNhX291dHB1dF9hZGRyX2NvbnN0X2V4dHJhKTogTmV3LgoKMjAwNy0wMi0wMiAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZCk6IEZpeCBjb21wYXJlIHN0cmluZ3MuCgoyMDA3LTAyLTAyICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogZXhwbWVkLmMgKGV4cGFuZF9kaXZtb2QpOiBBZGQgY29tbWVudC4KCjIwMDctMDItMDIgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZW1pdC1ydGwuYyAocmVudW1iZXJfaW5zbnMpOiBSZW1vdmUuCgkqIGZsYWdzLmg6IFJlbW92ZSB0aGUgZXh0ZXJuIGZvciBmbGFnX3JlbnVtYmVyX2luc25zLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHJlbnVtYmVyX2luc25zLgoJKiB0b3BsZXYuYyAoZmxhZ19yZW51bWJlcl9pbnNucyk6IFJlbW92ZS4KCjIwMDctMDItMDIgIEh1aS1NYXkgQ2hhbmcgIDxobS5jaGFuZ0BhcHBsZS5jb20+CgoJUmV2ZXJ0IGZvciB4ODYgZGFyd2luOgoJMjAwNS0wNi0xOSAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX2FyZ19yZWdub19wKTogUHV0IGJhY2sgdGhlCgljb2RlIGJlZm9yZSB0aGUgZm9sbG93aW5nIHBhdGNoIHVuZGVyIFRBUkdFVF9NQUNITy4KCShpeDg2X2Z1bmN0aW9uX3ZhbHVlX3JlZ25vX3ApOiBMaWtld2lzZS4KCjIwMDctMDItMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAobmVnYXRlX2V4cHJfcCwgZm9sZF9uZWdhdGVfZXhwcik6IEhhbmRsZQoJQ09NUExFWF9FWFBSLgoKMjAwNy0wMi0wMiAgTWF4aW0gS3V2eXJrb3YgIDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCVBSIHRhcmdldC8yOTY4MgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfc3BlY3VsYXRlX2luc24pOiBSZXN0cmljdCB0byBtZW1vcnkKCWxvYWRzIHRvIGdlbmVyYWwgb3IgZnAgcmVnaXN0ZXJzLiAgQWRkIGNvbW1lbnRzLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChyZWdfcHJlZF9wcmVmaXgpOiBBZGQgY29tbWVudC4KCjIwMDctMDItMDIgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBwb2ludGVyLXNldC5jIChpbnNlcnRfYXV4KTogT25seSByZXR1cm4gaW5zZXJ0aW9uIHNsb3QuCgkocG9pbnRlcl9zZXRfaW5zZXJ0KTogQWRqdXN0LgoJKHBvaW50ZXJfc2V0X3RyYXZlcnNlLCBzdHJ1Y3QgcG9pbnRlcl9tYXBfdCwgcG9pbnRlcl9tYXBfY3JlYXRlLAoJcG9pbnRlcl9tYXBfZGVzdHJveSwgcG9pbnRlcl9tYXBfaW5zZXJ0LCBwb2ludGVyX21hcF9jb250YWlucywKCXBvaW50ZXJfbWFwX3RyYXZlcnNlKTogTmV3LgoJKiBwb2ludGVyLXNldC5oIChwb2ludGVyX3NldF90cmF2ZXJzZSwgc3RydWN0IHBvaW50ZXJfbWFwX3QsCglwb2ludGVyX21hcF9jcmVhdGUsICBwb2ludGVyX21hcF9kZXN0cm95LCBwb2ludGVyX21hcF9pbnNlcnQsCglwb2ludGVyX21hcF9jb250YWlucywgcG9pbnRlcl9tYXBfdHJhdmVyc2UpOiBEZWNsYXJlLgoKMjAwNy0wMi0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMDQ3MwoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fc3ByaW50Zik6IERvIG5vdCBhdHRlbXB0IHRvIG9wdGltaXplCglzcHJpbnRmIChzdHIsICIlcyIpLiAgRG8gbm90IG9wdGltaXplIHNwcmludGYgKHN0ciwgIm5vcGVyY2VudCIsIHArKykuCgoyMDA3LTAyLTAyICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJKiBzY2hlZC1pbnQuaCAoZHNfdG9fZGssIGRrX3RvX2RzKTogRGVjbGFyZSBmdW5jdGlvbnMuCgoJKHN0cnVjdCBfZGVwKTogTmV3IHR5cGUuCgkoZGVwX3QpOiBOZXcgdHlwZWRlZi4KCShERVBfUFJPLCBERVBfQ09OLCBERVBfS0lORCk6IE5ldyBhY2Nlc3MgbWFjcm9zLgoJKERFUF9TVEFUVVMpOiBOZXcgYWNjZXNzIG1hY3JvLiAgVGhlIG1hY3JvIHdpdGggdGhlIHNhbWUgbmFtZSB3YXMKCXJlbmFtZWQgdG8gREVQX0xJTktfU1RBVFVTLgoJKGRlcF9pbml0KTogRGVjbGFyZSBmdW5jdGlvbgoKCShzdHJ1Y3QgX2RlcF9saW5rKTogTmV3IHR5cGUuCgkoZGVwX2xpbmtfdCk6IE5ldyB0eXBlZGVmLgoJKERFUF9MSU5LX05PREUsIERFUF9MSU5LX05FWFQsIERFUF9MSU5LX1BSRVZfTkVYVFApOiBOZXcgYWNjZXNzIG1hY3Jvcy4KCShERVBfTElOS19ERVAsIERFUF9MSU5LX1BSTywgREVQX0xJTktfQ09OLCBERVBfTElOS19LSU5EKTogTmV3IG1hY3Jvcy4KCShERVBfTElOS19TVEFUVVMpOiBOZXcgbWFjcm8uCgkoZGVidWdfZGVwX2xpbmtzKTogTmV3IGRlYnVnIGZ1bmN0aW9uLgoKCShzdHJ1Y3QgX2RlcHNfbGlzdCk6IE5ldyB0eXBlLgoJKGRlcHNfbGlzdF90KTogTmV3IHR5cGVkZWYuCgkoREVQU19MSVNUX0ZJUlNUKTogTmV3IGFjY2VzcyBtYWNyby4KCShGT1JfRUFDSF9ERVBfTElOSyk6IE5ldyBjeWNsZSBtYWNyby4KCShjcmVhdGVfZGVwc19saXN0LCBmcmVlX2RlcHNfbGlzdCwgZGVsZXRlX2RlcHNfbGlzdCk6IERlY2xhcmUKCWZ1bmN0aW9ucy4KCShkZXBzX2xpc3RfZW1wdHlfcCwgZGVidWdfZGVwc19saXN0LCBhZGRfYmFja19kZXBfdG9fZGVwc19saXN0KTogRGl0dG8uCgkoZmluZF9saW5rX2J5X3Byb19pbl9kZXBzX2xpc3QsIGZpbmRfbGlua19ieV9jb25faW5fZGVwc19saXN0KTogRGl0dG8uCgkoY29weV9kZXBzX2xpc3RfY2hhbmdlX2Nvbik6IERpdHRvLgoKCShtb3ZlX2RlcF9saW5rKTogRGVjbGFyZSBmdW5jdGlvbi4KCgkoc3RydWN0IF9kZXBfbm9kZSk6IE5ldyB0eXBlLgoJKGRlcF9ub2RlX3QpOiBOZXcgdHlwZWRlZi4KCShERVBfTk9ERV9CQUNLLCBERVBfTk9ERV9ERVAsIERFUF9OT0RFX0ZPUlcpOiBOZXcgYWNjZXNzIG1hY3Jvcy4KCgkoc3RydWN0IGhhaWZhX2luc25fZGF0YS5iYWNrX2RlcHMpOiBOZXcgZmllbGQgdG8gaG9sZCBiYWNrd2FyZAoJZGVwZW5kZW5jaWVzIG9mIHRoZSBpbnNuLgoJKHN0cnVjdCBoYWlmYV9pbnNuX2RhdGEuZGVwZW5kKTogUmVuYW1lIHRvIGZvcndfZGVwcy4gIENoYW5nZSBpdHMgdHlwZQoJdG8gZGVwc19saXN0X3QuCgkoc3RydWN0IGhhaWZhX2luc25fZGF0YS5yZXNvbHZlZF9kZXBzKTogUmVuYW1lIHRvIHJlc29sdmVkX2JhY2tfZGVwcy4KCUNoYW5nZSBpdHMgdHlwZQl0byBkZXBzX2xpc3RfdC4KCShJTlNOX0JBQ0tfREVQUyk6IE5ldyBhY2Nlc3MgbWFjcm8gdG8gdXNlIGluc3RlYWQgb2YgTE9HX0xJTktTLgoJKElOU05fREVQRU5EKTogUmVuYW1lIHRvIElOU05fRk9SV19ERVBTLgoJKFJFU09MVkVEX0RFUFMpOiBSZW5hbWUgdG8gSU5TTl9SRVNPTFZFRF9CQUNLX0RFUFMuCgoJKElOU05fQ09TVCk6IE1vdmUgdG8gaGFpZmEtc2NoZWQuYy4gIFVzZSBpbnNuX2Nvc3QgKCkgaW5zdGVhZC4KCgkoREVQX1NUQVRVUyk6IFJlbmFtZSB0byBERVBfTElOS19TVEFUVVMuICBGaXggdHlwbyBpbiB0aGUgY29tbWVudC4KCgkoYWRkX2ZvcndfZGVwLCBkZWxldGVfYmFja19mb3J3X2RlcCwgaW5zbl9jb3N0KTogVXBkYXRlIGRlY2xhcmF0aW9uCglhbmQgYWxsIGNhbGxlcnMuCgkoZGVwX2Nvc3QpOiBEZWNsYXJlLgoKCSogc2NoZWQtZGVwcy5jIChDSEVDSyk6IE5ldyBtYWNybyB0byAoZW4vZGlzKWFibGUgc2FuaXR5IGNoZWNrcy4KCShkc190b19kaywgZGtfdG9fZHMpOiBOZXcgZnVuY3Rpb25zLgoKCShpbml0X2RlcF8xKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShpbml0X2RlcCk6IE5ldyBmdW5jdGlvbi4KCShjb3B5X2RlcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgoJKGRlcF9saW5rX2NvbnNpc3RlbnRfcCwgYXR0YWNoX2RlcF9saW5rLCBhZGRfdG9fZGVwc19saXN0KTogTmV3IHN0YXRpYwoJZnVuY3Rpb25zLgoJKGRldGFjaF9kZXBfbGluayk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkobW92ZV9kZXBfbGluayk6IE5ldyBmdW5jdGlvbi4KCgkoZGVwX2xpbmtzX2NvbnNpc3RlbnRfcCwgZHVtcF9kZXBfbGlua3MpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShkZWJ1Z19kZXBfbGlua3MpOiBOZXcgZGVidWdnaW5nIGZ1bmN0aW9uLgoKCShkZXBzX29ic3RhY2ssIGRsX29ic3RhY2ssIGRuX29ic3RhY2spOiBOZXcgc3RhdGljIHZhcmlhYmxlcy4KCgkoYWxsb2NfZGVwc19saXN0LCBpbml0X2RlcHNfbGlzdCk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGNyZWF0ZV9kZXBzX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkoY2xlYXJfZGVwc19saXN0KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShmcmVlX2RlcHNfbGlzdCwgZGVsZXRlX2RlcHNfbGlzdCwgZGVwc19saXN0X2VtcHR5X3ApOiBOZXcgZnVuY3Rpb25zLgoJKGRlcHNfbGlzdF9jb25zaXN0ZW50X3AsIGR1bXBfZGVwc19saXN0KTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoZGVidWdfZGVwc19saXN0KTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9iYWNrX2RlcF90b19kZXBzX2xpc3QsIGZpbmRfbGlua19ieV9wcm9faW5fZGVwc19saXN0KTogTmV3CglmdW5jdGlvbnMuCgkoZmluZF9saW5rX2J5X2Nvbl9pbl9kZXBzX2xpc3QsIGNvcHlfZGVwc19saXN0X2NoYW5nZV9jb24pOiBEaXR0by4KCgkobWF5YmVfYWRkX29yX3VwZGF0ZV9iYWNrX2RlcF8xLCBhZGRfb3JfdXBkYXRlX2JhY2tfZGVwXzEpOiBVcGRhdGUgdG8KCXVzZSBuZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcyBsaXN0cy4KCShhZGRfYmFja19kZXAsIGRlbGV0ZV9hbGxfZGVwZW5kZW5jZXMsIGZpeHVwX3NjaGVkX2dyb3Vwcyk6IERpdHRvLgoJKHNjaGVkX2FuYWx5emUpOiBEaXR0by4gIEluaXRpYWxpemUgZGVwZW5kZW5jaWVzIGxpc3RzLgoJKGFkZF9mb3J3X2RlcCwgY29tcHV0ZV9mb3J3YXJkX2RlcGVuZGVuY2VzKTogVXBkYXRlIHRvIHVzZSBuZXcKCXNjaGVkdWxlciBkZXBlbmRlbmNpZXMgbGlzdHMuCgoJKGluaXRfZGVwZW5kZW5jeV9jYWNoZXMpOiBJbml0IGRlcHNfb2JzdGFjay4KCShmcmVlX2RlcGVuZGVuY3lfY2FjaGVzKTogRnJlZSBkZXBzX29ic3RhY2suCgoJKGFkanVzdF9hZGRfc29ydGVkX2JhY2tfZGVwLCBhZGp1c3RfYmFja19hZGRfZm9yd19kZXApOiBVcGRhdGUgdG8gdXNlCgluZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcyBsaXN0cy4KCShkZWxldGVfZm9yd19kZXAsIGFkZF9vcl91cGRhdGVfYmFja19mb3J3X2RlcCk6IERpdHRvLgoJKGFkZF9iYWNrX2ZvcndfZGVwLCBkZWxldGVfYmFja19mb3J3X2RlcCk6IERpdHRvLgoKCSogc2NoZWQtcmduLmMgKHNldF9zcGVjX2ZlZCwgZmluZF9jb25kaXRpb25hbF9wcm90ZWN0aW9uLCBpc19wZnJlZSk6CglVcGRhdGUgdG8gdXNlIG5ldyBzY2hlZHVsZXIgZGVwZW5kZW5jaWVzIGxpc3RzLgoJKGlzX2NvbmRpdGlvbmFsbHlfcHJvdGVjdGVkLCBpc19wcmlza3ksIGFkZF9icmFuY2hfZGVwZW5kZW5jZXMpOiBEaXR0by4KCShkZWJ1Z19kZXBlbmRlbmNpZXMpOiBEaXR0by4KCShzY2hlZHVsZV9yZWdpb24pOiBVcGRhdGUgY29tbWVudHMuCgoJKiBzY2hlZC1lYmIuYyAoZWFybGllc3RfYmxvY2tfd2l0aF9zaW1pbGlhcl9sb2FkKTogVXBkYXRlIHRvIHVzZSBuZXcKCXNjaGVkdWxlciBkZXBlbmRlbmNpZXMgbGlzdHMuCgkoc2NoZWR1bGVfZWJiKTogVXBkYXRlIGNvbW1lbnRzLgoKCSogcnRsLmRlZiAoREVQU19MSVNUKTogUmVtb3ZlLgoKCSogbGlzdHMuYyAodW51c2VkX2RlcHNfbGlzdCk6IFJlbW92ZS4KCShmcmVlX2xpc3QpOiBVcGRhdGUgYXNzZXJ0aW9ucy4KCgkoYWxsb2NfREVQU19MSVNULCBmcmVlX0RFUFNfTElTVF9saXN0LCBmcmVlX0RFUFNfTElTVF9ub2RlKTogUmVtb3ZlLgoJKHJlbW92ZV9mcmVlX0RFUFNfTElTVF9lbGVtLCBjb3B5X0RFUFNfTElTVF9saXN0KTogRGl0dG8uCgoJKiBydGwuaCAoZnJlZV9ERVBTX0xJU1RfbGlzdCwgYWxsb2NfREVQU19MSVNUKTogUmVtb3ZlIGRlY2xhcmF0aW9ucy4KCShyZW1vdmVfZnJlZV9ERVBTX0xJU1RfZWxlbSwgY29weV9ERVBTX0xJU1RfbGlzdCk6IERpdHRvLgoKCSogaGFpZmEtc2NoZWQuYyAoY29tbWVudHMpOiBVcGRhdGUuCgkoaW5zbl9jb3N0MSk6IFJlbW92ZS4gIElubGluZSB0aGUgY29kZSBpbnRvIGluc25fY29zdCAoKS4KCShpbnNuX2Nvc3QpOiBVcGRhdGUgdG8gdXNlIG5ldyBzY2hlZHVsZXIgZGVwZW5kZW5jaWVzIGxpc3RzLiAgTW92ZQoJcHJvY2Vzc2luZyBvZiB0aGUgZGVwZW5kZW5jeSBjb3N0IHRvIGRlcF9jb3N0ICgpLgoJKGRlcF9jb3N0KTogTmV3IGZ1bmN0aW9uLiAgVXNlIGl0IGluc3RlYWQgb2YgaW5zbl9jb3N0ICgpIHdoZW4KCWV2YWx1YXRpbmcgY29zdCBvZiB0aGUgZGVwZW5kZW5jeS4gIFVzZSBjb21wYXRpYmxlIGludGVyZmFjZSB0bwoJaW50ZXJhY3Qgd2l0aCB0aGUgdGFyZ2V0LgoJKHByaW9yaXR5KTogVXBkYXRlIHRvIHVzZSBuZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcyBsaXN0cy4KCShyYW5rX2Zvcl9zY2hlZHVsZSk6IERpdHRvLiAgT3B0aW1pemUgaGV1cmlzdGljIHRoYXQgcHJlZmVycyB0aGUgaW5zbgoJd2l0aCBncmVhdGVyIG51bWJlciBvZiBpbnNucyB0aGF0IGRlcGVuZCBvbiB0aGUgaW5zbi4KCShzY2hlZHVsZV9pbnNuKTogVXBkYXRlIHRvIHVzZSBuZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcyBsaXN0cy4gIEFkZAoJY29kZSB0byBmcmVlIGJhY2t3YXJkIGRlcGVuZGVuY2llcyBsaXN0cy4gIElubGluZSBhbmQgb3B0aW1pemUgY29kZQoJZnJvbSByZXNvbHZlX2RlcCAoKSAtIHNlZSBQUjI4MDcxLgoJKG9rX2Zvcl9lYXJseV9xdWV1ZV9yZW1vdmFsKTogVXBkYXRlIHRvIHVzZSBuZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcwoJbGlzdHMuICBVcGRhdGUgY2FsbCB0byB0YXJnZXRtLnNjaGVkLmlzX2Nvc3RseV9kZXBlbmRlbmNlIGhvb2suCgoJKGZpeF9pbnRlcl90aWNrLCB0cnlfcmVhZHksIGZpeF90aWNrX3JlYWR5KTogVXBkYXRlIHRvIHVzZSBuZXcKCXNjaGVkdWxlciBkZXBlbmRlbmNpZXMgbGlzdHMuCgoJKHJlc29sdmVfZGVwKTogUmVtb3ZlLiAgTW92ZSB0aGUgbG9naWMgdG8gc2NoZWR1bGVfaW5zbiAoKS4KCShpbml0X2hfaV9kKTogSW5pdGlhbGl6ZSBkZXBlbmRlbmNpZXMgbGlzdHMuCgoJKHByb2Nlc3NfaW5zbl9kZXBlbmRfYmVfaW5fc3BlYyk6IFJlbmFtZSB0bwoJcHJvY2Vzc19pbnNuX2ZvcndfZGVwc19iZV9pbl9zcGVjLiAgVXBkYXRlIHRvIHVzZSBuZXcgc2NoZWR1bGVyCglkZXBlbmRlbmNpZXMgbGlzdHMuCgkoYWRkX3RvX3NwZWN1bGF0aXZlX2Jsb2NrLCBjcmVhdGVfY2hlY2tfYmxvY2tfdHdpbiwgZml4X3JlY292ZXJ5X2RlcHMpOgoJVXBkYXRlIHRvIHVzZSBuZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcyBsaXN0cy4KCShjbGVhcl9wcmlvcml0aWVzLCBjYWxjX3ByaW9yaXRpZXMsIGFkZF9qdW1wX2RlcGVuZGVuY2llcyk6IERpdHRvLgoKCSogZGRnLmMgKGNyZWF0ZV9kZGdfZGVwZW5kZW5jZSwgY3JlYXRlX2RkZ19kZXBfbm9fbGluayk6IFVwZGF0ZSB0byB1c2UKCW5ldyBzY2hlZHVsZXIgZGVwZW5kZW5jaWVzIGxpc3RzLgoJKGJ1aWxkX2ludHJhX2xvb3BfZGVwcyk6IERpdHRvLgoKCSogdGFyZ2V0LmggKHN0cnVjdCBfZGVwKTogRGVjbGFyZSB0byB1c2UgaW4KCWdjY190YXJnZXQuc2NoZWQuaXNfY29zdGx5X2RlcGVuZGVuY2UuCgkoc3RydWN0IGdjY190YXJnZXQuc2NoZWQuYWRqdXN0X2Nvc3QpOiBGaXggdHlwby4KCShzdHJ1Y3QgZ2NjX3RhcmdldC5zY2hlZC5pc19jb3N0bHlfZGVwZW5kZW5jZSk6IENoYW5nZSBzaWduYXR1cmUgdG8KCXVzZSBzaW5nbGUgZGVwX3QgcGFyYW1ldGVyIGluc3RlYWQgb2YgYW4gZXF1aXZhbGVudCB0cmlhZC4KCShzdHJ1Y3QgZ2NjX3RhcmdldC5zY2hlZC5hZGp1c3RfY29zdF8yKTogUmVtb3ZlLgoKCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfU0NIRURfQURKVVNUX0NPU1RfMik6IFJlbW92ZS4KCgkqIHJlZy1ub3Rlcy5kZWYgKERFUF9UUlVFLCBERVBfT1VUUFVULCBERVBfQU5USSk6IFVwZGF0ZSBjb21tZW50cy4KCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfU0NIRURfSVNfQ09TVExZX0RFUEVOREVOQ0UpOiBVcGRhdGUKCWRvY3VtZW50YXRpb24uCgkoVEFSR0VUX1NDSEVEX0FESlVTVF9DT1NUXzIpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbi4KCgkqIGRvYy9ydGwudGV4aSAoTE9HX0xJTktTKTogUmVtb3ZlIHBhcnQgYWJvdXQgaW5zdHJ1Y3Rpb24gc2NoZWR1bGVyLgoJKFJFR19ERVBfVFJVRSk6IERvY3VtZW50LgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2FkanVzdF9jb3N0XzIpOiBSZW5hbWUgdG8gaWE2NF9hZGp1c3RfY29zdC4KCUNoYW5nZSBzaWduYXR1cmUgdG8gY29ycmVzcG9uZCB0byB0aGUgdGFyZ2V0bS5zY2hlZC5hZGp1c3RfY29zdCBob29rLgoJVXBkYXRlIHVzZSBpbiBUQVJHRVRfU0NIRURfQURKVVNUX0NPU1RfMi4KCShUQVJHRVRfU0NIRURfQURKVVNUX0NPU1RfMik6IFJlbmFtZSB0byBUQVJHRVRfU0NIRURfQURKVVNUX0NPU1QuCgkoaWE2NF9kZXBlbmRlbmNpZXNfZXZhbHVhdGlvbl9ob29rLCBpYTY0X2RmYV9uZXdfY3ljbGUpOiBVcGRhdGUgdG8gdXNlCgluZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcyBsaXN0cy4KCShpYTY0X2dlbl9jaGVjayk6IERpdHRvLgoKCSogY29uZmlnL21pcHMvbWlwcy5jICh2cjQxMzBfc3dhcF9pbnNuc19wKTogVXBkYXRlIHRvIHVzZSBuZXcKCXNjaGVkdWxlciBkZXBlbmRlbmNpZXMgbGlzdHMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaXNfY29zdGx5X2RlcGVuZGVuY2UpOiBDaGFuZ2UKCXNpZ25hdHVyZSB0byBjb3JyZXNwb25kIHRvIHRoZSB0YXJnZXRtLnNjaGVkLmlzX2Nvc3RseV9kZXBlbmRlbmNlIGhvb2suCgkoaXNfY29zdGx5X2dyb3VwKTogVXBkYXRlIHRvIHVzZSBuZXcgc2NoZWR1bGVyIGRlcGVuZGVuY2llcyBsaXN0cy4KCgkqIGNvbmZpZy9zcHUvc3B1LmMgKHNwdV9zY2hlZF9hZGp1c3RfY29zdCk6IFVzZSBpbnNuX2Nvc3QgKCkgZnVuY3Rpb24KCWluc3RlYWQgb2YgSU5TTl9DT1NUICgpIG1hY3JvLgoKMjAwNy0wMi0wMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGxvd2VyLXN1YnJlZy5jIChyZXNvbHZlX2Nsb2JiZXIpOiBIYW5kbGUgYSBzdWJyZWcgb2YgYSBjb25jYXRuLgoKMjAwNy0wMi0wMSAgR3V5IE1hcnRpbiAgPGdtc29mdEBnZW50b28ub3JnPgoKCSogcGEubWQgKHRwX2xvYWQpOiBDb3JyZWN0IG1mY3RsIGluc3RydWN0aW9uIHN5bnRheC4KCjIwMDctMDItMDEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3N0YWNrX2luZm8pOiBDb3JyZWN0CglhbHRpdmVjX3BhZGRpbmdfc2l6ZSBjYWxjdWxhdGlvbiBvbiBBSVguICBJbXByb3ZlIGNvbW1lbnQsIGFkZAoJYXNzZXJ0IHRvIHZlcmlmeSB0aGF0IGl0J3MgcmlnaHQuCgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChNRF9VTldJTkRfU1VQUE9SVCk6IERvbid0IGRlZmluZSBmb3IKCTY0LWJpdC4KCjIwMDctMi0wMSAgU2VvbmdiYWUgUGFyayAgPHNlb25nYmFlLnBhcmtAZ21haWwuY29tPgoKCVBSIGlubGluZS1hc20vMjg2ODYKCSogZ2xvYmFsLmMgKGdsb2JhbF9hbGxvYyk6IEFkZCBtaXNpbmcgaW5pdGlhbGl6YXRpb24gb2YKCUVMSU1JTkFCTEVfUkVHU0VULgoKMjAwNy0wMi0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKTogQ29ycmVjdCB3aGl0ZXNwYWNlLgoJKiBiYi1yZW9yZGVyLmMgKGZpeF9lZGdlc19mb3JfcmFyZWx5X2V4ZWN1dGVkX2NvZGUsCglwYXJ0aXRpb25faG90X2NvbGRfYmFzaWNfYmxvY2tzKTogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3ByaW50ZiwgZXhwYW5kX2J1aWx0aW5fZnByaW50ZiwKCWV4cGFuZF9idWlsdGluX3NwcmludGYsIGZvbGRfYnVpbHRpbl9jYXJnLCBmb2xkX2J1aWx0aW5fc3ByaW50ZiwKCW1heWJlX2VtaXRfc3ByaW50Zl9jaGtfd2FybmluZywgZm9sZF9idWlsdGluX3NwcmludGZfY2hrLAoJZm9sZF9idWlsdGluX3NucHJpbnRmX2NoaywgZm9sZF9idWlsdGluX3ByaW50ZiwKCWZvbGRfYnVpbHRpbl9mcHJpbnRmLCBkb19tcGZyX2NrY29udiwgZG9fbXBmcl9hcmcxLCBkb19tcGZyX2FyZzIsCglkb19tcGZyX2FyZzMsIGRvX21wZnJfc2luY29zKTogTGlrZXdpc2UuCgkqIGNmZ2NsZWFudXAuYyAoY2xlYW51cF9jZmcpOiBMaWtld2lzZS4KCSogY2ZnZXhwYW5kLmMgKHRyZWVfZXhwYW5kX2NmZyk6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KSA8UkRJVl9FWFBSPjogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGdldF9uZXh0X2Z1bmNkZWZfbm8pOiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUuYyAobWFpbik6IExpa2V3aXNlLgoJKiBnZW5tb2Rlcy5jIChtYWluKTogTGlrZXdpc2UuCgkqIGdjc2UuYyAoYnlwYXNzX2NvbmRpdGlvbmFsX2p1bXBzLCBwcmludF9sZHN0X2xpc3QpOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfYmxvY2ssIGV4dGVuZF9oX2lfZCk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChub2NlX2VtaXRfbW92ZV9pbnNuKTogTGlrZXdpc2UuCgkqIG1vZHVsby1zY2hlZC5jIChnZW5lcmF0ZV9wcm9sb2dfZXBpbG9nLCBzbXNfc2NoZWR1bGVfYnlfb3JkZXIpOgoJTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKGdldF9iZXN0X21vZGUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChnZXRfdmFsX2Zvcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChnZXRfdmFyaW5mbywgZ2V0X3ZhcmluZm9fZmMsCglzY2NfdmlzaXQsIGRvX2RzX2NvbnN0cmFpbnQsIGRvX2NvbXBsZXhfY29uc3RyYWludCwgbGFiZWxfdmlzaXQsCglwZXJmb3JtX3Zhcl9zdWJzdGl0dXRpb24sIHNvbHZlX2dyYXBoKTogTGlrZXdpc2UuCgkqIHRyZWUtdnJwLmMgKHZycF9maW5hbGl6ZSk6IExpa2V3aXNlLgoKMjAwNy0wMi0wMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGxvd2VyLXN1YnJlZy5jIChzaW1wbGlmeV9nZW5fc3VicmVnX2NvbmNhdG4pOiBJZiB3ZSBhc2sgZm9yIHRoZQoJaGlnaCBwYXJ0IG9mIGEgcGFyYWRveGljYWwgc3VicmVnLCByZXR1cm4gYSBjb25zdGFudCB6ZXJvLgoKMjAwNy0wMi0wMSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKGxhbmdfZGVwZW5kZW50X2luaXQpOiBDYWxsIGluaXRfc2V0X2Nvc3RzLgoJKiBsb29wLWluaXQuYyAobG9vcF9vcHRpbWl6ZXJfaW5pdCk6IERvIG5vdCBjYWxsIGluaXRfc2V0X2Nvc3RzLgoKMjAwNy0wMi0wMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzA2NTYKCSogZm9sZC1jb25zdC5jIChmb2xkX25lZ2F0ZV9leHByKTogQWxsb3cgbmVnYXRpbmcgYQoJY29uc3RhbnQgaWYgb3ZlcmZsb3cgZG9lcyBub3QgY2hhbmdlLgoKMjAwNy0wMi0wMSAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KCgkqIGRvYy9jLXRyZWUudGV4aSAoRXhwcmVzc2lvbiB0cmVlcyk6IEltcHJvdmUgbWFya3VwLgoJKiBkb2MvdG0udGV4aSAoUmVnaXN0ZXIgQ2xhc3NlcywgQWRkcmVzc2luZyBNb2RlcykKCShGbG9hdGluZyBQb2ludCk6IEZpeCBzcGFjaW5nIGFmdGVyIGFiYnJldmlhdGlvbnMuICBGaXggc29tZQoJdHlwb3MuCgoyMDA3LTAyLTAxICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVwbGFjZSAiYnVnZml4IiB3aXRoICJidWcgZml4IiB0aHJvdWdob3V0LgoJKiBkb2MvY29udHJpYi50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2luc3RhbGwudGV4aTogTGlrZXdpc2UuCgoyMDA3LTAxLTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBsb3dlci1zdWJyZWcuYzogTmV3IGZpbGUuCgkqIHJ0bC5kZWYgKENPTkNBVE4pOiBEZWZpbmUuCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBBZGQgcGFzc19sb3dlcl9zdWJyZWcgYW5kCglwYXNzX2xvd2VyX3N1YnJlZzIuCgkqIGVtaXQtcnRsLmMgKHVwZGF0ZV9yZWdfb2Zmc2V0KTogTmV3IHN0YXRpYyBmdW5jdGlvbiwgYnJva2VuIG91dAoJb2YgZ2VuX3J0eF9SRUdfb2Zmc2V0LgoJKGdlbl9ydHhfUkVHX29mZnNldCk6IENhbGwgdXBkYXRlX3JlZ19vZmZzZXQuCgkoZ2VuX3JlZ19ydHhfb2Zmc2V0KTogTmV3IGZ1bmN0aW9uLgoJKiByZWdjbGFzcy5jOiBSZXZlcnQgcGF0Y2ggb2YgMjAwNi0wMy0wNSwgcmVzdG9yaW5nCglyZWdfc2Nhbl91cGRhdGUuCgkoY2xlYXJfcmVnX2luZm9fcmVnbm8pOiBOZXcgZnVuY3Rpb24uCgkqIGR3YXJmMm91dC5jIChjb25jYXRuX2xvY19kZXNjcmlwdG9yKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShsb2NfZGVzY3JpcHRvcik6IEhhbmRsZSBDT05DQVROLgoJKiBjb21tb24ub3B0IChmc3BsaXRfd2lkZV90eXBlcyk6IE5ldyBvcHRpb24uCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBTZXQgZmxhZ19zcGxpdF93aWRlX3R5cGVzIHdoZW4KCW9wdGltaXppbmcuCgkqIHRpbWV2YXIuZGVmIChUVl9MT1dFUl9TVUJSRUcpOiBEZWZpbmUuCgkqIHJ0bC5oIChnZW5fcmVnX3J0eF9vZmZzZXQpOiBEZWNsYXJlLgoJKHJlZ19zY2FuX3VwZGF0ZSk6IERlY2xhcmUuCgkqIHJlZ3MuaCAoY2xlYXJfcmVnX2luZm9fcmVnbm8pOiBEZWNsYXJlLgoJKiB0cmVlLXBhc3MuaCAocGFzc19sb3dlcl9zdWJyZWcpOiBEZWNsYXJlLgoJKHBhc3NfbG93ZXJfc3VicmVnMik6IERlY2xhcmUuCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW9uIFN1bW1hcnkpOiBMaXN0IC1mbm8tc3BsaXQtd2lkZS10eXBlcy4KCShPcHRpbWl6ZSBPcHRpb25zKTogQWRkIC1mc3BsaXQtd2lkZS10eXBlcyB0byAtTzEgbGlzdC4gIERvY3VtZW50CgktZnNwbGl0LXdpZGUtdHlwZXMuCgkqIGRvYy9ydGwudGV4aSAoUmVncyBhbmQgTWVtb3J5KTogRG9jdW1lbnQgY29uY2F0IGFuZCBjb25jYXRuLgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1jb21tb24pOiBBZGQgbG93ZXItc3VicmVnLm8uCgkobG93ZXItc3VicmVnLm8pOiBOZXcgdGFyZ2V0LgoKMjAwNy0wMS0zMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoSEFWRV9TRUNPTkRBUllfUkVMT0FEUyk6IFJlbW92ZS4KCjIwMDctMDEtMzEgIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCglQUiB0YXJnZXQvMTkwODcKCSogY29uZmlnL2F2ci9hdnIuYyAoRFdBUkYyX0FERFJfU0laRSk6IERlZmluZS4KCjIwMDctMDEtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCglQUiBtaWRkbGUtZW5kLzI5MzM1CgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9zcXJ0KTogVXNlIE1QRlIgZm9yIGNvbnN0YW50IGFyZ3MuCgoyMDA3LTAxLTMxICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBjZmdsb29wLmg6IEluY2x1ZGUgdmVjLXByaW0uaC4KCShlbnVtIGxpX2ZsYWdzKTogUmVtb3ZlIExJX09OTFlfT0xELgoJKGxvb3BfaXRlcmF0b3IpOiBDaGFuZ2VkLgoJKGZlbF9uZXh0LCBmZWxfaW5pdCk6IEl0ZXJhdGUgb3ZlciBsb29wIHRyZWUuCgkoRk9SX0VBQ0hfTE9PUF9CUkVBSyk6IE5ldyBtYWNyby4KCSogbG9vcC11bnN3aXRjaC5jICh1bnN3aXRjaF9sb29wcyk6IERvIG5vdCBwYXNzIExJX09OTFlfT0xEIHRvCglGT1JfRUFDSF9MT09QLgoJKiB0cmVlLXNzYS1sb29wLXVuc3dpdGNoLmMgKHRyZWVfc3NhX3Vuc3dpdGNoX2xvb3BzKTogRGl0dG8uCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUpOiBEaXR0by4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3Rvcml6ZV9sb29wcyk6IERpdHRvLgoJKiBkb2MvbG9vcC50ZXhpOiBVcGRhdGUgaW5mb3JtYXRpb24gb24gbG9vcCBudW1iZXJpbmcgYW5kIGJlaGF2aW9yIG9mCglGT1JfRUFDSF9MT09QIHdydG8gbmV3IGxvb3BzLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoY29tcHV0ZV9vdmVyYWxsX2VmZmVjdF9vZl9pbm5lcl9sb29wLAoJYWRkX3RvX2V2b2x1dGlvbl8xKTogVGVzdCBuZXN0ZWRuZXNzIG9mIGxvb3BzIGluc3RlYWQgb2YgY29tcGFyaW5nCgl0aGVpciBudW1iZXJzLgoJKiB0cmVlLWNocmVjLmMgKGNocmVjX2ZvbGRfcGx1c19wb2x5X3BvbHksCgljaHJlY19mb2xkX211bHRpcGx5X3BvbHlfcG9seSwgY2hyZWNfZXZhbHVhdGUsCgloaWRlX2V2b2x1dGlvbl9pbl9vdGhlcl9sb29wc190aGFuX2xvb3AsIGNocmVjX2NvbXBvbmVudF9pbl9sb29wX251bSwKCXJlc2V0X2V2b2x1dGlvbl9pbl9sb29wKTogRGl0dG8uCgkqIE1ha2VmaWxlLmluIChDRkdMT09QX0gpOiBBZGQgdmVjcHJpbS5oIGRlcGVuZGVuY3kuCgoyMDA3LTAxLTMxICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCSogYy1jb21tb24uYyAod2Fybl9hYm91dF9wYXJlbnRoZXNlcyk6IFNlcGFyYXRlIHdhcm5pbmcgYWJvdXQKCXVuLXBhcmVudGhpemVkIHNlcXVlbmNlIG9mIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZyb20gdGhlIG9uZQoJd2hpY2ggaXMgc3VwcG9zZWQgdG8gd2FybiBhYm91dCB4IDw9IHkgPD0gei4KCjIwMDctMDEtMzEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX2lzaW5mLgoJKGlzaW5mX29wdGFiKTogRGVmaW5lIGNvcnJlc3BvbmRpbmcgbWFjcm8uCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgaXNpbmZfb3B0YWIuCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBJbXBsZW1lbnQgaXNpbmZfb3B0YWIgdXNpbmcgaXNpbmY/ZjIKCXBhdHRlcm5zLgoJKiBidWlsdGlucy5jIChtYXRoZm5fYnVpbHRfaW4pOiBIYW5kbGUgQlVJTFRfSU5fSVNJTkZ7LEYsTH0uCgkoZXhwYW5kX2J1aWx0aW5faW50ZXJjbGFzc19tYXRoZm4pOiBFeHBhbmQgQlVJTFRfSU5fSVNJTkZ7LEYsTH0KCXVzaW5nIGlzaW5mX29wdGFiLgoJKGV4cGFuZF9idWlsdGluKTogRXhwYW5kIEJVSUxUX0lOX0lTSU5GeyxGLEx9IHVzaW5nCglleHBhbmRfYnVpbHRpbl9pbnRlcmNsYXNzX21hdGhmbi4KCSogcmVnX3N0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19GWEFNLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChVTlNQRUNfRlhBTSk6IE5ldyBjb25zdGFudC4KCShmeGFtPG1vZGU+Ml9pMzg3KTogTmV3IGluc24gcGF0dGVybi4KCShpc2luZjxtb2RlPjIpIE5ldyBleHBhbmRlciB0byBpbXBsZW1lbnQgaXNpbmYsIGlzaW5mZiBhbmQgaXNpbmZsCglidWlsdC1pbiBmdW5jdGlvbnMgYXMgeDg3IGlubGluZSBhc20uCgoyMDA3LTAxLTMxICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vdW53aW5kLWFybS5oIChfc2xlYjEyOF90LCBfdWxlYjEyOF90KTogTmV3LgoKMjAwNy0wMS0zMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy5nY2M6IEFkZCBnZW9kZS4KCjIwMDctMDEtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY2dyYXBodW5pdC5jLCBjb25maWcvYXJtL2FybS5jLCBjb25maWcvbTY4ay9tNjhrLmMsCglpcGEtaW5saW5lLmMsIHRyZWUtcHJvZmlsZS5jLCB0cmVlLXNzYS1saXZlLmMsCgl0cmVlLXNzYS1tYXRoLW9wdHMuYywgdHJlZS1zc2FuYW1lcy5jLCB0cmVlLXZlY3QtYW5hbHl6ZS5jLAoJdmFsdWUtcHJvZi5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDctMDEtMzAgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCVBSIGMrKy8yNDc0NQoJKiBkb2MvaW52b2tlLnRleGkgKFdwb2ludGVyLWFyaXRoKTogRG9jdW1lbnQgd2FybmluZy4KCjIwMDctMDEtMzAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChEZWNpbWFsIEZsb2F0aW5nIFR5cGVzKTogUmVtb3ZlIGRlY2Zsb2F0LmggZnJvbQoJdGhlIGxpc3Qgb2YgZGlzY3JlcGFuY2llcyBmcm9tIHRoZSBkcmFmdCBUUi4KCjIwMDctMDEtMzAgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJUFIgYysrLzMwNjAxCgkqIGRvYy9pbnZva2UudGV4aSAoLVdyZXR1cm4tdHlwZSk6IFVwZGF0ZSBkZXNjcmlwdGlvbiB0bwoJbWF0Y2ggbmV3IGJlaGF2aW9yLgoKMjAwNy0wMS0zMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjZmdydGwuYyAodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogQ2hlY2sgb25seV9zZXRzX2NjMF9wLgoKMjAwNy0wMS0zMCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2ludF9pbnRlcmNsYXNzX3JvdW5kaW5nZm4pOiBOZXcgZnVuY3Rpb24KCXRvIGhhbmRsZSBvcHRhYnMgdGhhdCBvcGVyYXRlIG9uIGZsb2F0aW5nIHBvaW50IGlucHV0IGFyZ3VtZW50IGFuZAoJb3V0cHV0IHRvIGludGVnZXIgb3V0cHV0LgoJKGV4cGFuZF9idWlsdGluX21hdGhmbikgW0JVSUxUX0lOX0lMT0dCXTogTW92ZSBmcm9tIGhlcmUgLi4uCgkoZXhwYW5kX2J1aWx0aW5faW50ZXJjbGFzc19tYXRoZm4pIFtCVUlMVF9JTl9JTE9HQl06IC4uLiB0byBoZXJlLgoJKGV4cGFuZF9idWlsdGluKTogRXhwYW5kIEJVSUxUX0lOX0lMT0dCeyxGLEx9IHVzaW5nCglleHBhbmRfYnVpbHRpbl9pbnRlcmNsYXNzX21hdGhmbiAoKS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZnh0cmFjdHhmM19pMzg3KTogUmVuYW1lIGZyb20gKmZ4dHJhY3R4ZjNfaTM4Ny4KCShpbG9nYnNpMik6IFJlbW92ZS4KCShpbG9nYnhmMiwgaWxvZ2I8bW9kZT4yKTogTmV3IGV4cGFuZGVycyB0byBpbXBsZW1lbnQgaWxvZ2IsIGlsb2diZiBhbmQKCWlsb2dibCBidWlsdC1pbiBmdW5jdGlvbnMgYXMgeDg3IGludHJpbnNpY3MuCgoyMDA3LTAxLTMwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yNzY1NwoJKiBkd2FyZjJvdXQuYyAocmVmZXJlbmNlX3RvX3VudXNlZCk6IFF1ZXJ5IHZhcnBvb2wgaWYgdGhlCgl2YXJpYWJsZSB3YXMgb3V0cHV0LgoKMjAwNy0wMS0zMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMzAzMTMKCSogcGFzc2VzLmMgKGV4ZWN1dGVfb25lX3Bhc3MpOiBSZXNldCBpbl9naW1wbGVfZm9ybSB0byBub3QKCWNvbmZ1c2Ugbm9uLXVuaXQtYXQtYS10aW1lIG1vZGUuCgoyMDA3LTAxLTI5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBmb2xkLWNvbnN0LmMgKHJvdW5kX3VwKTogTWFrZSBISUdIIGFuIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgdG8KCWF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIgb24gb3ZlcmZsb3cuICBVc2UgZm9yY2VfZml0X3R5cGVfZG91YmxlCgl0byBjb25zdHJ1Y3QgdGhlIGNvbnN0YW50IHdpdGggdGhlIHNwZWNpZmllZCBUUkVFX09WRVJGTE9XLgoKMjAwNy0wMS0yOSAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBjb25maWcvZGZwLWJpdC5jOiBBZGQgcGFyYW1ldGVyaXplZCBzdXBwb3J0IGZvciBmcCBleGNlcHRpb25zLgoJKiBjb25maWcvZGZwLWJpdC5oOiBEaXR0by4KCjIwMDctMDEtMjkgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCSogYy1kZWNsLmMgKHBvcF9zY29wZSk6IFJlcGxhY2Ugd2FybmluZ3Mgd2l0aCBjYWxsIHRvCgl3YXJuX2Zvcl91bnVzZWRfbGFiZWwuCgkqIGMtY29tbW9uLmggKHdhcm5fZm9yX3VudXNlZF9sYWJlbCk6IERlY2xhcmUuCgkqIGMtY29tbW9uLmMgKHdhcm5fZm9yX3VudXNlZF9sYWJlbCk6IERlZmluZS4KCjIwMDctMDEtMjkgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCSogdHJlZS1vcHRpbWl6ZS5jICh1cGRhdGVfaW5saW5lZF90b19wb2ludGVycyk6IERlbGV0ZSB1bnVzZWQKCWZ1bmN0aW9uLgoKMjAwNy0wMS0yOSAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVVNFUl9IKTogUmVtb3ZlIGRlY2Zsb2F0LmguCgkqIGdpbmNsdWRlL2RlY2Zsb2F0Lmg6IERlbGV0ZSwgbW92aW5nIGNvbnRlbnRzIHRvIC4uLgoJKiBnaW5jbHVkZS9mbG9hdC5oOiBBZGQgc3VwcG9ydCBmb3IgZGVjaW1hbCBmbG9hdGluZyBwb2ludCwKCWd1YXJkZWQgYnkgX19TVERDX1dBTlRfREVDX0ZQX18uCgoyMDA3LTAxLTI5ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRvYy9nY2NpbnQudGV4aSAoVG9wKTogUmVuYW1lIExvb3AgUmVwcmVzZW50YXRpb24gdG8gTG9vcAoJQW5hbHlzaXMgYW5kIFJlcHJlc2VudGF0aW9uIHRvIHJlc29sdmUgY2FzZSBpbnNlbnNpdGl2ZSBjb25mbGljdC4KCSogZG9jL2xvb3AudGV4aSAoTG9vcCBBbmFseXNpcyBhbmQgUmVwcmVzZW50YXRpb24pOiBMaWtld2lzZS4KCjIwMDctMDEtMjggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9tZW1vcnlfdGFnKTogQWRkIGFsaWFzZXMgbWVtYmVyLgoJKE1UQUdfQUxJQVNFUyk6IE5ldyBtYWNyby4KCSogdHJlZS1zc2EtYWxpYXMuYyAoYWxpYXNfYml0bWFwX29ic3RhY2spOiBOZXcgdmFyaWFibGUuCgkoYWRkX21heV9hbGlhcyk6IFJlbW92ZSBwb2ludGVyLXNldC4gVXBkYXRlIGZvciBtYXlfYWxpYXNlcyBiZWluZwoJYSBiaXRtYXAuCgkobWFya19hbGlhc2VzX2NhbGxfY2xvYmJlcmVkKTogVXBkYXRlIGZvciBtYXlfYWxpYXNlcyBiZWluZyBhCgliaXRtYXAuCgkoY29tcHV0ZV90YWdfcHJvcGVydGllcyk6IERpdHRvLgoJKGNyZWF0ZV9wYXJ0aXRpb25fZm9yKTogRGl0dG8uCgkoY29tcHV0ZV9tZW1vcnlfcGFydGl0aW9ucyk6IERpdHRvLgoJKGR1bXBfbWF5X2FsaWFzZXNfZm9yKTogRGl0dG8uCgkoaXNfYWxpYXNlZF93aXRoKTogRGl0dG8uCgkoYWRkX21heV9hbGlhc19mb3JfbmV3X3RhZyk6IERpdHRvLgoJKHJld3JpdGVfYWxpYXNfc2V0X2Zvcik6IFJld3JpdGUgZm9yIG1heV9hbGlhc2VzIGJlaW5nIGEgYml0bWFwLgoJKGNvbXB1dGVfaXNfYWxpYXNlZCk6IE5ldyBmdW5jdGlvbi4KCShjb21wdXRlX21heV9hbGlhc2VzKTogQ2FsbCBjb21wdXRlX2lzX2FsaWFzZWQpLgoJKGluaXRfYWxpYXNfaW5mbyk6IEluaXRpYWxpemUgYWxpYXNfYml0bWFwX29ic3RhY2suCgkodW5pb25fYWxpYXNfc2V0X2ludG8pOiBOZXcgZnVuY3Rpb24uCgkoY29tcHV0ZV9mbG93X3NlbnNpdGl2ZV9hbGlhc2luZyk6IFVzZSB1bmlvbl9hbGlhc2VzX2ludG8uCgkoaGF2ZV9jb21tb25fYWxpYXNlc19wKTogUmV3cml0ZSB0byB0YWtlIHR3byBiaXRtYXBzIGFuZCB1c2UKCWludGVyc2VjdGlvbi4KCShjb21wdXRlX2Zsb3dfaW5zZW5zaXRpdmVfYWxpYXNpbmcpOiBTdG9wIHVzaW5nIHBvaW50ZXItc2V0cy4KCVVwZGF0ZSBmb3IgYml0bWFwcy4KCShmaW5hbGl6ZV9yZWZfYWxsX3BvaW50ZXJzKTogVXBkYXRlIGZvciBhZGRfbWF5X2FsaWFzIGNoYW5nZXMuCgkobmV3X3R5cGVfYWxpYXMpOiBEaXR0by4KCSogdHJlZS1mbG93LWlubGluZS5oIChtYXlfYWxpYXNlcyk6IFJldHVybiBhIGJpdG1hcC4KCSogdHJlZS1kZmEuYyAoZHVtcF92YXJpYWJsZSk6IENoZWNrIGZvciBNVEFHX1AnbmVzcy4KCSogdHJlZS1zc2EuYyAodmVyaWZ5X2Zsb3dfaW5zZW5zaXRpdmVfYWxpYXNfaW5mbyk6IFVwZGF0ZSBmb3IKCW1heV9hbGlhc2VzIGJlaW5nIGEgYml0bWFwLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IHZhcl9hbm5fZCk6IFJlbW92ZSBtYXlfYWxpYXNlcyBtZW1iZXIuCgltYXlfYWxpYXNlcyBub3cgcmV0dXJucyBhIGJpdG1hcC4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAobWVyZ2Vfc210c19pbnRvKTogVXBkYXRlIGZvciBtYXlfYWxpYXNlcwoJYmVpbmcgYSBiaXRtYXAuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF92aXJ0dWFsX29wZXJhbmQpOiBVcGRhdGUgZm9yCgltYXlfYWxpYXNlcyBiZWluZyBhIGJpdG1hcC4KCjIwMDctMDEtMjkgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMwNjMwCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGRvX2NvbXBsZXhfY29uc3RyYWludCk6IE1hcmsgY29ycmVjdAoJdmFyaWFibGUgYXMgY2hhbmdlZC4KCjIwMDctMDEtMjkgIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMjgyNjYKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfdGFyZ2V0X2V4cHIpOiBNYWtlIHN1cmUgdGhhdCB0aGUgVEFSR0VUX0VYUFIgaXMKCWV4cGFuZGVkIG9ubHkgb25jZSBldmVuIGlmIGFuIGVycm9yIG9jY3Vycy4KCjIwMDctMDEtMjkgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZ2Nvdi1pby5oIChfX2djb3ZfaW5kaXJlY3RfY2FsbF9wcm9maWxlcik6IERlY2xhcmUuCgkoX19nY292X2F2ZXJhZ2VfcHJvZmlsZXIpOiBMaWtld2lzZS4KCShfX2djb3ZfaW9yX3Byb2ZpbGVyKTogTGlrZXdpc2UuCgkoX19nY292X21lcmdlX2lvcik6IExpa2V3aXNlLgoKMjAwNy0wMS0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtc2V0KTogRml4IHR5cG8gaW4gbXkgbGFzdCBwYXRjaC4KCSogdmFsdWUtcHJvZi5jIChzdHJpbmdvcF9ibG9ja19wcm9maWxlKTogTGlrZXdpc2UuCgoyMDA3LTAxLTI4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHByLmMgKGVtaXRfYmxvY2tfbW92ZV92aWFfbW92bWVtLCBlbWl0X2Jsb2NrX21vdmVfdmlhX2xpYmNhbGwpOgoJQWRkIHZhcmlhbnQgaGFuZGxpbmcgaGlzdG9ncmFtczsgYWRkIHdyYXBwZXIuCgkoY2xlYXJfc3RvcmFnZV92aWFfbGliY2FsbCk6IEV4cG9ydC4KCShlbWl0X2Jsb2NrX21vdmVfaGludHMpOiBCcmVhayBvdXQgZnJvbSAuLi47IGFkZCBoaXN0b2dyYW1zLgoJKGVtaXRfYmxvY2tfbW92ZSk6IC4uLiB0aGlzIG9uZS4KCShjbGVhcl9zdG9yYWdlX2hpbnRzKTogQnJlYWsgb3V0IGZyb20gLi4uOyBhZGQgaGlzdG9ncmFtcy4KCShjbGVhcl9zdG9yYWdlKTogLi4uIHRoaXMgb25lLgoJKHNldF9zdG9yYWdlX3ZpYV9tZW1zZXQpOiBIYW5kbGUgaGlzdG9ncmFtLgoJKiBleHByLmggKGVtaXRfYmxvY2tfbW92ZV92aWFfbGliY2FsbCwgZW1pdF9ibG9ja19tb3ZlX2hpbnRzKTogRGVjbGFyZS4KCShjbGVhcl9zdG9yYWdlX2hpbnRzLCBjbGVhcl9zdG9yYWdlX3ZpYV9saWJjYWxsKTogRGVjbGFyZS4KCShzZXRfc3RvcmFnZV92aWFfc2V0bWVtKTogVXBkYXRlIHByb3RvdHlwZS4KCSogZG9jL21kLnRleGkgKG1vdm1lbSwgc2V0bWVtKTogRG9jdW1lbnQgbmV3IGFyZ3VtZW50cy4KCgkqIHZhbHVlLXByb2YuYyAoZHVtcF9oaXN0b2dyYW1fdmFsdWUsIHRyZWVfZmluZF92YWx1ZXNfdG9fcHJvZmlsZSk6CglBZGQgbmV3IGhpc3RvZ3JhbXMuCgkoc3RyaW5nb3BfYmxvY2tfcHJvZmlsZSk6IE5ldyBnbG9iYWwgZnVuY3Rpb24uCgkodHJlZV9zdHJpbmdvcHNfdmFsdWVzX3RvX3Byb2ZpbGUpOiBQcm9maWxlIGJsb2NrIHNpemUgYW5kIGFsaWdubWVudC4KCSogdmFsdWUtcHJvZi5oIChlbnVtIGhpc3RfdHlwZSk6IGFkZCBISVNUX1RZUEVfQVZFUkFHRSBhbmQKCUhJU1RfVFlQRV9JT1IuCgkoc3RydWN0IHByb2ZpbGVfaG9va3MpOiBBZGQgZ2VuX2F2ZXJhZ2VfcHJvZmlsZXIgYW5kIGdlbl9pb3JfcHJvZmlsZXIuCgkoc3RyaW5nb3BfYmxvY2tfcHJvZmlsZSk6IERlY2xhcmUuCgkqIGJ1aWx0aW5zLmM6IEluY2x1ZGUgdmFsdWUtcHJvZi5oLgoJKGV4cGFuZF9idWlsdGluX21lbWNweSwgZXhwYW5kX2J1aWx0aW5fbWVtc2V0KTogUGFzcyBibG9jayBwcm9maWxlLgoJKiBnY292LXVpLmggKEdDT1ZfQ09VTlRFUl9OQU1FUyk6IEFkZCBuZXcgY291bnRlci4KCShHQ09WX0NPVU5URVJfQVZFUkFHRSwgR0NPVl9DT1VOVEVSX0lPUik6IE5ldyBjb25zdGFudHMuCgkoR0NPVl9DT1VOVEVSUywgR0NPVl9MQVNUX1ZBTFVFX0NPVU5URVIpOiBVcGRhdGUuCgkqIHByb2ZpbGUuYyAoaW5zdHJ1bWVudF92YWx1ZXMpOiBBZGQgbmV3IGNvdW50ZXJzLgoJKiBjZmdleHBhbmQuYyAoZXhwYW5kX2dpbXBsZV9iYXNpY19ibG9jayk6IFByb3BhZ2F0ZSBoaXN0b2dyYW1zIHRvCgljYWxscy4KCSogdHJlZS1wcm9maWxlLmMgKHRyZWVfYXZlcmFnZV9wcm9maWxlcl9mbiwgdHJlZV9pb3JfcHJvZmlsZXJfZm4pOiBOZXcuCgkodHJlZV9pbml0X2VkZ2VfcHJvZmlsZXIpOiBCdWlsZCBuZXcgcHJvZmlsZXJzLgoJKHRyZWVfZ2VuX2F2ZXJhZ2VfcHJvZmlsZXIsIHRyZWVfZ2VuX2lvcl9wcm9maWxlcik6IE5ldy4KCShwYXNzX3RyZWVfcHJvZmlsZSk6IEFkZCBkdW1wLgoJKHRyZWVfcHJvZmlsZV9ob29rcyk6IFVwZGF0ZS4KCSogTWFrZWZpbGUuaW4gKExJQkdDT1YpOiBBZGQgbmV3IGNvbnN0YW50cy4KCSogbGliZ2Nvdi5jIChfX2djb3ZfbWVyZ2VfaW9yLCBfX2djb3ZfYXZlcmFnZV9wcm9maWxlciwKCV9fZ2Nvdl9pb3JfcHJvZmlsZXIpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKG1vdm1lbS9zZXRtZW0gZXhwYW5kZXJzKTogQWRkIG5ldyBvcHRpb25hbAoJYXJndW1lbnRzLgoKMjAwNy0wMS0yOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZG9jL21kLnRleGkgKFN0YW5kYXJkIFBhdHRlcm4gTmFtZXMpOiBEb2N1bWVudCBibG9ja2FnZSBwYXR0ZXJuLgoKMjAwNy0wMS0yOCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC11bnN3aXRjaC5jOiBJbmNsdWRlIHRyZWUtaW5saW5lLmguCgkodHJlZV91bnN3aXRjaF9zaW5nbGVfbG9vcCk6IFBhc3MgZW5pX3NpemVfd2VpZ2h0cyB0bwoJdHJlZV9udW1fbG9vcF9pbnNucy4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jOiBJbmNsdWRlIHRyZWUtaW5saW5lLmguCgkoY2FuX3Vucm9sbF9sb29wX3ApOiBQYXNzIGVuaV9zaXplX3dlaWdodHMgdG8KCXRyZWVfbnVtX2xvb3BfaW5zbnMuCgkqIHRyZWUtc3NhLWxvb3AtY2guYyAoc2hvdWxkX2R1cGxpY2F0ZV9sb29wX2hlYWRlcl9wKToKCVBhc3MgZW5pX3NpemVfd2VpZ2h0cyB0byBlc3RpbWF0ZV9udW1faW5zbnMuCgkqIHRyZWUuaCAoaW5pdF9pbmxpbmVfb25jZSk6IEV4cG9ydC4KCSogdG9wbGV2LmMgKGJhY2tlbmRfaW5pdCk6IENhbGwgaW5pdF9pbmxpbmVfb25jZS4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfcHJvY2Vzc19uZXdfZnVuY3Rpb25zLAoJY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBQYXNzIGVuaV9pbmxpbmluZ193ZWlnaHRzIHRvCgllc3RpbWF0ZV9udW1faW5zbnMuCgkqIGlwYS1pbmxpbmUuYyAoY29tcHV0ZV9pbmxpbmVfcGFyYW1ldGVycyk6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLWl2Y2Fub24uYyAodHJlZV9udW1fbG9vcF9pbnNucyk6IFBhc3Mgd2VpZ2h0cwoJdG8gZXN0aW1hdGVfbnVtX2luc25zLgoJKHRyeV91bnJvbGxfbG9vcF9jb21wbGV0ZWx5KTogUGFzcyBlbmlfc2l6ZV93ZWlnaHRzIHRvCgl0cmVlX251bV9sb29wX2luc25zLgoJKiB0cmVlLWVoLmMgKGRlY2lkZV9jb3B5X3RyeV9maW5hbGx5KTogUGFzcyBlbmlfc2l6ZV93ZWlnaHRzCglvdCBlc3RpbWF0ZV9udW1faW5zbnMuCgkqIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYzogSW5jbHVkZSB0cmVlLWlubGluZS5oLgoJKGxvb3BfcHJlZmV0Y2hfYXJyYXlzKTogUGFzcyBlbmlfdGltZV93ZWlnaHRzIHRvIHRyZWVfbnVtX2xvb3BfaW5zbnMuCgkqIHRyZWUtaW5saW5lLmMgKGVuaV9pbmxpbmluZ193ZWlnaHRzLCBlbmlfc2l6ZV93ZWlnaHRzLAoJZW5pX3RpbWVfd2VpZ2h0cyk6IE5ldyB2YXJpYWJsZXMuCgkoaW5pdF9pbmxpbmVfb25jZSk6IEluaXRpYWxpemUgdGhlbS4KCShzdHJ1Y3QgZW5pX2RhdGEpOiBNZXcuCgkoZXN0aW1hdGVfbnVtX2luc25zXzEsIGVzdGltYXRlX251bV9pbnNucyk6IFVzZSB3ZWlnaHRzLgoJKiB0cmVlLWlubGluZS5oIChzdHJ1Y3QgZW5pX3dlaWdodHNfZCk6IE5ldy4KCShlbmlfaW5saW5pbmdfd2VpZ2h0cywgZW5pX3NpemVfd2VpZ2h0cywgZW5pX3RpbWVfd2VpZ2h0cyk6IERlY2xhcmUuCgkoZXN0aW1hdGVfbnVtX2luc25zKTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCSogY2ZnbG9vcC5oICh0cmVlX251bV9sb29wX2luc25zKTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLWxvb3AtdW5zd2l0Y2gubywgdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5vLAoJdHJlZS1zc2EtbG9vcC1tYW5pcC5vKTogQWRkIFRSRUVfSU5MSU5FX0ggZGVwZW5kZW5jeS4KCjIwMDctMDEtMjggIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtZGF0YS1yZWYuYyAoY29uZmxpY3RfZm4pOiBBc3NlcnQgdGhhdCB0aGUgbnVtYmVyIG9mIGFmZmluZQoJcmVsYXRpb25zIGluIHRoZSBjb25mbGljdCBmdW5jdGlvbiBpcyB2YWxpZC4KCjIwMDctMDEtMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBjb21tb24ub3B0OiBBZGQgZnN0cmljdC1vdmVyZmxvdy4KCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IFNldCBmbGFnX3N0cmljdF9vdmVyZmxvdyBpZiAtTzIuCgkqIGZsYWdzLmggKFRZUEVfT1ZFUkZMT1dfV1JBUFMpOiBEZWZpbmUuCgkoVFlQRV9PVkVSRkxPV19VTkRFRklORUQpOiBEZWZpbmUuCgkoVFlQRV9PVkVSRkxPV19UUkFQUyk6IERlZmluZS4gIFRoaXMgcmVwbGFjZXMgVFlQRV9UUkFQX1NJR05FRC4KCVJlcGxhY2UgYWxsIHVzZXMuCgkqIHRyZWUuaCAoVFlQRV9UUkFQX1NJR05FRCk6IERvbid0IGRlZmluZS4KCSogZm9sZC1jb25zdC5jIChuZWdhdGVfZXhwcl9wKTogVXNlIFRZUEVfT1ZFUkZMT1dfVU5ERUZJTkVELgoJKGZvbGRfbmVnYXRlX2V4cHIpOiBMaWtld2lzZS4KCShtYWtlX3JhbmdlKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9tdWxkaXZfMSk6IExpa2V3aXNlLgoJKG1heWJlX2Nhbm9uaWNhbGl6ZV9jb21wYXJpc29uKTogTGlrZXdpc2UuCgkoZm9sZF9jb21wYXJpc29uKTogTGlrZXdpc2UuCgkoZm9sZF9iaW5hcnkpOiBMaWtld2lzZS4KCSh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IExpa2V3aXNlLgoJKHRyZWVfZXhwcl9ub256ZXJvX3ApOiBMaWtld2lzZS4KCSogdHJlZS12cnAuYyAoY29tcGFyZV92YWx1ZXMpOiBMaWtld2lzZS4KCShleHRyYWN0X3JhbmdlX2Zyb21fYmluYXJ5X2V4cHIpOiBMaWtld2lzZS4KCShleHRyYWN0X3JhbmdlX2Zyb21fdW5hcnlfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKGluZmVyX2xvb3BfYm91bmRzX2Zyb21fc2lnbmVkbmVzcyk6CglMaWtld2lzZS4KCShub3dyYXBfdHlwZV9wKTogTGlrZXdpc2UuCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jIChzaW1wbGVfaXYpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChuZWdhdGVfZXhwcl9wKTogVXNlIFRZUEVfT1ZFUkZMT1dfV1JBUFMuCgkoYnVpbGRfcmFuZ2VfY2hlY2spOiBMaWtld2lzZS4KCShleHRyYWN0X211bGRpdl8xKTogTGlrZXdpc2UuCgkoZm9sZF9jb21wYXJpc29uKTogTGlrZXdpc2UuCgkqIHRyZWUtdnJwLmMgKHZycF9pbnRfY29uc3RfYmlub3ApOiBMaWtld2lzZS4KCShleHRyYWN0X3JhbmdlX2Zyb21fdW5hcnlfZXhwcik6IExpa2V3aXNlLgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9faW50ZWdlcik6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfbmVnYXRlX2V4cHIpOiBVc2UgVFlQRV9PVkVSRkxPV19UUkFQUy4KCShmb2xkX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCShmb2xkX2JpbmFyeSk6IExpa2V3aXNlLgoJKiBvcHRhYnMuYyAob3B0YWJfZm9yX3RyZWVfY29kZSk6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9pc19zaW1wbGVfcmVkdWN0aW9uKTogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9jb25zdF9yZWxhdGlvbmFsX29wZXJhdGlvbik6IENoZWNrCglmbGFnX3N0cmljdF9vdmVyZmxvdyBhbmQgZmxhZ190cmFwdi4KCShzaW1wbGlmeV9jb25zdF9yZWxhdGlvbmFsX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5KTogTWVudGlvbiAtZnN0cmljdC1vdmVyZmxvdy4KCShPcHRpbWl6ZSBPcHRpb25zKTogQWRkIC1mc3RyaWN0LW92ZXJmbG93IHRvIC1PMiBsaXN0LiAgRG9jdW1lbnQKCS1mc3RyaWN0LW92ZXJmbG93LgoKMjAwNy0wMS0yNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLmMgKHRyZWVfZm9sZF9nY2QpOiBEZWxldGUuCgkqIHRyZWUuaCAodHJlZV9mb2xkX2djZCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIHRyZWUtZGF0YS1yZWYuYyAodHJlZV9mb2xkX2RpdmlkZXNfcCk6IERvbid0IHVzZSB0cmVlX2ZvbGRfZ2NkIHRvCgl0ZXN0IHdoZXRoZXIgb25lIGNvbnN0YW50IGludGVnZXIgaXMgYSBtdWx0aXBsZSBvZiBhbm90aGVyLiAgSW5zdGVhZAoJY2FsbCBpbnRfY29uc3RfYmlub3Agd2l0aCBUUlVOQ19NT0RfRVhQUiBhbmQgdGVzdCBmb3IgYSB6ZXJvIHJlc3VsdC4KCSogZm9sZC1jb25zdC5jIChtdWx0aXBsZV9vZl9wKTogV2UndmUgZGV0ZXJtaW5lZCBib3RoIFRPUCBhbmQKCUJPVFRPTSBhcmUgaW50ZWdlciBjb25zdGFudHMgc28gd2UgY2FuIGNhbGwgaW50X2NvbnN0X2Jpbm9wIGRpcmVjdGx5CglpbnN0ZWFkIG9mIHRoZSBtb3JlIGdlbmVyaWMgY29uc3RfYmlub3AuCgoyMDA3LTAxLTI3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoc2l6ZV9iaW5vcCk6IEluIHRoZSBmYXN0LXBhdGhzIGZvciBYKzAsIDArWCwgWC0wIGFuZAoJMSpYIGNoZWNrIHRoYXQgdGhlIGNvbnN0YW50IGhhc24ndCBvdmVyZmxvd2VkLCB0byBwcmVzZXJ2ZSB0aGUKCVRSRUVfT1ZFUkZMT1cgYml0LgoJKHJvdW5kX3VwKTogUHJvdmlkZSBhbiBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gd2hlbiByb3VkaW5nLXVwIGFuCglJTlRFR0VSX0NTVCB0byBhIHBvd2VyLW9mLXR3by4KCjIwMDctMDEtMjggIFJhbGYgV2lsZGVuaHVlcyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+CgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogQWRkIGNvbW1hIGZvciBjbGFyaXR5LgoJKiBkb2MvZXh0ZW5kLnRleGk6IEZpeCBzb21lIHR5cG9zLgoJKiBkb2MvcGFzc2VzLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvY3BwaW50ZXJuYWxzLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvYy10cmVlLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvdHJlZS1zc2EudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9pbnN0YWxsLnRleGk6IExpa2V3aXNlLgoKMjAwNy0wMS0yNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zcmEuYyAoc3JhX3dhbGtfZnVuY3Rpb24pOiBEb24ndCByZWx5IG9uIGFsaWFzZXMgYmVpbmcgYnVpbGQuCgkocGFzc19zcmEpOiBEbyBub3QgcmVxdWlyZSBhbGlhcyBpbmZvcm1hdGlvbi4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBTUkEKCjIwMDctMDEtMjcgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIHRyYWNlci5jIChyZXN0X29mX2hhbmRsZV90cmFjZXIpOiBXZSBhbHJlYWR5IGNsZWFuZWQKCXVwIHRoZSBDRkcgaW4gdHJhY2VyKCkgc28gZG9uJ3QgZG8gaXQgaGVyZSBhZ2Fpbi4KCSogY2ZnY2xlYW51cC5jIChyZXN0X29mX2hhbmRsZV9qdW1wMik6IERvbid0IHJlcGVhdAoJY2xlYW51cF9jZmcgaGVyZSwgZWl0aGVyLiAgQW5kIGRvbid0IGNhbGwgcmVudW1iZXJfaW5zbnMuCgoJKiBjZmdydGwuYyAocnRsX3ZlcmlmeV9mbG93X2luZm9fMSk6IERvbid0IHZlcmlmeSB0aGF0IEJCX0VORAoJYW5kIEJCX0hFQUQgYXJlIGluIHRoZSBpbnNuIHN0cmVhbSBoZXJlLiAgSW5zdGVhZCBtYWtlIHN1cmUKCXRoYXQgQkJfSU5TTiBpcyB2YWxpZCBvbiBhbGwgaW5zbnMuICBBbHNvLCBkbyBjaGVjayBoZXJlIHRoYXQKCXRoZXJlIGFyZSBubyBwZW5kaW5nIGJyYW5jaCBwcmVkaWN0aW9ucy4uLgoJKHJ0bF92ZXJpZnlfZmxvd19pbmZvKTogLi4uaW5zdGVhZCBvZiBkb2luZyBpdCBoZXJlLiAgQ2hlY2tzCglmb3IgQkJfRU5EIGFuZCBCQl9IRUFEIG1vdmVkIGZyb20gcnRsX3ZlcmlmeV9mbG93X2luZm9fMSB0bwoJaGVyZS4KCjIwMDctMDEtMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3N3YXBfYmluYXJ5X29wZXJhbmRzX3ApOiBOZXcgaGVscGVyCglmdW5jdGlvbiB0byBzaW1wbGlmeS9mYWN0b3JpemUgb3BlcmFuZCBvcmRlciBjYW5vbmljYWxpemF0aW9uLgoJKGl4ODZfZml4dXBfYmluYXJ5X29wZXJhbmRzKTogUmVvcmdhbml6ZSB1c2luZyB0aGUgYWJvdmUgZnVuY3Rpb24uCgkoaXg4Nl9iaW5hcnlfb3BlcmF0b3Jfb2spOiBMaWtld2lzZS4KCjIwMDctMDEtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZ2VuYXR0cnRhYi5jIChzdHJ1Y3QgYXR0cl92YWx1ZV9saXN0LCBpbnNuX2NvZGVfdmFsdWVzKTogTW92ZSB0bwoJZmlsZSBzY29wZSBmcm9tIG9wdGltaXplX2F0dHJzLgoJKHNpbXBsaWZ5X3Rlc3RfZXhwKTogSWYgaW5zbl9jb2RlX3ZhbHVlcyBpcyBub3QgTlVMTCwgdXNlIGl0IHRvIHNwZWVkCgl1cCBzZWFyY2guCgkob3B0aW1pemVfYXR0cnMpOiBDbGVhciBpbnNuX2NvZGVfdmFsdWVzIGFmdGVyIGZyZWVpbmcgaXQuCgoyMDA3LTAxLTI2ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1hZGRyZXNzLmMgKGNyZWF0ZV9tZW1fcmVmKTogUmVtb3ZlICIsIGJzaSIgZnJvbQoJYSBwYXJ0cy5iYXNlIGFzc2lnbm1lbnQuCgoyMDA3LTAxLTI2ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLWRhdGEtcmVmLmMgKGR1bXBfc3Vic2NyaXB0KTogVXNlIGR1bXBfY29uZmxpY3RfZnVuY3Rpb24uCgkoY29tcHV0ZV9zdWJzY3JpcHRfZGlzdGFuY2UsIGluaXRpYWxpemVfZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uLAoJZmluYWxpemVfZGRyX2RlcGVuZGVudCwgYW5hbHl6ZV96aXZfc3Vic2NyaXB0LAoJYW5hbHl6ZV9zaXZfc3Vic2NyaXB0X2NzdF9hZmZpbmUsCgljb21wdXRlX292ZXJsYXBfc3RlcHNfZm9yX2FmZmluZV91bml2YXIsCgljb21wdXRlX292ZXJsYXBfc3RlcHNfZm9yX2FmZmluZV8xXzIsIGFuYWx5emVfc3Vic2NyaXB0X2FmZmluZV9hZmZpbmUsCglhbmFseXplX3Npdl9zdWJzY3JpcHQsIGFuYWx5emVfbWl2X3N1YnNjcmlwdCwKCWFuYWx5emVfb3ZlcmxhcHBpbmdfaXRlcmF0aW9ucywgc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyXzEsCgljb21wdXRlX3NlbGZfZGVwZW5kZW5jZSwgZnJlZV9kZXBlbmRlbmNlX3JlbGF0aW9uKTogV29yawoJd2l0aCBhZmZpbmVfZm4gaW5zdGVhZCBvZiBjaHJlY3MuCgkoZHVtcF9hZmZpbmVfZnVuY3Rpb24sIGR1bXBfY29uZmxpY3RfZnVuY3Rpb24sIGFmZmluZV9mdW5jdGlvbl9lcXVhbF9wLAoJY29tbW9uX2FmZmluZV9mdW5jdGlvbiwgYWZmaW5lX2Z1bmN0aW9uX2Jhc2UsCglhZmZpbmVfZnVuY3Rpb25fY29uc3RhbnRfcCwgYWZmaW5lX2ZuX29wLCBhZmZpbmVfZm5fcGx1cywKCWFmZmluZV9mbl9taW51cywgYWZmaW5lX2ZuX2ZyZWUsIGNvbmZsaWN0X2ZuX25vdF9rbm93biwKCWNvbmZsaWN0X2ZuX25vX2RlcGVuZGVuY2UsIGZyZWVfY29uZmxpY3RfZnVuY3Rpb24sIGZyZWVfc3Vic2NyaXB0cywKCWNvbmZsaWN0X2ZuLCBhZmZpbmVfZm5fY3N0LCBhZmZpbmVfZm5fdW5pdmFyKTogTmV3IGZ1bmN0aW9ucy4KCShhbGxfY2hyZWNzX2VxdWFsX3ApOiBSZW1vdmVkLgoJKiB0cmVlLWRhdGEtcmVmLmggKGFmZmluZV9mbiwgY29uZmxpY3RfZnVuY3Rpb24pOiBOZXcgdHlwZXMuCgkoc3RydWN0IHN1YnNjcmlwdCk6IENoYW5nZSB0eXBlIG9mIGNvbmZsaWN0aW5nX2l0ZXJhdGlvbnNfaW5fYQoJYW5kIGNvbmZsaWN0aW5nX2l0ZXJhdGlvbnNfaW5fYi4KCjIwMDctMDEtMjYgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIG90aGVyLzMwMTgyCgkqIGNvbmZpZy9wYS9wYS5oIChUQVJHRVRfSFBVWF8xMSk6IE5ldy4KCSogY29uZmlnL3BhL3BhLWhwdXgxMS5oIChUQVJHRVRfSFBVWF8xMSk6IE5ldy4KCSogY29uZmlnL3BhL3BhLmMgKHBhX2luaXRfYnVpbHRpbnMpOiBVc2UgVEFSR0VUX0hQVVhfMTEuCgoyMDA3LTAxLTI2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCVJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHNvbHZlX2dyYXBoKTogSGFuZGxlIGNhc2UKCXdlIG1lcmdlZCB0aGUgdmFyaWFibGUgdG8gYW5vdGhlci4KCjIwMDctMDEtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl8xKTogVHJlYXQgY2NvcyBhbmQgY2Nvc2ggYXMgJ2V2ZW4nCglmdW5jdGlvbnMuCgoJKiBmb2xkLWNvbnN0LmMgKG5lZ2F0ZV9tYXRoZm5fcCk6IFRyZWF0IGNhc2luLCBjYXNpbmgsIGNhdGFuLAoJY2F0YW5oLCBjcHJvaiwgY3NpbiwgY3NpbmgsIGN0YW4gYW5kIGN0YW5oIGFzICdvZGQnIGZ1bmN0aW9ucy4KCjIwMDctMDEtMjUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMmMvbTMyYy5jIChtMzJjX2Nhbm5vdF9jaGFuZ2VfbW9kZV9jbGFzcyk6IFdlIGRvbid0CglhbGxvdyBjaGFuZ2VzIHRvIG1vZGVzIHdoaWNoIGRvbid0IGZpdCBpbiB0aG9zZSByZWdpc3RlcnMuCgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IENoZWNrIGZvciBpbnZhbGlkIHN1YnJlZ3MgYmVmb3JlCgljb21wdXRpbmcgdGhlaXIgbG9jYXRpb25zLCBub3QgYWZ0ZXIuCgoyMDA3LTAxLTI1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiAyNTEyNwoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChmaXJzdF9hbHRpdmVjX3JlZ190b19zYXZlKTogT24gRGFyd2luLAoJc2F2ZSBBbHRpdmVjIHJlZ2lzdGVycyBpbiBhbiBlaF9yZXR1cm4gZnVuY3Rpb24uCgkoY29tcHV0ZV92cnNhdmVfbWFzayk6IExpa2V3aXNlLgoJKHJzNjAwMF9zdGFja19pbmZvKTogQ29ycmVjdCBBSVgvRGFyd2luIHN0YWNrIGFsaWdubWVudCBjb21wdXRhdGlvbgoJZm9yIHNhdmluZyBBbHRpdmVjIHJlZ2lzdGVycy4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IERvbid0IGFsbG9jYXRlIHN0YWNrIHR3aWNlIGluCgllaF9yZXR1cm4gZnVuY3Rpb24uICBDb3JyZWN0IGV4cGVjdGVkIHZhbHVlIG9mIGFsdGl2ZWNfc2F2ZV9vZmZzZXQKCXdoZW4gdXNpbmcgc2F2ZV93b3JsZC4gIERlc2NyaWJlIHNhdmUgb2YgUjAgdG8gc3RhY2sgd2hlbiB1c2luZwoJc2F2ZV93b3JsZC4gIERlc2NyaWJlIHN0YWNrIHBvaW50ZXIgYWRqdXN0bWVudCB3aGVuIHVzaW5nCglzYXZlX3dvcmxkLiAgUmVtb3ZlIGR1cGxpY2F0ZWQgZWhfcmV0dXJuIHBhcmFtZXRlciByZWdpc3RlciBzYXZpbmcuCglVcGRhdGUgc3Bfb2Zmc2V0IHZhcmlhYmxlIGFmdGVyIHNhdmVfd29ybGQuCgkqIGNvbmZpZy9yczYwMDAvdC1kYXJ3aW4gKExJQjJGVU5DU19TVEFUSUNfRVhUUkEpOiBSZW1vdmUKCWRhcndpbi13b3JsZC5hc20uCgkoTElCMkZVTkNTX0VYVFJBKTogQWRkIGRhcndpbi13b3JsZC5hc20uCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogLW02NAoJaW1wbGllcyBBbHRpdmVjLgoKMjAwNy0wMS0yNSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcuZ2NjIChpYTY0Ki0qLWhwdXgqKTogTWFrZSBwb3NpeCB0aHJlYWRzIHRoZSBkZWZhdWx0LgoKMjAwNy0wMS0yNSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgb3RoZXIvMzAxODIKCSogY29uZmlnL3BhL3BhLmMgKHBhX2luaXRfYnVpbHRpbnMpOiBTZXQgYXNtIG5hbWVzIGZvciBmaW5pdGUgcm91dGluZXMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9pbml0X2J1aWx0aW5zKTogRGl0dG8uCgoyMDA3LTAxLTI1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1XY292ZXJhZ2UtbWlzbWF0Y2gpOiBEb2N1bWVudC4KCSogY29tbW9uLm9wdCAoLVdjb3ZlcmFnZS1taXNtYXRjaCk6IE5ldyB3YXJuaW5nIG9wdGlvbi4KCSogY292ZXJhZ2UuYyAoZ2V0X2NvdmVyYWdlX2NvdW50cyk6IElnbm9yZSBjb3ZlcmFnZSBtaXNtYXRjaAoJaWYgLVdjb3ZlcmFnZS1taXNtYXRjaCBpcyBnaXZlbi4KCjIwMDctMDEtMjUgIFJhenlhIExhZGVsc2t5ICA8cmF6eWFAaWwuaWJtLmNvbT4KCgkqIGlwYS1jcC5jIChpcGNwX2luc2VydF9zdGFnZSwgaXBjcF9kcml2ZXIpOiBTdXBwb3J0IGZvciBTU0EuCgkoaXBjcF9kcml2ZXIpOiBDaGFuZ2UgdG8gc3RhdGljIGRlZmluaXRpb24uCglBZGQgZHVtcGluZyBvZiB0aGUgaWZ1bmN0aW9ucy4KCShjb25zdGFudF92YWxfaW5zZXJ0KTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIuIFN1cHBvcnQgZm9yIFNTQS4KCShpcGNwX3Byb3BhZ2F0ZV9jb25zdCk6IFN1cHBvcnQgZm9yIFNTQS4KCShpcGNwX3Byb2ZpbGVfYmJfcHJpbnQpOiBQcmludCBvbmx5IGFuYWx5emVkIG5vZGVzLgoJKGlwY3BfcmVwbGFjZV9tYXBfY3JlYXRlKTogUmVtb3ZlIHN1cHBvcnQgZm9yIEZvcnRyYW4gY29uc3RhbnQKCWZvciBub3cuCgkqIGlwYS1wcm9wLmMgKGlwYV9tZXRob2RfbW9kaWZ5X3N0bXQsCglpcGFfY2FsbHNpdGVfY29tcHV0ZV9wYXJhbSk6IFN1cHBvcnQgZm9yIFNTQS4KCSogaXBhLXByb3AuaCAoaXBjcF9kcml2ZXIpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoSVNfVkFMSURfVFJFRV9NQVBfSU5ERVgpOiBBZGQgZGVmaW5lLgoKMjAwNy0wMS0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiB1bndpbmQtZHcyLmMgKGV4ZWN1dGVfc3RhY2tfb3ApOiBIYW5kbGUgRFdfT1Bfc3dhcC4KCjIwMDctMDEtMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCglQUiBtaWRkbGUtZW5kLzMwNDQ3CgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jYWJzKTogVXNlIE1QRlIgdG8gZXZhbHVhdGUgYQoJY29uc3RhbnQgYXJndW1lbnQgdG8gY2FicyBhbmQgZG8gaXQgd2l0aG91dCBjaGVja2luZyBmb3IKCS1mdW5zYWZlLW1hdGgtb3B0aW1pemF0aW9ucy4KCjIwMDctMDEtMjQgIERvdWdsYXMgR3JlZ29yICA8ZGdyZWdvckBvc2wuaXUuZWR1PgoKCSogYy1jb21tb24uaCAoUklEX0ZJUlNUX0NYWDBYKTogTmV3LgoJKFJJRF9MQVNUX0NYWDBYKTogTmV3LgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IC1XYysrMHgtY29tcGF0IGlzIHRyaWdnZXJlZAoJYnkgLVdhbGwuCgkqIGMub3B0IChXYysrMHgtY29tcGF0KTogTmV3LgoJKiBkb2MvaW52b2tlLnRleGkgKC1XYysrMHgtY29tcGF0KTogRG9jdW1lbnQuCgoyMDA3LTAxLTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fY2FyZyk6IE5ldy4KCShmb2xkX2J1aWx0aW5fMSk6IFVzZSBpdC4KCjIwMDctMDEtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX2RlY2lkZV9pbmxpbmluZyk6IEluaXRpYWxpemUgaW5pdGlhbF9pbnNucy4KCgkqIGlwYS1pbmxpbmUuYyAoaW5pdGlhbF9pbnNucywgbWF4X2luc25zKTogRGVsZXRlLgoJKGNvbXB1dGVfbWF4X2luc25zKTogTmV3IGZ1bmN0aW9uLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmdfb2Zfc21hbGxfZnVuY3Rpb24pOiBVc2UgaXQ7IHRha2UgbWluaW1hbAoJYW1vdW50IG9mIGluc25zIGFzIGJhc2UgZm9yIGNvZGUgZ3Jvd3RoLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBNYWtlIGluaXRpYWxfaW5zbnMgbG9jYWw7IGRvIG5vdCBjb21wdXRlCgltYXhfaW5zbnMuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX0lOTElORV9VTklUX0dST1dUSCk6IFNldCB0byA2MC4KCSogZG9jL2ludm9rZS50ZXhpIChpbmxpbmUtdW5pdC1ncm93dGgpOiBVcGRhdGUgZG9jcy4KCjIwMDctMDEtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oICh4ODZfY21weGNoZzE2Yik6IFJlbW92ZSBjb25zdC4KCShUQVJHRVRfQ01QWENIRzE2Qik6IERlZmluZSB0byB4ODZfY21weGNoZzE2Yi4KCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfY21weGNoZzE2Yik6IFJlbW92ZSBjb25zdC4KCShvdmVycmlkZV9vcHRpb25zKTogQWRkIFBUQV9DWDE2IGZsYWcuICBTZXQgeDg2X2NtcHhjaGcxNmIKCWZvciBDUFVzIHRoYXQgaGF2ZSBQVEFfQ1gxNiBzZXQuCgoJUFIgbWlkZGxlLWVuZC8yNzQxNgoJKiBnaW1wbGlmeS5jIChvbXBfY2hlY2tfcHJpdmF0ZSk6IE5ldyBmdW5jdGlvbi4KCShnaW1wbGlmeV9zY2FuX29tcF9jbGF1c2VzKTogVXNlIGl0IGZvcgoJZmlyc3Rwcml2YXRlL2xhc3Rwcml2YXRlL3JlZHVjdGlvbi4KCglQUiBtaWRkbGUtZW5kLzMwNDk0CgkqIGdpbXBsaWZ5LmMgKG9tcF9hZGRfdmFyaWFibGUpOiBEb24ndCBjYWxsIG9tcF9ub3RpY2VfdmFyaWFibGUKCW9uIFRZUEVfU0laRV9VTklUIGZvciBHT1ZEX0xPQ0FMIFZMQXMuCgoJUFIgbWlkZGxlLWVuZC8zMDQyMQoJKiBvbXAtbG93LmMgKGxvd2VyX29tcF9mb3JfbGFzdHByaXZhdGUpOiBBZGQgZGxpc3QgYXJndW1lbnQuCglJZiBsb3dlcl9sYXN0cHJpdmF0ZV9jbGF1c2VzIGVtaXRzIHNvbWUgc3RhdGVtZW50cywgYXBwZW5kIHRoZW0KCXRvIGRsaXN0IHJhdGhlciB0aGFuIGJvZHlfcCBhbmQgdG8gYm9keV9wIGFwcGVuZCBhbiBpbml0aWFsaXplci4KCShsb3dlcl9vbXBfZm9yKTogQWRqdXN0IGNhbGxlci4KCjIwMDctMDEtMjQgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogdGFyZ2V0LmggKGdsb2JhbGl6ZV9kZWNsX25hbWUpOiBOZXcuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0FTTV9HTE9CQUxJWkVfREVDTF9OQU1FKTogTmV3LgoJKiBvdXRwdXQuaCAoZGVmYXVsdF9nbG9iYWxpemVfZGVjbF9uYW1lKTogTmV3LgoJKiB2YXJhc20uYyAoYXNtX291dHB1dF9ic3MpOiBVc2UgZ2xvYmFsaXplX2RlY2xfbmFtZSBpbnN0ZWFkIG9mCglnbG9iYWxpemVfbGFiZWwuCgkoZ2xvYmFsaXplX2RlY2wpOiBEaXR0by4KCShkZWZhdWx0X2dsb2JhbGl6ZV9kZWNsX25hbWUpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9nbG9iYWxpemVfZGVjbF9uYW1lKTogTmV3LgoJKGlhNjRfaGFuZGxlX3ZlcnNpb25faWRfYXR0cmlidXRlKTogTmV3LgoJKFRBUkdFVF9BU01fR0xPQkFMSVpFX0RFQ0xfTkFNRSk6IE5ldy4KCShpYTY0X2FzbV9vdXRwdXRfZXh0ZXJuYWwpOiBVc2UgZ2xvYmFsaXplX2RlY2xfbmFtZSBpbnN0ZWFkCglvZiBnbG9iYWxpemVfbGFiZWwuCgkqIGRvYy9leHRlbmQudGV4aSAodmVyc2lvbl9pZCk6IE5ldyBwcmFnbWEuCgkqIGRvYy90bS50ZXhpIChBUkdFVF9BU01fR0xPQkFMSVpFX0RFQ0xfTkFNRSk6IE5ldyB0YXJnZXQgaG9vay4KCjIwMDctMDEtMjQgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiB1bndpbmQtZHcyLWZkZS5jIChnZXRfY2llX2VuY29kaW5nKTogUmVwbGFjZWQgX1Vud2luZF9Xb3JkIHdpdGgKCV91bGViMTI4X3QgYW5kIF9VbndpbmRfU1dvcmQgd2l0aCBfc2xlYjEyOF90LgoJKiB1bndpbmQtZHcyLmMgKGV4dHJhY3RfY2llX2luZm8sIGV4ZWN1dGVfc3RhY2tfb3AsCglleGVjdXRlX2NmYV9wcm9ncmFtLCB1d19mcmFtZV9zdGF0ZV9mb3IsIHV3X3VwZGF0ZV9jb250ZXh0XzEpOgoJTGlrZXdpc2UuCgkqIHVud2luZC1jLmMgKHBhcnNlX2xzZGFfaGVhZGVyLCBQRVJTT05BTElUWV9GVU5DVElPTik6IExpa2V3aXNlLgoJKiB1bndpbmQtcGUuaCAocmVhZF91bGViMTI4LCByZWFkX3NsZWIxMjgsCglyZWFkX2VuY29kZWRfdmFsdWVfd2l0aF9iYXNlKTogTGlrZXdpc2UuCgkqIHVud2luZC1nZW5lcmljLmg6IERlZmluZSBfc2xlYjEyOF90IGFuZCBfdWxlYjEyOF90IHR5cGVzLgoKMjAwNy0wMS0yNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fY2V4cGkpOiBHZXQgdGhlIGZuZGVjbAoJZm9yIGNleHAgaW4gdGhlIGNvcnJlY3Qgd2F5LgoKMjAwNy0wMS0yNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2EtZGNlLmMgKGVsaW1pbmF0ZV91bm5lY2VzYXJ5X3N0bXRzKTogUmVtb3ZlIGRlYWQgTEhTCglvZiBjYWxscy4KCjIwMDctMDEtMjQgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjLWNwcGJ1aWx0aW4uYyAoYnVpbHRpbl9kZWZpbmVfdHlwZV9zaXplb2YpOiBOZXcgZnVuY3Rpb24uCgkoY19jcHBfYnVpbHRpbnMpOiBOZXcgYnVpbHRpbiBtYWNyb3M6IF9fU0laRU9GX0lOVF9fLCBfX1NJWkVPRl9MT05HX18sCglfX1NJWkVPRl9MT05HX0xPTkdfXywgX19TSVpFT0ZfU0hPUlRfXywgX19TSVpFT0ZfUE9JTlRFUl9fLAoJX19TSVpFT0ZfRkxPQVRfXywgX19TSVpFT0ZfRE9VQkxFX18sIF9fU0laRU9GX0xPTkdfRE9VQkxFX18sCglfX1NJWkVPRl9TSVpFX1RfXywgX19TSVpFT0ZfV0NIQVJfVF9fLCBfX1NJWkVPRl9XSU5UX1RfXyBhbmQKCV9fU0laRU9GX1BUUkRJRkZfVF9fLgoJKiBkb2MvY3BwLnRleGk6IERvY3VtZW50YXRpb24gZm9yIHRoZSBuZXcgYnVpbHRpbiBtYWNyb3MgYWRkZWQuCgoyMDA3LTAxLTI0ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAodGFueGYyLCB0YW48bW9kZT4yLCBhdGFuPG1vZGU+MiwgbG9nPG1vZGU+MiwKCWxvZzEwPG1vZGU+MiwgbG9nMjxtb2RlPjIsIGV4cHhmMiwgZXhwMTB4ZjIsIGV4cDJ4ZjIpOiBVc2Ugb3AyCglpbnN0ZWFkIG9mIG9wZXJhbmRzWzJdIHRvIGF2b2lkIGFjY2VzcyBwYXN0IHRoZSBlbmQgb2YgYXJyYXkuCgoyMDA3LTAxLTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJlbG9hZDEuYyAoZW1pdF9yZWxvYWRfaW5zbnMpOiBQYXNzIHRoZSByZWxvYWQgcmVnaXN0ZXIKCWZvciBhIG5vbi1zcGlsbCBvdXRwdXQgcmVsb2FkIHRocm91Z2ggZm9yZ2V0X29sZF9yZWxvYWRzXzEuCgoyMDA3LTAxLTIzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAocnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMpOiBEZWZpbmUKCV9TT0ZUX0RPVUJMRSBpZiBkb3VibGVzIHVzZSBzb2Z0d2FyZSBmbG9hdGluZy1wb2ludC4KCSogY29uZmlnL3JzNjAwMC9saWJnY2MtcHBjLWdsaWJjLnZlcjogRXhwb3J0IGFkZGl0aW9uYWwgbG9uZwoJZG91YmxlIGZ1bmN0aW9ucyBpZiBfU09GVF9ET1VCTEUsIG5vdCBfU09GVF9GTE9BVC4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS5jOiBBbHNvIGNvbXBpbGUgZnVuY3Rpb25zIGZvcgoJaGFyZC1mbG9hdCB3aXRob3V0IEZQUnMuICBVc2UgZm1zdWIgZnVuY3Rpb24gZm9yIGFsbCBfX05PX0ZQUlNfXwoJY2FzZXMuICBDb21waWxlIGV4dHJhIGZ1bmN0aW9ucyBpZiBfU09GVF9ET1VCTEUsIG5vdCBfU09GVF9GTE9BVC4KCSogY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIChTVUJTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFJlbW92ZQoJY29tbWVudGVkLW91dCBsb25nIGRvdWJsZSBvdmVycmlkZS4KCShDUFBfTE9OR0RPVUJMRV9ERUZBVUxUX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9lYWJpc3BlLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IERvbid0IG92ZXJyaWRlCglsb25nIGRvdWJsZSBmb3Igbm9uLVNQRS4KCShyczYwMDBfaGFuZGxlX29wdGlvbik6IExpa2V3aXNlLgoJKGludmFsaWRfZTUwMF9zdWJyZWcpOiBEaXNhbGxvdyBtb3JlIHN1YnJlZ3MgaW52b2xkaW5nIERJbW9kZSwKCURGbW9kZSwgVEltb2RlIG9yIFRGbW9kZS4KCShyczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wKTogQ2hlY2sgVEZtb2RlIG9mZnNldHMgZm9yCglFNTAwIGRvdWJsZS4KCShsZWdpdGltYXRlX2xvX3N1bV9hZGRyZXNzX3ApOiBBbHNvIGNoZWNrIGZvciBURm1vZGUgZm9yIEU1MDAKCWRvdWJsZS4KCShyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogQWxzbyBoYW5kbGUgVEZtb2RlIGZvciBFNTAwIGRvdWJsZS4KCShyczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyk6IEFsc28gaGFuZGxlIFRGbW9kZSBmb3IgRTUwMAoJZG91YmxlLgoJKHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MpOiBBbHNvIGNoZWNrIGZvciBURm1vZGUgZm9yIEU1MDAKCWRvdWJsZS4KCShyczYwMDBfZW1pdF9tb3ZlKTogVXNlIERGbW9kZSBzdWJyZWdzIG9mIFRGbW9kZSBmb3IgRTUwMCBkb3VibGUuCgkoc3BlX2J1aWxkX3JlZ2lzdGVyX3BhcmFsbGVsKTogSGFuZGxlIFRGbW9kZSBhbmQgVENtb2RlLgoJKHJzNjAwMF9zcGVfZnVuY3Rpb25fYXJnKTogSGFuZGxlIFRGbW9kZSBhbmQgVENtb2RlIGZvciBFNTAwCglkb3VibGUuCgkoZnVuY3Rpb25fYXJnKTogSGFuZGxlIFRGbW9kZSBhbmQgVENtb2RlIGZvciBFNTAwIGRvdWJsZS4KCShyczYwMDBfaW5pdF9saWJmdW5jcyk6IEluaXRpYWxpemUgZXh0cmEgbGliZnVuY3MgZm9yIHNvZnQgZG91YmxlCglpbiBnZW5lcmFsLgoJKHByaW50X29wZXJhbmQpOiBIYW5kbGUgVEZtb2RlIGFuZCBUSW1vZGUgZm9yICV5LgoJKHJzNjAwMF9nZW5lcmF0ZV9jb21wYXJlKTogSGFuZGxlIFRGbW9kZSBjb21wYXJpc29ucyBmb3IgRTUwMAoJZG91YmxlLgoJKHNwZV9mdW5jX2hhc182NGJpdF9yZWdzX3ApOiBDaGVjayBmb3IgVEZtb2RlIGZvciBFNTAwIGRvdWJsZS4KCShyczYwMDBfZnVuY3Rpb25fdmFsdWUpOiBIYW5kbGUgVEZtb2RlIGFuZCBUQ21vZGUgZm9yIEU1MDAgZG91YmxlLgoJKHJzNjAwMF9saWJjYWxsX3ZhbHVlKTogSGFuZGxlIFRGbW9kZSBhbmQgVENtb2RlIGZvciBFNTAwIGRvdWJsZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogQ2hlY2sgZm9yCglURm1vZGUgZm9yIEU1MDAgZG91YmxlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoRlApOiBBbGxvdyBURiBmb3IgRTUwMCBkb3VibGUuCgkoZmxvYXRzaWRmMik6IEVuYWJsZSBmb3IgRTUwMCBkb3VibGUuCgkobW92dGZfc29mdGZsb2F0KTogVXNlIHJzNjAwMF9ub25pbW1lZGlhdGVfb3BlcmFuZC4KCShleHRlbmRkZnRmMik6IENoYW5nZSB0byBleHRlbmRkZnRmMl9mcHJzLgoJKGV4dGVuZGRmdGYyKTogQ2FsbCBnZW5fc3BlX2V4dGVuZGRmdGYyIG9yIGdlbl9leHRlbmRkZnRmMl9mcHJzCglkZXBlbmRpbmcgb24gVEFSR0VUX0U1MDBfRE9VQkxFLgoJKGV4dGVuZHNmdGYyKTogRW5hYmxlIGZvciBFNTAwIGRvdWJsZS4KCSh0cnVuY3RmZGYyKTogRW5hYmxlIGZvciBFNTAwIGRvdWJsZS4KCSh0cnVuY3Rmc2YyKTogQ2hhbmdlIHRvIHRydW5jdGZzZjJfZnBycy4KCSh0cnVuY3Rmc2YyKTogQ2FsbCBnZW5fc3BlX3RydW5jdGZzZjIgb3IgZ2VuX3RydW5jdGZzZjJfZnBycwoJZGVwZW5kaW5nIG9uIFRBUkdFVF9FNTAwX0RPVUJMRS4KCShmbG9hdHNpdGYyKTogRW5hYmxlIGZvciBFNTAwIGRvdWJsZS4KCShmaXhfdHJ1bmN0ZnNpMik6IENoYW5nZSB0byBmaXhfdHJ1bmN0ZnNpMl9mcHJzLgoJKGZpeF90cnVuY3Rmc2kyKTogQ2FsbCBnZW5fc3BlX2ZpeF90cnVuY3Rmc2kyIG9yCglnZW5fZml4X3RydW5jdGZzaTJfZnBycyBkZXBlbmRpbmcgb24gVEFSR0VUX0U1MDBfRE9VQkxFLgoJKG5lZ3RmMik6IENoYW5nZSB0byBuZWd0ZjJfaW50ZXJuYWwuCgkobmVndGYyKTogTmV3IGV4cGFuZGVyLgoJKGFic3RmMik6IEVuYWJsZSBmb3IgRTUwMCBkb3VibGUuICBDYWxsIGdlbl9zcGVfYWJzdGYyX3RzdCwKCWdlbl9zcGVfYWJzdGYyX2NtcCBvciBnZW5fYWJzdGYyX2ludGVybmFsIGRlcGVuZGluZyBvbgoJVEFSR0VUX0U1MDBfRE9VQkxFIGFuZCBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMuCgkobW92ZGlfaW50ZXJuYWwzMik6IFVzZSByczYwMDBfbm9uaW1tZWRpYXRlX29wZXJhbmQuCgkodW5uYW1lZCBzcGxpdHRlcik6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoQ01QVEZFUV9HUFIsIFRTVFRGRVFfR1BSLCBDTVBURkdUX0dQUiwKCVRTVFRGR1RfR1BSLCBDTVBURkxUX0dQUiwgVFNUVEZMVF9HUFIpOiBOZXcgdW5zcGVjcy4KCShTUEU2NFRGLCBESVRJKTogTmV3IG1vZGUgbWFjcm9zLgoJKGZyb2JfZGZfZGkpOiBDaGFuZ2UgdG8gZnJvYl88U1BFNjQ6bW9kZT5fPERJVEk6bW9kZT47IGFsbG93IG1vcmUKCW1vZGVzLgoJKGZyb2JfdGZfdGkpOiBOZXcuCgkoZnJvYl88bW9kZT5fZGlfMik6IE5ldy4KCShmcm9iX3RmX2RpXzhfMik6IE5ldy4KCShmcm9iX2RpX2RmKTogQ2hhbmdlIHRvIGZyb2JfZGlfPG1vZGU+OyBhbGxvdyBtb3JlIG1vZGVzLgoJKGZyb2JfdGlfdGYpOiBOZXcuCgkoZnJvYl9kaV9kZl8yKTogQ2hhbmdlIHRvIGZyb2JfPERJVEk6bW9kZT5fPFNQRTY0Om1vZGU+XzI7IGFsbG93Cgltb3JlIG1vZGVzLgoJKGZyb2JfdGlfPG1vZGU+XzhfMik6IE5ldy4KCShmcm9iX3RpX3RmXzIpOiBOZXcuCgkobW92X3NpPG1vZGU+X2U1MDBfc3VicmVnMCwgbW92X3NpPG1vZGU+X2U1MDBfc3VicmVnMF8yLAoJbW92X3NpPG1vZGU+X2U1MDBfc3VicmVnNCwgbW92X3NpPG1vZGU+X2U1MDBfc3VicmVnNF8yKTogQWxsb3cKCVRGbW9kZS4KCShtb3Zfc2l0Zl9lNTAwX3N1YnJlZzgsIG1vdl9zaXRmX2U1MDBfc3VicmVnOF8yLAoJbW92X3NpdGZfZTUwMF9zdWJyZWcxMiwgbW92X3NpdGZfZTUwMF9zdWJyZWcxMl8yKTogTmV3LgoJKHNwZV90cnVuY3RmZGYyX2ludGVybmFsMSwgc3BlX3RydW5jdGZzZjIsIHNwZV9leHRlbmRkZnRmMiwKCXNwZV9maXhfdHJ1bmN0ZnNpMiwgc3BlX2ZpeF90cnVuY3Rmc2kyX2ludGVybmFsLAoJc3BlX25lZ3RmMl9pbnRlcm5hbCwgc3BlX2Fic3RmMl9jbXAsIHNwZV9hYnN0ZjJfdHN0KTogTmV3LgoJKGNtcHRmZXFfZ3ByLCB0c3R0ZmVxX2dwciwgY21wdGZndF9ncHIsIHRzdHRmZ3RfZ3ByLCBjbXB0Zmx0X2dwciwKCXRzdHRmbHRfZ3ApOiBOZXcuCgoyMDA3LTAxLTIzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogUmVmb3JtYXQsIGFscGhhYmV0aXplLCBidXQgcHV0CglpbnNuLSoubyBmaXJzdC4KCShPQkpTLWFyY2hpdmUpOiBSZWZvcm1hdCwgYWxwaGFiZXRpemUuCgkoT0JKUyk6IENoYW5nZSBvdXRfb2JqZWN0X2ZpbGUgdG8gT0JKUy1tZC4KCjIwMDctMDEtMjMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBVc2UgUkVHX1AsIE1FTV9QLCBDT05TVF9JTlRfUCwgTEFCRUxfUCwKCUpVTVBfUCBhbmQgQ0FMTF9QIHByZWRpY2F0ZXMgd2hlcmUgYXBwbGljYWJsZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBEaXR0by4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L21teC5tZDogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQ6IERpdHRvLgoKMjAwNy0wMS0yMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaDogRml4IGNvbW1lbnQuCgoyMDA3LTAxLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogRG8gbm90IHJlcnVuCglwYXNzX2Vhcmx5X3dhcm5fdW5pbml0aWFsaXplZC4KCjIwMDctMDEtMjIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDAzOAoJKiB0cmVlLXNzYS1tYXRoLW9wdHMuYyAobWF5YmVfcmVjb3JkX3NpbmNvcyk6IE5ldyBzdGF0aWMgaGVscGVyCglmdW5jdGlvbi4KCShleGVjdXRlX2NzZV9zaW5jb3NfMSk6IExpa2V3aXNlLgoJKGV4ZWN1dGVfY3NlX3NpbmNvcyk6IExpa2V3aXNlLgoJKGdhdGVfY3NlX3NpbmNvcyk6IExpa2V3aXNlLgoJKHBhc3NfY3NlX3NpbmNvcyk6IE5ldyBwYXNzIENTRWluZyBzaW4oKSBhbmQgY29zKCkgY2FsbHMgdXNpbmcKCXRoZSBjZXhwaSgpIGNhbm9uaWNhbGl6YXRpb24gb2Ygc2luY29zKCkuCgkqIHRyZWUtcGFzcy5oIChwYXNzX2NzZV9zaW5jb3MpOiBEZWNsYXJlLgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogTmV3IHBhc3MgcGFzX2NzZV9zaW5jb3MuCgoyMDA3LTAxLTIxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjkzMjkKCSogY29tYmluZS5jIChyZXBsYWNlZF9yaHNfaW5zbik6IFJlbmFtZSB0byBpMm1vZC4KCShyZXBsYWNlZF9yaHNfdmFsdWUpOiBSZW5hbWUgdG8gaTJtb2RfbmV3X3Jocy4KCShpMm1vZF9vbGRfcmhzKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShjb21iaW5lX2luc3RydWN0aW9ucyk6IEFkanVzdCBmb3IgYWJvdmUgY2hhbmdlLiAgU2F2ZSBhIGNvcHkgb2YKCXRoZSBvbGQgUkhTIGludG8gaTJtb2Rfb2xkX3JocyB3aGVuIHRoZSBjb250ZW50cyBvZiBhIFJFR19FUVVBTAoJbm90ZSBhcmUgc3Vic3RpdHV0ZWQgaW4gdGhlIHNlY29uZCBpbnN0cnVjdGlvbi4KCShkaXN0cmlidXRlX25vdGVzKSA8UkVHX0RFQUQ+OiBBZGp1c3QgZm9yIGFib3ZlIGNoYW5nZS4gIERvIG5vdAoJZGl0Y2ggdGhlIG5vdGUgaWYgaXQgcGVydGFpbnMgdG8gdGhlIHNlY29uZCBlbGltaW5hdGVkIHJlZ2lzdGVyCglhbmQgdGhpcyByZWdpc3RlciBpcyBtZW50aW9uZWQgaW4gaTJtb2Rfb2xkX3Jocy4KCglSZXZlcnQ6CgkyMDA2LTA5LTEyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKSA8UkVHX0RFQUQ+OiBEbyBub3QgY29uc2lkZXIgU0VUcyBwYXN0Cgl0aGUgaW5zbiB0byB3aGljaCB0aGUgbm90ZSB3YXMgb3JpZ2luYWxseSBhdHRhY2hlZC4KCjIwMDctMDEtMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGlwYS1pbmxpbmUuYyAoaW5saW5pbmdfbW9kZSk6IENvbW1lbnQsIG1vdmUgdXAuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19pbmNyZW1lbnRhbGx5KTogRG8gbm90IHBlcmZvcm0gaW5saW5pbmcKCWl0c2VsZjsgZml4IGhhbmRsaW5nIG9mIGZsYXR0ZW5pbmcgb2Ygc2VsZiByZWN1cnNpdmUgZnVuY3Rpb25zLgoJKGNncmFwaF9maW5kX2N5Y2xlcyk6IFJlbW92ZS4KCShjZ3JhcGhfZmxhdHRlbl9ub2RlKTogUmVtb3ZlLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBVc2UgaW5jcmVtZW50YWwgaW5saW5lciB0byBoYW5kbGUgZmxhdHRlbmluZy4KCSh0cnlfaW5saW5lKTogTmV3IGZ1bmN0aW9uLgoJKGNncmFwaF9lYXJseV9pbmxpbmluZyk6IFVwZGF0ZSBjYWxsIG9mCgljZ3JhcGhfZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkuICBBcHBseSBpbmxpbmluZyBoZXJlLgoJKGFwcGx5X2lubGluZSk6IFVwZGF0ZSBjYWxsIG9mIGNncmFwaF9kZWNpZGVfaW5saW5pbmdfaW5jcmVtZW50YWxseS4KCjIwMDctMDEtMjEgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJUFIgYm9vdHN0cmFwLzMwNTExCgkqIHRyZWUtdnJwLmMgKGNoZWNrX2FycmF5X2JvdW5kcyk6IGRvIG5vdCB3YXJuCglhYm91dCBBRERSX0VYUFIncyBvZiBBUlJBWV9SRUYncyB3aGljaCBhcmUgaW1tZWRpYXRlbHkKCXVzZWQgaW4gYmluYXJ5IGV4cHJlc3Npb25zLgoKMjAwNy0wMS0yMSAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmggKHN0cnVjdCBfc3RtdF92ZWNfaW5mbyk6IEFkZCBuZXcgZmllbGQKCXJlYWRfd3JpdGVfZGVwIGFuZCBtYWNyb3MgZm9yIGl0cyBhY2Nlc3MuCgkqIHRyZWUtdmVjdG9yaXplci5jIChuZXdfc3RtdF92ZWNfaW5mbyk6IEluaXRpYWxpemUgdGhlIG5ldyBmaWVsZC4KCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9hbmFseXplX2RhdGFfcmVmX2RlcGVuZGVuY2UpOiBSZW1vdmUKCWFyZ3VtZW50LCBjYWxsIHZlY3RfY2hlY2tfaW50ZXJsZWF2aW5nIGZvciBldmVyeSBpbmRlcGVuZGVudCBwYWlyIG9mCglkYXRhLXJlZnMuIE1hcmsgbG9hZHMgdGhhdCBhY2Nlc3MgdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uIGFzIGEgc3RvcmUKCWluIHRoZSBsb29wLgoJKHZlY3RfY2hlY2tfZGVwZW5kZW5jZXMpOiBSZW1vdmUuCgkodmVjdF9hbmFseXplX2RhdGFfcmVmX2RlcGVuZGVuY2VzKTogUmVtb3ZlICB2ZWN0X2NoZWNrX2RlcGVuZGVuY2VzCgljYWxsLCBmaXggdGhlIGNhbGwgdG8gdmVjdF9hbmFseXplX2RhdGFfcmVmX2RlcGVuZGVuY2UuCgkodmVjdF9hbmFseXplX2RhdGFfcmVmX2FjY2Vzcyk6IEZvciBzdGF0ZW1lbnRzIHRoYXQgYWNjZXNzIHRoZSBzYW1lCglkYXRhLXJlZiwgY2hlY2sgdGhhdCB0aGV5IGFyZSBub3Qgc3RvcmVzOyBmb3IgbG9hZHMsIGNoZWNrIHRoYXQgdGhlcmUKCWlzIG5vIHN0b3JlIHRoYXQgYWNjZXNzIHRoZSBzYW1lIGxvY2F0aW9uLgoKMjAwNy0wMS0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1mZHVtcC1ydGwtY29tYmluZSk6IEZpeCB1bmRlci9vdmVyZnVsbCBoYm94LgoJKC1mZHVtcC1ydGwtc3RhY2spOiBMaWtld2lzZS4KCSgtZm5vLXNpZ25lZC16ZXJvcyk6IFVzZSBAbWludXN7fSBmb3IgYSBtaW51cyBzaWduLiAgQ29ycmVjdCB0eXBvLgoJKC1tY2hlY2stemVyby1kaXZpc2lvbiwgLW1jcHUpOiBGaXggdW5kZXIvb3ZlcmZ1bGwgaGJveC4KCSgtbXB0LWZpeGVkKTogVXNlIEBtaW51c3t9IGZvciBtaW51cyBzaWduLgoJKFVzaW5nIFByZWNvbXBpbGVkIEhlYWRlcnMpOiBGaXggdW5kZXIvb3ZlcmZ1bGwgaGJveC4KCjIwMDctMDEtMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3Qgc3RtdF9hbm5fZCk6IE1vdmUgcmVmZXJlbmNlc19tZW1vcnkgdG8gcHJvcGVyCglwbGFjZSB3aXRoaW4gYW5ub3RhdGlvbi4KCjIwMDctMDEtMjAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChvdXRwdXRfbW92ZV9kb3VibGUpOiBDaGFuZ2UgYXJyYXkgc2l6ZSBvZiB4b3BlcmFuZHMgdG8gNC4KCjIwMDctMDEtMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtdGFpbGNhbGwuYyAoYWRqdXN0X3JldHVybl92YWx1ZSk6IERvIG5vdCB1c2UgUkVTVUxUX0RFQ0wKCWFzIHRlbXBvcmFyeS4KCjIwMDctMDEtMTkgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBleHBtZWQuYyAoZXhwYW5kX2Rpdm1vZCkgW1RSVU5DX01PRF9FWFBSLCBUUlVOQ19ESVZfRVhQUl06IENhc3QKCWNvbnN0YW50IHRvIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgYmVmb3JlIG5lZ2F0aW5nLgoKMjAwNy0wMS0xOSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmggKHN0cnVjdCB2dXNlX3ZlY19kKTogQ2hhbmdlIG51bV92dXNlIGZpZWxkCgl0byB1bnNpZ25lZC4KCShWVVNFX1ZFQ1RfRUxFTUVOVCkgW0VOQUJMRV9DSEVDS0lOR106IFVzZSB1bnNpZ25lZCBjb21wYXJpc29uLgoJKFZVU0VfRUxFTUVOVF9QVFIpIFtFTkFCTEVfQ0hFQ0tJTkddOiBMaWtld2lzZS4KCShTRVRfVlVTRV9WRUNUX0VMRU1FTlQpIFtFTkFCTEVfQ0hFQ0tJTkddOiBMaWtld2lzZS4KCShTRVRfVlVTRV9FTEVNRU5UX1ZBUikgW0VOQUJMRV9DSEVDS0lOR106IExpa2V3aXNlLgoJKFNFVF9WVVNFX0VMRU1FTlRfUFRSKSBbRU5BQkxFX0NIRUNLSU5HXTogTGlrZXdpc2UuCgkocmVhbGxvY192ZGVmLCByZWFsbG9jX3Z1c2UpOiBDaGFuZ2Ugc2Vjb25kIHBhcmFtZXRlciB0bwoJdW5zaWduZWQuCgkoc3NhX29wZXJhbmRfaXRlcmF0b3JfZCk6IENoYW5nZSB2dXNlX2luZGV4IGFuZCBtYXl1c2VfaW5kZXgKCWZpZWxkcyB0byB1bnNpZ25lZC4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAocmVhbGxvY192b3ApOiBDaGFuZ2UgbnVtX2VsZW0gcGFyYW1ldGVyIHRvCgl1bnNpZ25lZC4gQ2hhbmdlIHggYW5kIGxpbSBsb2NhbHMgdG8gdW5zaWduZWQuCgkocmVhbGxvY192ZGVmLCByZWFsbG9jX3Z1c2UpOiBDaGFuZ2UgbnVtX2VsZW0gcGFyYW1ldGVyIHRvCgl1bnNpZ25lZC4KCShmaW5hbGl6ZV9zc2FfdnVzZV9vcHMpOiBDaGFuZ2Ugb2xkX2kgbG9jYWwgdG8gdW5zaWduZWQuCgkoY29weV92aXJ0dWFsX29wZXJhbmRzKTogQ2hhbmdlIGkgYW5kIG4gbG9jYWxzIHRvIHVuc2lnbmVkLgoKMjAwNy0wMS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMjkzMzUKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluXzEpOiBIYW5kbGUgYnVpbHRpbiBmZGltLgoKMjAwNy0wMS0yMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2EuYyAoaW5pdF90cmVlX3NzYSk6IERvIG5vdCBjYWxsIGluaXRfYWxpYXNfaGVhcHZhcnMuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGNvbXB1dGVfcG9pbnRzX3RvX3NldHMpOiBEbyBjYWxsCglpbml0X2FsaWFzX2hlYXB2YXJzLgoJKGluaXRfYWxpYXNfaGVhcHZhcnMpOiBJbml0aWFsaXplIG9ubHkgd2hlbiBub3QgYWxyZWFkeSBpbml0aWFsaXplZC4KCShkZWxldGVfYWxpYXNfaGVhcHZhcnMpOiBTZXQgaGVhcHZhcl9mb3Jfc3RtdCB0byBOVUxMLgoKMjAwNy0wMS0xOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb21tb24ub3B0IChmc2lnbmVkLXplcm9zKTogTmV3IGNvbW1hbmQgbGluZSBvcHRpb24uCgkqIGZsYWdzLmggKEhPTk9SX1NJR05FRF9aRVJPUyk6IENvbnRyb2wgdmlhIGZsYWdfc2lnbmVkX3plcm9zIGluc3RlYWQKCW9mIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucy4KCSogb3B0cy5jIChzZXRfZmFzdF9tYXRoX2ZsYWdzKTogVGhlIC1mZmFzdC1tYXRoIGNvbW1hbmQgbGluZSBvcHRpb24KCWltcGxpZXMgLWZuby1zaWduZWQtemVyb3MuCgkoZmFzdF9tYXRoX2ZsYWdzX3NldF9wKTogTGlrZXdpc2UuCgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyAtZm5vLXNpZ25lZC16ZXJvcyBvcHRpb24sIGFuZCB1cGRhdGUKCXRoZSBkb2N1bWVudGF0aW9uIG9mIC1mZmFzdC1tYXRoIGFwcHJvcHJpYXRlbHkuICBXcmFwIGxvbmcgbGluZXMuCgoyMDA3LTAxLTE5ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIHN5c3RlbS5oIChBU01fTUFLRV9MQUJFTF9MSU5LT05DRSk6IFBvaXNvbi4KCSogdmFyYXNtLmMgKGdsb2JhbGl6ZV9kZWNsKTogUmVtb3ZlIEFTTV9NQUtFX0xBQkVMX0xJTktPTkNFIGlmZGVmLgoKMjAwNy0wMS0xOSAgVG9tYXMgQmlseSAgPHRiaWx5QHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IFVwZGF0aW5nIG9mIHBpZAoJKiB0cmVlLXByb2ZpbGUuYzoKCSh0cmVlX2luaXRfaWNfbWFrZV9nbG9iYWxfdmFycyk6IE5ldyBmdW5jdGlvbgoJKHRyZWVfaW5pdF9lZGdlX3Byb2ZpbGVyKTogY2FsbCBvZiB0cmVlX2luaXRfaWNfbWFrZV9nbG9iYWxfdmFycwoJKHRyZWVfZ2VuX2ljX3Byb2ZpbGVyKTogTmV3IGZ1bmN0aW9uCgkodHJlZV9nZW5faWNfZnVuY19wcm9maWxlcik6IE5ldyBmdW5jdGlvbgoJKHRyZWVfcHJvZmlsaW5nKTogQWRkZWQgY2FsbGluZyBvZiB0cmVlX2dlbl9pY19mdW5jX3Byb2ZpbGVyCgkodHJlZV9wcm9maWxlX2hvb2tzKTogQWRkZWQgaG9vayBmb3IgaW5kaXJlYy92aXJ0dWFsIGNhbGxzCgkqIHZhbHVlLXByb2YuYyAodHJlZV9maW5kX3ZhbHVlc190b19wcm9maWxlKTogTmV3IGNhc2UgZm9yCglpbmRpcmVjdCBjYWxscwoJKHRyZWVfdmFsdWVzX3RvX3Byb2ZpbGUpOiBDYWxsIGZvciBkZXRlcm1pbmluZyBpbmRpcmVjdC92aXJ0dWFsCgljb3VudGVycwoJKHRyZWVfaW5kaXJlY3RfY2FsbF90b19wcm9maWxlKTogTmV3IGZ1bmN0aW9uCgkodHJlZV9pY190cmFuc2Zvcm0pOiBOZXcgZnVuY3Rpb24KCSh0cmVlX2ljKTogTmV3IGZ1bmN0aW9uCgkoZmluZF9mdW5jX2J5X3BpZCk6IE5ldyBmdW5jdGlvbgoJKGluaXRfcGlkX21hcCk6IE5ldyBmdW5jdGlvbgoJKHRyZWVfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMpOiBBZGRlZCBjaGVjayBmb3IKCWluZGlyZWN0L3ZpcnR1YWwgY2FsbCB0cmFuc2Zvcm1hdGlvbgoJKiB2YWx1ZS1wcm9mLmggKGVudW0gaGlzdF90eXBlKTogTmV3IGNvdW50ZXIgdHlwZSBmb3IKCWluZGlyZWN0L3ZpcnR1YWwgY2FsbHMKCShwcm9maWxlX2hvb2tzKTogQWRkZWQgbmV3IGhvb2sgZm9yIHByb2ZpbGluZyBpbmRpcmVjdC92aXJ0dWFsCgljYWxscwoJKiBwcm9maWxlLmMgKGluc3RydW1lbnRfdmFsdWVzKTogTmV3IGNhc2UgZm9yIGluZGlyZWN0L3ZpcnR1YWwKCWNhbGwgYWRkZWQKCSogZ2Nvdi1pby5oIChHQ09WX0xBU1RfVkFMVUVfQ09VTlRFUik6IENoYW5nZWQgdG8gNgoJKEdDT1ZfQ09VTlRFUl9WX0lORElSKTogTmV3IGNvdW50ZXIgdHlwZQoJKEdDT1ZfQ09VTlRFUl9OQU1FUyk6IE5ldyBuYW1lIG9mIGNvdW50ZXIgImluZGlyZWN0IiBhZGRlZAoJKEdDT1ZfTUVSR0VfRlVOQ1RJT05TKTogTmV3IG1lcmdlIGZ1bmN0aW9uIGZvciBpbmRpcmVjdC92aXJ0dWFsCgljYWxsIGFkZGVkCgkqIGNncmFwaC5jOiBEZWZpbml0aW9uIG9mIGNncmFwaF9tYXhfcGlkCgkoY2dyYXBoX2NyZWF0ZV9ub2RlKTogRGVmYXVsdCBpbml0IG9mIHBpZCBhdHRyaWJ1dGUKCSogY2dyYXBoLmg6IERlY2xhcmF0aW9uIG9mIGNncmFwaF9tYXhfcGlkCgkoc3RydWN0IGNncmFwaF9ub2RlKTogQWRkZWQgcGlkIGF0dHJpYnV0ZQoJKiBsaWJnY292LmMgKF9fZ2Nvdl9pbmRpcmVjdF9jYWxsX3Byb2ZpbGVyKTogTmV3IGZ1bmN0aW9uCgkoX19nY292X29uZV92YWx1ZV9wcm9maWxlcl9ib2R5KTogTmV3IGZ1bmN0aW9uCgkoX19nY292X29uZV92YWx1ZV9wcm9maWxlcik6IEJvZHkgd2FzIG1vdmVkIHRvCglfX2djb3Zfb25lX3ZhbHVlX3Byb2ZpbGVyX2JvZHkgYW5kIGNhbGxzIGl0CgoyMDA3LTAxLTE5ICBCYXNpbGUgU3Rhcnlua2V2aXRjaCAgPGJhc2lsZUBzdGFyeW5rZXZpdGNoLm5ldD4KCgkqIGRvYy9ndHkudGV4aSAoT3B0aW9ucyk6IERvY3VtZW50IHRoZSBtYXJrX2hvb2sgb3B0aW9uIHRvIEdUWS4KCSogZ2VuZ3R5cGUuYyAod3JpdGVfdHlwZXNfZGF0YSwgd3JpdGVfZnVuY19mb3Jfc3RydWN0dXJlLAoJd3JpdGVfdHlwZXMsIGdnY193dGQsIHBjaF93dGQpOiBBZGQgc2tpcF9ob29rcyB0bwoJd3JpdGVfdHlwZXNfZGF0YSwgZ2djX3d0ZCwgcGNoX3d0ZCBmb3IgcHJvY2Vzc2luZyBtYXJrX2hvb2suCgkod2Fsa190eXBlLCB3cml0ZV9mdW5jX2Zvcl9zdHJ1Y3R1cmUpOiBHZW5lcmF0ZSB0aGUgbWFya19ob29rIGlmCgluZWVkZWQuCgoyMDA3LTAxLTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpcGEtaW5saW5lLmMgKGNncmFwaF9kZWNpZGVfaW5saW5pbmdfaW5jcmVtZW50YWxseSk6IEluc3RlYWQgb2YKCSdlYXJseScgYXJndW1lbnQgdGFrZSBpbmxpbmluZyBtb2RlIGFyZ3VtZW50IHNwZWNpZnlpbmcgd2hldGhlciB0bwoJaW5saW5lIGZvciBzaXplL3NwZWVlZCBvciBhbGwgZnVuY3Rpb25zOyBhZGQgc3VwcG9ydCBmb3IgZmxhdHRlbmluZzsKCWltcHJvdmUgZHVtcHRpbmcuCgkoY2dyYXBoX2Vhcmx5X2lubGluaW5nKTogVXBkYXRlIGNhbGwgb2YgZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkuCgoyMDA3LTAxLTE5ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBjKysvMTc5NDcKCSogdG9wbGV2LmMgKHdhcm5fZGVwcmVjYXRlZF91c2UpOiBVc2UgJXFEIGluc3RlYWQgb2YgJXFzIHRvIHByaW50Cgl0aGUgbmFtZSBvZiB0aGUgZGVjbGFyZWQgaWRlbnRpZmllci4KCjIwMDctMDEtMTkgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJKiBjb25maWcvaTM4Ni5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IFN0b3JlCglyZXN1bHQgb2YgUElDX09GRlNFVF9UQUJMRV9SRUdOVU0gaW4gdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGF2b2lkCglkdXBsaWNhdGUgZXZhbHVhdGlvbi4KCjIwMDctMDEtMTkgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChhY29zPG1vZGU+Mik6IFJlbmFtZSBmcm9tIGFjb3NzZjIgYW5kIGFjb3NkZjIuCglNYWNyb2l6ZSBleHBhbmRlciB1c2luZyBYODdNT0RFRjEyIG1vZGUgbWFjcm8uICBFeHRlbmQgb3BlcmFuZCAxCgl0byBYRk1vZGUsIHVzZSBhY29zeGYyIGFuZCB0cnVuY2F0ZSByZXN1bHQgdG8gcmVxdWVzdGVkIG1vZGUuCglVc2UgU1NFX0ZMT0FUX01PREVfUCB0byBkaXNhYmxlIHBhdHRlcm5zIGZvciBTU0UgbWF0aC4KCShhc2luPG1vZGU+Mik6IFNpbWlsYXJseSwgd2l0aCBhc2luIGV4cGFuZGVycy4KCSgqZnNjYWxleGY0X2kzODcpOiBSZW5hbWUgZnJvbSAqZnNjYWxleGY0LgoJKGV4cE5jb3JleGYzKTogTmV3IGV4cGFuZGVyLgoJKGV4cHhmMiwgZXhwMTB4ZjIsIGV4cDJ4ZjIpOiBVc2UgZXhwTmNvcmV4ZjMgZXhwYW5kZXIuCgkoZXhwPG1vZGU+Mik6IFJlbmFtZSBmcm9tIGV4cHNmMiBhbmQgZXhwZGYyLiBNYWNyb2l6ZSBleHBhbmRlciB1c2luZwoJWDg3TU9ERUYxMiBtb2RlIG1hY3JvLiAgRXh0ZW5kIG9wZXJhbmQgMSB0byBYRk1vZGUsIHVzZSBleHB4ZjIgYW5kCgl0cnVuY2F0ZSByZXN1bHQgdG8gcmVxdWVzdGVkIG1vZGUuIFVzZSBTU0VfRkxPQVRfTU9ERV9QIHRvIGRpc2FibGUKCXBhdHRlcm5zIGZvciBTU0UgbWF0aC4KCShleHAxMDxtb2RlPjIpOiBTaW1pbGFybHksIHdpdGggZXhwMTAgZXhwYW5kZXJzLgoJKGV4cDI8bW9kZT4yKTogU2ltaWxhcmx5LCB3aXRoIGV4cDIgZXhwYW5kZXJzLgoJKGV4cG0xPG1vZGU+Mik6IFNpbWlsYXJseSwgd2l0aCBleHBtMSBleHBhbmRlcnMuCgkobGRleHA8bW9kZT4zKTogU2ltaWxhcmx5LCB3aXRoIGxkZXhwIGV4cGFuZGVycy4KCShsb2c8bW9kZT4yLCBsb2cxMDxtb2RlPjIsIGxvZzI8bW9kZT4yLCBsb2cxcDxtb2RlPjIsIGxvZ2I8bW9kZT4yKToKCVVzZSBnZW5fdHJ1bmN4Zjxtb2RlPjJfaTM4N19ub29wIHRvIHRydW5jYXRlIHJlc3VsdC4KCjIwMDctMDEtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChQUkVGRVJSRURfU1RBQ0tfQk9VTkRBUlkpOiBEZWZpbmUgdG8gMzIKCWZvciBDb2xkRmlyZSB0YXJnZXRzLgoKMjAwNy0wMS0xOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoTTY4S19TVEFUSUNfQ0hBSU5fUkVHX05BTUUpOiBOZXcgbWFjcm8uCgkoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogVXNlIFNUQVRJQ19DSEFJTl9SRUdOVU0uCgkoX190cmFuc2Zlcl9mcm9tX3RyYW1wb2xpbmUpOiBVc2UgTTY4S19TVEFUSUNfQ0hBSU5fUkVHX05BTUUuCgkqIGNvbmZpZy9tNjhrL202OGtlbGYuaCAoU1RBVElDX0NIQUlOX1JFR05VTSk6IE92ZXJyaWRlLgoJKE02OEtfU1RBVElDX0NIQUlOX1JFR19OQU1FKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaCAoTTY4S19TVEFUSUNfQ0hBSU5fUkVHX05BTUUpOiBMaWtld2lzZS4KCjIwMDctMDEtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5tZCAoYWRkZGlfZGlsc2hyMzIpOiBSZW5hbWUgdG8uLi4KCSgqYWRkZGlfZGlsc2hyMzIpOiAuLi50aGlzLiAgRml4IGZvcm1hdHRpbmcuICBSZW1vdmUgY29tbWVudGVkLW91dAoJbm9uLWNhbm9uaWNhbCBwYXR0ZXJuLiAgUmVzdHJpY3QgdG8gIVRBUkdFVF9DT0xERklSRS4KCSgqYWRkZGlfZGlsc2hyMzJfY2YpOiBOZXcgcGF0dGVybi4KCShhZGRkaTMsIHN1YmRpMyk6IFJlbW92ZSBmaXJzdCBhbHRlcm5hdGl2ZXMuCgoyMDA3LTAxLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobm90aWNlX3VwZGF0ZV9jYyk6IElmIGFuIFNGbW9kZSBtb3ZlIGlzCglpbXBsZW1lbnRlZCB1c2luZyBtb3ZlLmwsIGRvIG5vdCB1c2UgaXRzIGNjIHJlc3VsdCBmb3IgZmxvYXRpbmctcG9pbnQKCWNvbXBhcmlzb25zLgoKMjAwNy0wMS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEVYVFJBX0NPTlNUUkFJTlQpOiBTdG9wIHRoZSAnVCcgY29uc3RyYWludAoJZnJvbSBhY2NlcHRpbmcgJ3MnIGNvbnN0cmFpbnRzIGlmIGZsYWdfcGljLgoKMjAwNy0wMS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChib3JkZXJlZCwgYnVub3JkZXJlZCwgYnVuZXEsIGJ1bmdlLCBidW5ndCkKCShidW5sZSwgYnVubHQsIGJsdGd0LCBib3JkZXJlZF9yZXYsIGJ1bm9yZGVyZWRfcmV2LCBidW5lcV9yZXYpCgkoYnVuZ2VfcmV2LCBidW5ndF9yZXYsIGJ1bmxlX3JldiwgYnVubHRfcmV2LCBibHRndF9yZXYpOiBDaGFuZ2UKCWNvbmRpdGlvbiBmcm9tIFRBUkdFVF82ODg4MSB0byBUQVJHRVRfSEFSRF9GTE9BVC4KCjIwMDctMDEtMTkgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxvbmdsb25nLmggKGNvdW50X2xlYWRpbmdfemVyb3MsIENPVU5UX0xFQURJTkdfWkVST1NfMCk6IEFkZAoJQ29sZEZpcmUgYWx0ZXJuYXRpdmVzLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKENMWl9ERUZJTkVEX1ZBTFVFX0FUX1pFUk8pOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKGNsenNpMik6IERlZmluZSBmb3IgQ29sZEZpcmUKCWFyY2hpdGVjdHVyZXMgdGhhdCBzdXBwb3J0IGZmMSBpbnN0cnVjdGlvbi4KCjIwMDctMDEtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoJICAgIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChDT05TVF9PS19GT1JfTEVUVEVSX1ApOiBBZGQgYW4gJ1InIGNhc2UuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKCptb3ZzaV9jZnY0KTogRm9sZCBpbnRvLi4uCgkoKm1vdnNpX2NmKTogLi4uaGVyZS4gIFJlbW92ZSB1bm5lY2Vzc2FyeSAnUicgZnJvbSAnUmcnLgoJQWRkIGNvbW1lbnRhcnkuCgoyMDA3LTAxLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmggKHZhbGlkX21vdjNxX2NvbnN0KTogVGFrZSBhIEhPU1RfV0lERV9JTlQKCWFuZCByZXR1cm4gYSBib29sLgoJKG91dHB1dF9tb3ZlX2NvbnN0X2ludG9fZGF0YV9yZWcsIG91dHB1dF9tb3ZlX3NpbW9kZV9jb25zdCk6IERlbGV0ZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChjb25zdF9tZXRob2QsIGNvbnN0X2ludF9jb3N0KTogVGFrZSBhCglIT1NUX1dJREVfSU5UIGluc3RlYWQgb2YgYW4gcnR4LgoJKG02OGtfcnR4X2Nvc3RzKTogVXBkYXRlIGNhbGwgYWNjb3JkaW5nbHkuCgkob3V0cHV0X21vdmVfY29uc3RfaW50b19kYXRhX3JlZyk6IExpa2V3aXNlLiAgRml4IGZvcm1hdHRpbmcuCgkodmFsaWRfbW92M3FfY29uc3QpOiBUYWtlIGEgSE9TVF9XSURFX0lOVCBpbnN0ZWFkIG9mIGFuIHJ0eC4KCVJldHVybiBhIGJvb2wuCgkob3V0cHV0X21vdmVfc2ltb2RlX2NvbnN0KTogVXBkYXRlIGNhbGxzIGFmdGVyIGFib3ZlIGNoYW5nZXMuCglSZXdvcmsgdG8gdXNlIGF1dG9tYXRpYyB2YXJpYWJsZXMgYW5kIHByZWRpY2F0ZXMgbGlrZSBNRU1fUC4KCSogY29uZmlnL202OGsvbTY4ay5tZCAocHVzaGV4dGhpc2lfY29uc3QpOiBVcGRhdGUgY2FsbCB0bwoJdmFsaWRfbW92M3FfY29uc3QuCgoyMDA3LTAxLTE5ICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAocGVyZm9ybV92YXJfc3Vic3RpdHV0aW9uKTogRml4IHR5cG8KCWluIGR1bXBfZmxhZ3MgdGVzdC4KCjIwMDctMDEtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2NleHBpKTogRmFsbCBiYWNrIHRvIGV4cGFuZGluZwoJdmlhIGNleHAgaW4gY2FzZSBzaW5jb3MgaXMgbm90IGF2YWlsYWJsZS4KCjIwMDctMDEtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfSEFTX1NJTkNPUyk6IERvY3VtZW50IG5ldyB0YXJnZXQgbWFjcm8uCgkqIGRlZmF1bHRzLmggKFRBUkdFVF9IQVNfU0lOQ09TKTogRGVmYXVsdCB0byBvZmYuCgkqIGNvbmZpZy9saW51eC5oIChUQVJHRVRfSEFTX1NJTkNPUyk6IFNldCB0byBvbiBpZiB3ZSBoYXZlIGdsaWJjLgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoVEFSR0VUX0hBU19TSU5DT1MpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKFRBUkdFVF9IQVNfU0lOQ09TKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKFRBUkdFVF9IQVNfU0lOQ09TKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvbGludXguaCAoVEFSR0VUX0hBU19TSU5DT1MpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFRBUkdFVF9IQVNfU0lOQ09TKTogTGlrZXdpc2UuCgoyMDA3LTAxLTE5ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKmZwYXRhbnhmM19pMzg3LCBmcGF0YW5fZXh0ZW5kPG1vZGU+eGYzX2kzODcpOgoJTmV3IGluc24gcGF0dGVybnMuCgkoYXRhbjJzZjNfMSwgYXRhbjJkZjNfMSwgYXRhbjJ4ZjNfMSk6IFJlbW92ZSBpbnNuIHBhdHRlcm5zLgoJKGF0YW4yeGYzKTogRGlyZWN0bHkgZ2VuZXJhdGUgUlRMIHBhdHRlcm4uCgkoYXRhbjI8bW9kZT4zKTogUmVuYW1lIGZyb20gYXRhbjJzZjMgYW5kIGF0YW4yZGYzIGFuZCBtYWNyb2l6ZSBpbnNuCglwYXR0ZXJucyB1c2luZyBYODdNT0RFRjEyIG1vZGUgbWFjcm8uICBVc2UgZnBhdGFuX2V4dGVuZDxtb2RlPnhmM19pMzg3CglhbmQgdHJ1bmNhdGUgcmVzdWx0IHRvIHJlcXVlc3RlZCBtb2RlLiAgVXNlIFNTRV9GTE9BVF9NT0RFX1AgdG8KCWRpc2FibGUgcGF0dGVybnMgZm9yIFNTRSBtYXRoLgoJKGF0YW48bW9kZT4yKTogUmVuYW1lIGZyb20gYXRhbnNmMiBhbmQgYXRhbmRmMiBhbmQgbWFjcm9pemUgaW5zbgoJcGF0dGVybnMgdXNpbmcgWDg3TU9ERUYxMiBtb2RlIG1hY3JvLiAgVXNlIGZwYXRhbl9leHRlbmQ8bW9kZT54ZjNfaTM4NwoJYW5kIHRydW5jYXRlIHJlc3VsdCB0byByZXF1ZXN0ZWQgbW9kZS4gIFVzZSBTU0VfRkxPQVRfTU9ERV9QIHRvCglkaXNhYmxlIHBhdHRlcm5zIGZvciBTU0UgbWF0aC4KCjIwMDctMDEtMTkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbGliZ2NjLXN0ZC52ZXI6IEZpeCB0eXBvIGluICVpbmhlcml0IGZvciBHQ0NfNC4zLjAuCgoyMDA3LTAxLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF91bmFyeSkgPFZJRVdfQ09OVkVSVF9FWFBSPjogT3B0aW1pemUgYXdheSBhCglWSUVXX0NPTlZFUlRfRVhQUiB0byB0aGUgc2FtZSB0eXBlIGFzIGl0J3Mgb3BlcmFuZC4KCjIwMDctMDEtMTggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWxkb3VibGUuYzogT25seSBidWlsZCBfU09GVF9GTE9BVCBpZgoJY29uZmlndXJlZCBmb3IgbG9uZyBkb3VibGUgMTI4LgoKMjAwNy0wMS0xOCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSk6IEZpeCBidWlsZAoJZXJyb3IuCgoyMDA3LTAxLTE4ICBNaWNoYWVsIE1laXNzbmVyICA8bWljaGFlbC5tZWlzc25lckBhbWQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogTWFrZSBmcHJpbnRmJ3MKCWluICNpZiAwIGNvZGUgdHlwZSBjb3JyZWN0LgoKMjAwNy0wMS0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAodm9wX2ZyZWVfYnVja2V0X3NpemUpOiBOZXZlciByZXR1cm4gdmFsdWUKCWdyZWF0ZXIgdGhhbiBOVU1fVk9QX0ZSRUVfQlVDS0VUUy4KCjIwMDctMDEtMTggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYzogVXBkYXRlIGNvbW1lbnRzLgoJKHB0YWJpdG1hcF9vYnN0YWNrKTogUmVtb3ZlZC4KCShwdGFfb2JzdGFjayk6IE5ldy4KCShvbGRwdGFfb2JzdGFjayk6IERpdHRvLgoJKHN0YXRzKTogQWRkIGEgZmV3IG1lbWJlcnMuCgkoc3RydWN0IHZhcmlhYmxlX2luZm8pOiBSZW1vdmUgbm9kZSwgY29tcGxleCwgYWRkcmVzc190YWtlbiwgYW5kCglpbmRpcmVjdF90YXJnZXQgbWVtYmVycy4gQWRkIG9sZHNvbHV0aW9uIG1lbWJlci4KCShuZXdfdmFyX2luZm8pOiBEbyBub3QgaW5pdGlhbGl6ZSByZW1vdmVkIG1lbWJlcnMuCgkoY29uc3RyYWludF9leHByX3R5cGUpOiBSZW1vdmUgSU5DTFVERVMuCgkoY29uc3RyYWludF9ncmFwaCk6IEFkZCBzaXplLCBpbXBsaWNpdF9wcmVkcywgcmVwLAoJaW5kaXJlY3RfY3ljbGVzLCBlcV9yZXAsIGxhYmVsLCBkaXJlY3Rfbm9kZXMsIGFuZCBjb21wbGV4IG1lbWJlcnMuCgkoRklSU1RfUkVGX05PREUpOiBOZXcgbWFjcm8uCgkoTEFTVF9SRUZfTk9ERSk6IERpdHRvLgoJKEZJUlNUX0FERFJfTk9ERSk6IERpdHRvLgoJKGZpbmQpOiBOZXcgZnVuY3Rpb24uCgkodW5pdGUpOiBEaXR0by4KCShkdW1wX2NvbnN0cmFpbnQpOiBEbyBub3QgaGFuZGxlIElOQ0xVREVTLgoJKGluc2VydF9pbnRvX2NvbXBsZXgpOiBEbyBub3QgaW5zZXJ0IGR1cGxpY2F0ZSBjb25zdHJhaW50cy4KCShjb25kZW5zZV92YXJtYXBfbm9kZXMpOiBSZW5hbWVkIGFuZCByZXdyaXR0ZW4gaW50byAuLi4KCShtZXJnZV9ub2RlX2NvbnN0cmFpbnRzKTogVGhpcy4gQWxzbyBmaXggYnVnIGluIGhhbmRsaW5nIG9mCglvZmZzZXRlZCBjb3B5IGNvbnN0cmFpbnRzLgoJKGNsZWFyX2VkZ2VzX2Zvcl9ub2RlKTogTm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIHByZWRzIGF0IGFsbCwKCW9yIHJlbW92aW5nIGFzc29jaWF0ZWQgcHJlZHMvc3VjY3MuCgkobWVyZ2VfZ3JhcGhfbm9kZXMpOiBEZWFsIHdpdGggaW5kaXJlY3RfY3ljbGVzLgoJRG9uJ3QgZGVhbCB3aXRoIHByZWRlY2Vzc29ycy4KCShhZGRfaW1wbGljaXRfZ3JhcGhfZWRnZSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfcHJlZF9ncmFwaF9lZGdlKTogRGl0dG8uCgkoYWRkX2dyYXBoX2VkZ2UpOiBEb24ndCBkZWFsIHdpdGggcHJlZGVjZXNzb3JzLgoJKGJ1aWxkX2NvbnN0cmFpbnRfZ3JhcGgpOiBSZW1vdmVkLgoJKGJ1aWxkX3ByZWRfZ3JhcGgpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfc3VjY19ncmFwaCk6IERpdHRvLgoJKHN0cnVjdCBzY2NfaW5mbyk6IFJlbW92ZWQgaW5fY29tcG9uZW50LiBBZGRlZCByb290cywgZGZzLCBhbmQKCW5vZGVfbWFwcGluZy4gUmVtb3ZlIHZpc2l0ZWRfaW5kZXgsIHVuaWZpY2F0aW9uX3F1ZXVlLgoJKHNjY192aXNpdCk6IERlYWwgd2l0aCB1bmlvbi1maW5kIHdlIGRvIG5vdy4KCURlYWwgd2l0aCBjeWNsZXMgd2l0aCBSRUYgbm9kZXMuCgkoY29sbGFwc2Vfbm9kZXMpOiBSZW5hbWVkIGFuZCByZXdyaXR0ZW4gdG8gLi4uCgkodW5pZnlfbm9kZXMpOiBUaGlzLgoJKHByb2Nlc3NfdW5pZmljYXRpb25fcXVldWUpOiBSZW1vdmVkLgoJKHRvcG9fdmlzaXQpOiBDbGVhbnVwCgkoZG9fZGFfY29uc3RyYWludCk6IFVzZSBmaW5kLgoJKGRvX3NkX2NvbnN0cmFpbnQpOiBEaXR0by4KCShkb19kc19jb25zdHJhaW50KTogRGl0dG8uCgkoZG9fY29tcGxleF9jb25zdHJhaW50KTogRGl0dG8uCgkoaW5pdF9zY2NfaW5mbyk6IFVwZGF0ZSBmb3IgcmVtb3ZlZCBhbmQgYWRkZWQgbWVtYmVycy4KCShmaW5kX2FuZF9jb2xsYXBzZV9ncmFwaF9jeWNsZXMpOiBSZW5hbWVkIGFuZCByZXdyaXR0ZW4gaW50byAuLi4KCShmaW5kX2luZGlyZWN0X2N5Y2xlcyk6IFRoaXMuCgkoZXF1aXZhbGVuY2VfY2xhc3MpOiBOZXcgdmFyaWFibGUuCgkobGFiZWxfdmlzaXQpOiBOZXcgZnVuY3Rpb24uCgkocGVyZm9ybV92YXJpYWJsZV9zdWJzdGl0dXRpb24pOiBSZXdyaXR0ZW4uCgkoZnJlZV92YXJfc3Vic3RpdHV0aW9uX2luZm8pOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9lcXVpdmFsZW50X25vZGUpOiBEaXR0by4KCShtb3ZlX2NvbXBsZXhfY29uc3RyYWludHMpOiBEaXR0by4KCShlbGltaW5hdGVfaW5kaXJlY3RfY3ljbGVzKTogRGl0dG8uCgkoc29sdmVfZ3JhcGgpOiBPbmx5IHByb3BhZ2F0ZSBjaGFuZ2VkIGJpdHMuCglVc2UgaW5kaXJlY3QgY3ljbGUgZWxpbWluYXRpb24uCglVc2UgZmluZC4KCSh0cmVlX2lkX3QpOiBSZW5hbWUgdG8gdHJlZV92aV90LCBkZWxldGUgaWQgbWVtYmVyLCBhZGQgdmkgbWVtYmVyLgoJKHRyZWVfaWRfZXEpOiBSZW5hbWVkIHRvIC4uLgoJKHRyZWVfdmlfZXEpOiBUaGlzLiBVcGRhdGUgZm9yIG1lbWJlciBjaGFuZ2UKCShpbnNlcnRfaWRfZm9yX3RyZWUpOiBSZW5hbWVkIGFuZCByZXdyaXR0ZW4gdG8gLi4uCgkoaW5zZXJ0X3ZpX2Zvcl90cmVlKTogVGhpcy4KCShsb29rdXBfaWRfZm9yX3RyZWUpOiBSZW5hbWVkIGFuZCByZXdyaXR0ZW4gdG8gLi4uCgkobG9va3VwX3ZpX2Zvcl90cmVlKTogVGhpcy4KCShnZXRfaWRfZm9yX3RyZWUpOiBSZW5hbWVkIGFuZCByZXdyaXR0ZW4gdG8gLi4uCgkoZ2V0X3ZpX2Zvcl90cmVlKTogRGl0dG8uCgkoZ2V0X2NvbnN0cmFpbnRfZXhwX2Zyb21fc3NhX3Zhcik6IFVwZGF0ZSB0byB1c2UgZ2V0X3ZpX2Zvcl90cmVlLgoJKHByb2Nlc3NfY29uc3RyYWludCk6IERvbid0IGhhbmRsZSBJTkNMVURFUy4KCVJlbW92ZSBzcGVjaWFsIEFERFJFU1NPRiBjYXNlLgoJKGZpbmRfZnVuY19hbGlhc2VzKTogUmV3cml0ZSB0byB1c2UgdmkgZnVuY3Rpb25zIGluc3RlYWQgb2YgaWQKCW9uZXMuCgkoY3JlYXRlX2Z1bmN0aW9uX2luZm9fZm9yKTogRGl0dG8uCgkoY3JlYXRlX3ZhcmlhYmxlX2luZm9fZm9yKTogRGl0dG8uCgkoaW50cmFfY3JlYXRlX3ZhcmlhYmxlX2luZm9zKTogRGl0dG8uCgkobWVyZ2Vfc210c19pbnRvKTogRGl0dG8uCgkoZmluZF93aGF0X3BfcG9pbnRzX3RvKTogRGl0dG8uCgkoaW5pdF9iYXNlX3ZhcnMpOiBEaXR0by4KCShpbml0X2FsaWFzX3ZhcnMpOiBEaXR0by4KCShyZW1vdmVfcHJlZHNfYW5kX2Zha2Vfc3VjY3MpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF9zYV9wb2ludHNfdG9faW5mbyk6IER1bXAgbmV3IHN0YXRzLgoJKGR1bXBfc29sdXRpb25fZm9yX3Zhcik6IFVzZSBmaW5kLgoJKHNldF91c2VkX3NtdHMpOiBGaXggZm9ybWF0dGluZy4KCShjb21wdXRlX3BvaW50c190b19zZXRzKTogVXBkYXRlZCBmb3IgbmV3IGZ1bmN0aW9ucy4KCShpcGFfcHRhX2V4ZWN1dGUpOiBEaXR0by4KCjIwMDctMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9GVU5DVElPTl9WQUxVRSk6IEV4cGFuZCBkb2N1bWVudGF0aW9uIG9mCglwYXJhbGxlbHMuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIFBBUkFMTEVMLAoJZXh0cmFjdCBpdHMgZmlyc3QgbWVtYmVyLgoJKiBjb25maWcvbTY4ay9saW51eC5oIChGVU5DVElPTl9FWFRSQV9FUElMT0dVRSk6IFJlbW92ZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IERvbid0Cgl1c2UgRlVOQ1RJT05fRVhUUkFfRVBJTE9HVUUuCgkobTY4a19mdW5jdGlvbl92YWx1ZSk6IFJldHVybiBhIFBBUkFMTEVMIGlmIHRoZSByZXR1cm4gdmFsdWUKCWlzIG9mIGEgcG9pbnRlciB0eXBlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuc19wb2ludGVyKQoJKEZVTkNUSU9OX0VYVFJBX0VQSUxPR1VFKTogUmVtb3ZlLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChEMF9SRUcpOiBOZXcgY29uc3RhbnQuCgoyMDA3LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBEb24ndAoJb3V0cHV0IGEgTk9QIGZvciBlbXB0eSBlcGlsb2d1ZXMuCgoyMDA3LTAxLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a191c2VfcmV0dXJuX2luc24pOiBVcGRhdGUgY29tbWVudHMKCWJlZm9yZSBmdW5jdGlvbi4gIEV4dGVuZCByZWdpc3RlciBzYXZlIGNoZWNrIHRvIGluY2x1ZGUgYWxsCglyZWdpc3RlcnMsIG5vdCBqdXN0IGludGVnZXIgb25lcy4KCjIwMDctMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCAodXNlX3JldHVybl9pbnNuKTogUmVuYW1lIHRvLi4uCgkobTY4a191c2VfcmV0dXJuX2luc24pOiAuLi50aGlzLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFVTRV9SRVRVUk5fSU5TTik6IERlbGV0ZS4KCSogY29uZmlnL202OGsvbTY4ay5jICh1c2VfcmV0dXJuX2luc24pOiBSZW5hbWUgdG8uLi4KCShtNjhrX3VzZV9yZXR1cm5faW5zbik6IC4uLnRoaXMuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKHJldHVybik6IFVzZSBtNjhrX3VzZV9yZXR1cm5faW5zbiBpbnN0ZWFkCglvZiBVU0VfUkVUVVJOX0lOU04uCgoyMDA3LTAxLTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvZnBnbnVsaWIuYyAoX190cnVuY2Rmc2YyKTogSW1wbGVtZW50IHJvdW5kIHRvCgluZWFyZXN0IGV2ZW4sIGZpeCBkZW5vcm1hbCByb3VuZGluZyBvdmVyZmxvdy4KCjIwMDctMDEtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5tZCAobW92c2ZfY2ZfaGFyZCk6IFVzZSBmc21vdmUgaW5zdGVhZCBvZgoJZiUkc21vdmUgYW5kIGYlJG1vdmUuCgkobW92ZGZfY2ZfaGFyZCk6IFVzZSBmZG1vdmUgZm9yIGNhc2VzIDAgYW5kIDMgYW5kIGZtb3ZlIGZvciBjYXNlIDEuCgkoZXh0ZW5kc2ZkZjJfY2YpOiBVc2UgZmRtb3ZlIGluc3RlYWQgb2YgZiUmbW92ZS4KCSh0cnVuY2Rmc2YyX2NmKTogVXNlIGZzbW92ZSBpbnN0ZWFkIG9mIGYlJHNtb3ZlLgoJKGFkZDxtb2RlPjNfY2YsIHN1Yjxtb2RlPjNfY2YpOiBVc2UgPEZQOnByZWM+IGluc3RlYWQgb2YgPEZQOnJvdW5kPi4KCjIwMDctMDEtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5tZCAobW92ZGZfY2ZfaGFyZCk6IFVzZSBvdXRwdXRfbW92ZV9kb3VibGUgZm9yCglHUFI8LUdQUiBtb3Zlcy4KCjIwMDctMDEtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogcmVhbC5oIChyZWFsX2Zvcm1hdCk6IEFkZCBhIGNhbm9uaWNhbF9uYW5fbHNic19zZXQgZmllbGQuCgkoY29sZGZpcmVfc2luZ2xlX2Zvcm1hdCk6IERlY2xhcmUuCgkoY29sZGZpcmVfZG91YmxlX2Zvcm1hdCk6IExpa2V3aXNlLgoJKiByZWFsLmMgKGVuY29kZV9pZWVlX3NpbmdsZSk6IFVzZSBjYW5vbmljYWxfbmFuX2xzYnNfc2V0IGluc3RlYWQKCW9mIHFuYW5fbXNiX3NldCB0byBkZXRlcm1pbmUgdGhlIGxvd2VyIGJpdHMgb2YgYSBjYW5vbmljYWwKCU5hTiBzaWduaWZpY2FuZC4KCShlbmNvZGVfaWVlZV9kb3VibGUpOiBMaWtld2lzZS4KCShlbmNvZGVfaWVlZV9xdWFkKTogTGlrZXdpc2UuCgkoaWVlZV9zaW5nbGVfZm9ybWF0KTogSW5pdGlhbGl6ZSBjYW5vbmljYWxfbmFuX2xzYnNfc2V0LgoJKG1pcHNfc2luZ2xlX2Zvcm1hdCk6IExpa2V3aXNlLgoJKGllZWVfZG91YmxlX2Zvcm1hdCk6IExpa2V3aXNlLgoJKG1pcHNfZG91YmxlX2Zvcm1hdCk6IExpa2V3aXNlLgoJKGllZWVfZXh0ZW5kZWRfbW90b3JvbGFfZm9ybWF0KTogTGlrZXdpc2UuCgkoaWVlZV9leHRlbmRlZF9pbnRlbF85Nl9mb3JtYXQpOiBMaWtld2lzZS4KCShpZWVlX2V4dGVuZGVkX2ludGVsXzEyOF9mb3JtYXQpOiBMaWtld2lzZS4KCShpZWVlX2V4dGVuZGVkX2ludGVsXzk2X3JvdW5kXzUzX2Zvcm1hdCk6IExpa2V3aXNlLgoJKGlibV9leHRlbmRlZF9mb3JtYXQpOiBMaWtld2lzZS4KCShtaXBzX2V4dGVuZGVkX2Zvcm1hdCk6IExpa2V3aXNlLgoJKGllZWVfcXVhZF9mb3JtYXQpOiBMaWtld2lzZS4KCShtaXBzX3F1YWRfZm9ybWF0KTogTGlrZXdpc2UuCgkodmF4X2ZfZm9ybWF0KTogTGlrZXdpc2UuCgkodmF4X2RfZm9ybWF0KTogTGlrZXdpc2UuCgkodmF4X2dfZm9ybWF0KTogTGlrZXdpc2UuCgkoaTM3MF9zaW5nbGVfZm9ybWF0KTogTGlrZXdpc2UuCgkoaTM3MF9kb3VibGVfZm9ybWF0KTogTGlrZXdpc2UuCgkoZGVjaW1hbF9zaW5nbGVfZm9ybWF0KTogTGlrZXdpc2UuCgkoZGVjaW1hbF9kb3VibGVfZm9ybWF0KTogTGlrZXdpc2UuCgkoZGVjaW1hbF9xdWFkX2Zvcm1hdCk6IExpa2V3aXNlLgoJKGM0eF9zaW5nbGVfZm9ybWF0KTogTGlrZXdpc2UuCgkoYzR4X2V4dGVuZGVkX2Zvcm1hdCk6IExpa2V3aXNlLgoJKHJlYWxfaW50ZXJuYWxfZm9ybWF0KTogTGlrZXdpc2UuCgkoY29sZGZpcmVfc2luZ2xlX2Zvcm1hdCk6IE5ldyByZWFsX2Zvcm1hdC4KCShjb2xkZmlyZV9kb3VibGVfZm9ybWF0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5jIChwZHAxMV9mX2Zvcm1hdCk6IEluaXRpYWxpemUKCWNhbm9uaWNhbF9uYW5fbHNic19zZXQuCgkocGRwMTFfZF9mb3JtYXQpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChvdmVycmlkZV9vcHRpb25zKTogT3ZlcnJpZGUgUkVBTF9GT1JNQVRfTU9ERQoJaWYgVEFSR0VUX0NPTERGSVJFX0NQVS4KCjIwMDctMDEtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCAobTY4a19vdXRwdXRfcGljX2NhbGwpOiBEZWxldGUuCgkob3V0cHV0X2NhbGwsIG02OGtfbGVnaXRpbWl6ZV9jYWxsX2FkZHJlc3MpOiBEZWNsYXJlLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEVYVFJBX0NPTlNUUkFJTlQpOiBSZW1vdmUgdW5uZWNlc3NhcnkKCXBhcmVudGhlc2Vlcy4gIEFkZCBzdXBwb3J0IGZvciBhICdXJyBjb25zdHJhaW50LgoJKExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCk6IFJlbW92ZSBTWU1CT0xfUkVGX0ZMQUcgaGFuZGxpbmcuCgkoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgJ28nLgoJKG02OGtfc3ltYm9saWNfY2FsbCwgbTY4a19zeW1ib2xpY19qdW1wKTogRGVjbGFyZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX3N5bWJvbGljX2NhbGwsIG02OGtfc3ltYm9saWNfanVtcCk6IE5ldwoJdmFyaWFibGVzLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIHRoZW0uICBEbyBub3Qgc2V0IGZsYWdfbm9fZnVuY3Rpb25fY3NlCglmb3IgVEFSR0VUX0lEX1NIQVJFRF9MSUJSQVJZLgoJKG02OGtfb3V0cHV0X3BpY19jYWxsKTogRGVsZXRlLgoJKG02OGtfbGVnaXRpbWl6ZV9jYWxsX2FkZHJlc3MpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfb3BlcmFuZCk6IFJlbW92ZSB0aGUgJW8gcHJlZml4LiAgSGFuZGxlIHRoZSAlcCBwcmVmaXguCgkob3V0cHV0X2NhbGwpOiBOZXcgZnVuY3Rpb24uCgkobTY4a19vdXRwdXRfbWlfdGh1bmspOiBVc2UgbTY4a19zeW1ib2xpY19qdW1wLiAgQWx3YXlzIGxvYWQgdGhlCgl0YXJnZXQgYWRkcmVzcyBmcm9tIHRoZSBHT1QgaWYgc3ltYm9saWMganVtcHMgYXJlIG5vdCBhbGxvd2VkLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChjYWxsLCBnZW5lcmFsX29wZXJhbmQpOiBEbyBub3Qgc2V0CglTWU1CT0xfUkVGX0ZMQUcuICBVc2UgbTY4a19sZWdpdGltaXplX2NhbGxfYWRkcmVzcyBpbnN0ZWFkLgoJTWVyZ2Ugc2VwYXJhdGUgZmxhZ19waWMgYW5kICFmbGFnX3BpYyBkZWZpbmVfaW5zbnMgaW50by4uLgoJKCpjYWxsLCAqY2FsbF92YWx1ZSk6IC4uLnRoZXNlIG5ldyBwYXR0ZXJucy4gIE1hdGNoIHRoZSBhZGRyZXNzCglyYXRoZXIgdGhhbiB0aGUgY29udGFpbmluZyBNRU0gYW5kIHJlcXVpcmUgaXQgdG8gYmUgYSBjYWxsX29wZXJhbmQuCglVc2Ugb3V0cHV0X2NhbGwgdG8gZ2VuZXJhdGUgdGhlIGFzbSB0ZW1wbGF0ZS4KCSogY29uZmlnL202OGsvcHJlZGljYXRlcy5tZCAoY29uc3RfY2FsbF9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KCShjYWxsX29wZXJhbmQpOiBMaWtld2lzZS4KCjIwMDctMDEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IFNpbXBsaWZ5IGRlZmluaXRpb24uCgkoU1RBQ0tfR1JPV1NfRE9XTldBUkQpOiBEZWZpbmUgdG8gMS4KCShGVU5DVElPTl9WQUxVRSwgTElCQ0FMTF9WQUxVRSwgRlVOQ1RJT05fVkFMVUVfUkVHTk9fUCk6IEVxdWl2b2NhdGUKCWNvbW1lbnRzLCBlbXBoYXNpemluZyB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgb25seSBkZWZhdWx0cy4KCSogY29uZmlnL202OGsvbGludXguaCAoTElOS19TUEVDKTogRml4IGZvcm1hdHRpbmcgaW4gI3VuZGVmLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKGNvbnN0X21ldGhvZCk6IFJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgoKMjAwNy0wMS0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChjbXBzaSk6IFJlbW92ZSBvdXRkYXRlZCBmbGFnX3BpYyBoYW5kbGluZy4KCjIwMDctMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChEQVRBX1JFR05PX1AsIEFERFJFU1NfUkVHTk9fUCwgSU5UX1JFR05PX1ApCgkoRlBfUkVHTk9fUCk6IE5ldyBtYWNyb3MuCgkoUkVHTk9fT0tfRk9SX0lOREVYX1AsIFJFR05PX09LX0ZPUl9CQVNFX1AsIFJFR05PX09LX0ZPUl9EQVRBX1ApCgkoUkVHTk9fT0tfRk9SX0ZQX1AsIFJFR19PS19GT1JfSU5ERVhfUCwgUkVHX09LX0ZPUl9CQVNFX1ApOiBVc2UgdGhlbS4KCShFSF9SRVRVUk5fU1RBQ0tBREpfUlRYKTogVXNlIEEwX1JFRy4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX3JlZ25vX21vZGVfb2spOiBVc2UgdGhlIG5ldyBSRUdOTyBtYWNyb3MuCgoyMDA3LTAxLTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAobTY4ay0qLWFvdXQqLCBtNjhrLSotY29mZiosIG02ODAyMC0qLWVsZiosIG02OGstKi1lbGYqKQoJKG02OGstKi11Y2xpbnV4b2xkYWJpLCBtNjhrLSotdWNsaW51eCosIG02OGstKi1ydGVtcyopOiBBZGQgdC1mbG9hdGxpYgoJdG8gJHRtYWtlX2ZpbGUuCgkqIGNvbmZpZy9tNjhrL3QtZmxvYXRsaWI6IE5ldyBmaWxlLCBleHRyYWN0aW5nIGNvbW1vbiBjb2RlIGZyb20uLi4KCSogY29uZmlnL202OGsvdC1tNjhrYmFyZSwgY29uZmlnL202OGsvdC1tNjhrZWxmLAoJKiBjb25maWcvbTY4ay90LXVjbGludXg6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2ZwZ251bGliLmM6IERvIG5vdCBjb21waWxlIGV4dGVuZGVlZCBwcmVjaXNpb24KCXJvdXRpbmVzIG9uIENvbGRGaXJlIHRhcmdldHMuCgoyMDA3LTAxLTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAobTY4ay0qLWFvdXQqLCBtNjhrLSotY29mZiosIG02ODAyMC0qLWVsZiosIG02OGstKi1lbGYqKQoJKG02ODAxMC0qLW5ldGJzZGVsZiosIG02OGsqLSotbmV0YnNkZWxmKiwgbTY4ayotKi1vcGVuYnNkKikKCShtNjhrLSotdWNsaW51eG9sZGFiaSwgbTY4ay0qLXVjbGludXgqLCBtNjhrLSotbGludXgqKQoJKG02OGstKi1ydGVtcyopOiBVc2UgdG1fZmlsZSByYXRoZXIgdGhhbiBtNjhrL202OGsuaCBhbmQKCWV4cGxpY2l0bHkgc2V0IE1PVE9ST0xBIHRvIDEuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoTU9UT1JPTEEpOiBTaW1wbGlmeSBkZWZpbml0aW9uIGFjY29yZGluZ2x5LgoKMjAwNy0wMS0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoUENDX1NUQVRJQ19TVFJVQ1RfUkVUVVJOKTogRGVsZXRlLgoJKEFTTV9PVVRQVVRfUkVHX1BVU0gsIEFTTV9PVVRQVVRfUkVHX1BPUCk6IEFkZCBNT1RPUk9MQSBjYXNlcy4KCSogY29uZmlnL202OGsvY29mZi5oIChSRUdJU1RFUl9QUkVGSVhfTUQpOiBEZWxldGUuCgkqIGNvbmZpZy9tNjhrL202ODAyMC1lbGYuaCAoTElCX1NQRUMpOiBEZWxldGUuCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oIChDQzFfU1BFQywgQ1BQX1NVQlRBUkdFVF9TUEVDKTogRGVsZXRlLgoJKiBjb25maWcvbTY4ay9tNjhrZWxmLmggKElNTUVESUFURV9QUkVGSVgsIFJFR0lTVEVSX1BSRUZJWF9NRCkKCShBU01fT1VUUFVUX1JFR19QVVNILCBBU01fT1VUUFVUX1JFR19QT1ApOiBEZWxldGUuCgkoTk9fRE9MTEFSX0lOX0xBQkVMLCBQQ0NfU1RBVElDX1NUUlVDVF9SRVRVUk4pOiBEb24ndCB1bmRlZmluZS4KCShCU1NfQVNNX09QLCBBU01fT1VUUFVUX1NLSVAsIEFTTV9PVVRQVVRfQVNDSUkpOiBEZWxldGUuCgkqIGNvbmZpZy9tNjhrL202OGtlbWIuaCAoUENDX1NUQVRJQ19TVFJVQ1RfUkVUVVJOKTogRG9uJ3QgdW5kZWZpbmUuCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmggKFNJWkVfVFlQRSwgUFRSRElGRl9UWVBFLCBXQ0hBUl9UWVBFKQoJKFdDSEFSX1RZUEVfU0laRSwgVEFSR0VUX09CSkZNVF9DUFBfQlVJTFRJTlMpOiBEZWxldGUuCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERvbid0IGRlZmluZSBtYzY4MDAwIGFuZCBtYzY4MDIwIGhlcmUuCgkoREJYX1JFR0lTVEVSX05VTUJFUik6IERlbGV0ZS4KCSogY29uZmlnL202OGsvbmV0YnNkLWVsZi5oIChJTU1FRElBVEVfUFJFRklYKTogRGVsZXRlLgoJKFBDQ19TVEFUSUNfU1RSVUNUX1JFVFVSTik6IERvbid0IHVuZGVmaW5lLgoJKiBjb25maWcvbTY4ay9vcGVuYnNkLmggKFBDQ19TVEFUSUNfU1RSVUNUX1JFVFVSTik6IERlZmluZS4KCjIwMDctMDEtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAobTY4ay0qLXVjbGludXgqKTogQWRkIGZsYXQuaCB0byAkdG1fZmlsZS4KCSogY29uZmlnL2ZsYXQuaDogTmV3IGZpbGUuCgkqIGNydHN0dWZmLmMgKFVTRV9QVF9HTlVfRUhfRlJBTUUpOiBEb24ndCBkZWZpbmUgaWYKCU9CSkVDVF9GT1JNQVRfRkxBVC4KCSogY29uZmlnL202OGsvbTY4ay5oIChBU01fUFJFRkVSUkVEX0VIX0RBVEFfRk9STUFUKTogRG8gbm90IHVzZQoJaW5kaXJlY3QgcmVmZXJlbmNlcyBmb3IgLW1zZXAtZGF0YSBvciAtbWlkLXNoYXJlZC1saWJyYXJ5LgoJRG8gbm90IHVzZSBQQy1yZWxhdGl2ZSBjb2RlIGFkZHJlc3NlcyBlaXRoZXIuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFJlc3RyaWN0IC1mUElDIGVycm9yCgl0byAtbXBjcmVsLgoJKiBjb25maWcvbTY4ay91Y2xpbnV4LmggKFNUQVJURklMRV9TUEVDKTogRGVmaW5lLiAgVXNlIFNjcnQxLm8KCWZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBjcnQxLm8gZm9yIGV4ZWN1dGFibGVzLiAgVXNlIGNydGkubyBhbmQKCWNydGJlZ2luLm8uCgkoRU5ERklMRV9TUEVDKTogVXNlIGNydGVuZC5vIGFuZCBjcnRuLm8uCgkoTElCX1NQRUMpOiBTdXBwcmVzcyAtUmxpYmMuZ2RiIGlmIC1zdGF0aWMtbGliYyBpcyBnaXZlbi4KCURvIG5vdCBhZGQgLWVsZjJmbHQgb3IgLXNoYXJlZC1saWItaWQgb3B0aW9ucyBoZXJlLgoJKExJTktfU1BFQyk6IERlZmluZS4gIFBhc3MgLWVsZjJmbHQgaWYgbm8gLWVsZjJmbHQgb3B0aW9uIGlzIGdpdmVuLgoJUGFzcyAtc2hhcmVkLWxpYi1pZCBpZiAtbWlkLXNoYXJlZC1saWJyYXJ5LCB0YWtpbmcgdGhlIGxpYnJhcnkKCWlkZW50aWZpZXIgZnJvbSAtbXNoYXJlZC1saWJyYXJ5LWlkIGlmIGdpdmVuLCBvdGhlcndpc2UKCWRlZmF1bHRpbmcgdG8gMC4KCShFSF9GUkFNRV9JTl9EQVRBX1NFQ1RJT04pOiBEbyBub3QgdW5kZWZpbmUuCgkoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCk6IExpa2V3aXNlLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19HWFhfTUVSR0VEX1RZUEVJTkZPX05BTUVTPTAKCWFuZCBfX0dYWF9UWVBFSU5GT19FUVVBTElUWV9JTkxJTkU9MCBpZiAtbWlkLXNoYXJlZC1saWJyYXJ5LgoJKERSSVZFUl9TRUxGX1NQRUNTKTogTWFwIHVuYWRvcm5lZCBQSUMgb3B0aW9ucyB0byAtbXNlcC1kYXRhLgoJKiBjb25maWcvbTY4ay90LXVjbGludXggKEVYVFJBX01VTFRJTElCX1BBUlRTKTogQWRkIGNydGJlZ2luLm8KCWFuZCBjcnRlbmQuby4KCSogY29uZmlnL202OGsvbGIxc2Y2OC5hc20gKFBJQ0NBTEwpOiBVc2UgYW4gbGVhIGFuZCBwYy1yZWxhdGl2ZQoJanVtcCBzZXF1ZW5jZSBmb3IgSVNBIEEgYW5kIElTQSBBKy4KCShQSUNKVU1QKTogTGlrZXdpc2UuCgoyMDA3LTAxLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG02OGstKi11Y2xpbnV4Kik6IEJhc2UgdGhlIHBvcnQgb24gdGhlIGNvbW1vbgoJYW5kIG02OGsgR05VL0xpbnV4IGZpbGVzIHJhdGhlciB0aGFuIG9uIHRoZSBnZW5lcmljIEVMRiBvbmVzLgoJKiBjb25maWcvbTY4ay91Y2xpbnV4LmggKFRBUkdFVF9WRVJTSU9OKTogT3ZlcnJpZGUuCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFVzZSBMSU5VWF9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TLgoKMjAwNy0wMS0xOCAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IE1ha2UgNjQtYml0IG9uIENvbGRGaXJlLgoJKExJQkdDQzJfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaCAoTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBVbmRlZmluZQoJYmVmb3JlIHJlZGVmaW5pbmcuCgkqIGNvbmZpZy9tNjhrL3VjbGludXgtb2xkYWJpLmggKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IFJlZGVmaW5lIHRvCgk4MCB1bmNvbmRpdGlvbmFsbHkuCgkoTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBMaWtld2lzZS4KCjIwMDctMDEtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgbTY4ay11Y2xpbnV4b2xkYWJpLgoJKiBjb25maWcuZ2NjIChtNjhrLSotdWNsaW51eG9sZGFiaSk6IE5ldyBjb25maWd1cmF0aW9uLgoJKiBjb25maWcvbTY4ay91Y2xpbnV4LW9sZGFiaS5oOiBOZXcgZmlsZSwgY29waWVkIGZyb20KCWNvbmZpZy9tNjhrL3VjbGludXguaC4KCjIwMDctMDEtMTggIEtheiBLb2ppbWEgIDxra29qaW1hQHJyLmlpajR1Lm9yLmpwPgoKCSogY29uZmlnL20zMnIvbTMyci1wcm90b3MuaCAobTMycl9leHBhbmRfZXBpbG9ndWUpOiBEZWNsYXJlIGl0LgoJKiBjb25maWcvbTMyci9tMzJyLmMgKG0zMnJfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IFVzZSBnZW5fZnJhbWVfbWVtLgoJKG0zMnJfY29tcHV0ZV9mcmFtZV9zaXplKTogVXNlIHVuc2lnbmVkIGZvciByZWduby4KCShtMzJyX3JlbG9hZF9scik6IFVzZSBnZW5fZnJhbWVfbWVtLgoJKHBvcCk6IE5ldy4KCShtMzJyX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IERvbid0IG91dHB1dCB0aGUgZnVuY3Rpb24gZXBpbG9ndWUKCXRleHR1YWxseSBoZXJlLgoJKG0zMnJfZXhwYW5kX2VwaWxvZ3VlKTogTmV3LgoJKGRpcmVjdF9yZXR1cm4pOiBSZXR1cm4gZmFsc2UgaWYgdGhlIGZ1bmN0aW9uIGhhcyB0aGUgaW50ZXJydXB0CglhdHRyaWJ1dGUuCgkobTMycl9oYXJkX3JlZ25vX3JlbmFtZV9vayk6IFJlbW92ZSBjb2RlIGZvciB0aGUgdGV4dHVhbCBlcGlsb2d1ZS4KCSogY29uZmlnL20zMnIvbTMyci5tZCAoZXBpbG9ndWUpOiBOZXcgZXhwYW5kZXIuCgkocmV0dXJuX2xyLCByZXR1cm5fcnRlKTogTmV3IGluc25zLgoJKHJldHVybik6IE1ha2UgaXQgZXhwYW5kZXIuCgkocmV0dXJuX25vcm1hbCk6IE5ldyBleHBhbmRlci4KCjIwMDctMDEtMTggIEpvc2ggQ29ubmVyICA8amNvbm5lckBhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzMwNDg1CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlKTogQWRkCglzdXBwb3J0IGZvciBVTkxFLCBVTkxULCBVTkdFLCBhbmQgVU5HVC4KCjIwMDctMDEtMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtdnJwLmMgKGZpbmFsaXplX2p1bXBfdGhyZWFkcyk6IERvIG5vdCBjYWxsIGNsZWFudXBfY2ZnIGJ5IGhhbmQuCgkqIHRyZWUtdGFpbGNhbGwgKGFkZF92aXJ0dWFsX3BoaXMpOiBMaWtld2lzZS4KCShvcHRpbWl6ZV90YWlsX2NhbGwpOiBSZXR1cm4gVE9ET3MuCgkoZXhlY3V0ZV90YWlsX2NhbGxzKTogUmV0dXJuIFRPRE9zLgoJKiB0cmVlLXNzYS1jY3AgKGV4ZWN1dGVfZm9sZF9hbGxfYnVpbHRpbnMpOiBEbyBjbGVhbnVwX2NmZyB2aWEgVE9ETy4KCSogdHJlZS1jZmdjbGVhbnVwLmMgKGNsZWFudXBfdHJlZV9jZmdfbG9vcCk6IFJldHVybiBpZiBzb21ldGhpbmcKCWNoYW5nZWQuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFsdWUpOgoJQ2xlYW51cCBjZmcgdXNpbmcgVE9ETy4KCSogdHJlZS1mbG93LmggKGNsZWFudXBfdHJlZV9jZmdfbG9vcCk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIHBhc3Nlcy5jIChleGVjdXRlX2Z1bmN0aW9uX3RvZG8pOiBXaGVuIGNsZWFudXAgZGlkIHNvbWV0aGluZywgcmVtb3ZlCgl1bnVzZWQgbG9jYWxzLgoJKiB0cmVlLWNmZy5jIChwYXNzX2J1aWxkX2NmZyk6IEFkZCBjbGVhbnVwX2NmZyBUT0RPLgoJKG1ha2VfZWRnZXMpOiBEb24ndCBjbGVhbnVwX2NmZy4KCjIwMDctMDEtMTggIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpIFtVTlNQRUNfU0lOQ09TX0NPUywKCVVOU1BFQ19YVFJBQ1RfRlJBQ1RdOiBVc2UgZ2VuZXJpYyBjb2RlIGZvciBpbnN0cnVjdGlvbnMgdGhhdAoJb3BlcmF0ZSBvbiB0aGUgdG9wIG9mIHN0YWNrLgoJW1VOU1BFQ19TSU5DT1NfU0lOLCBVTlNQRUNfWFRSQUNUX0VYUCwgVU5TUEVDX1RBTl06IFJld3JpdGUKCXJlZ2lzdGVyIGhhbmRsaW5nIG9mIGluc3RydWN0aW9ucyB0aGF0IG91dHB1dCB0byB0aGUgc2Vjb25kCglzdGFjayBzbG90LgoJW1VOU1BFQ19UQU5fT05FLCBVTlNQRUNfVEFOX1RBTl06IFJlbW92ZS4KCShtb3ZlX2Zvcl9zdGFja19yZWcpOiBTcGVjaWFsLWNhc2UgY2hlY2sgZm9yIGRlYWQgZGVzdGluYXRpb24KCXN0YWNrIHNsb3QgZm9yIGNvbnN0YW50IGxvYWQgb2YgMS4wIGluc2lkZSBVTlNQRUNfVEFOLgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoVU5TUEVDX1RBTik6IE5ldyBjb25zdGFudC4KCShVTlNQRUNfVEFOX09ORSwgVU5TUEVDX1RBTl9UQU4pOiBSZW1vdmUuCgkoZnB0YW54ZjRfaTM4NywgZnB0YW5fZXh0ZW5kPG1vZGU+eGY0X2kzODcpOiBOZXcgcGF0dGVybnMKCXRvIGNvcnJlY3RseSBtb2RlbCBtb3ZlIG9mIGNvbnN0YW50IDEuMCB0byB0b3Agc3RhY2sgc2xvdC4KCSgqdGFuZGYzXzEsICp0YW5zZjNfMSwgKnRhbnhmM18xKTogUmVtb3ZlIGluc24gcGF0dGVybnMuCgkodW5uYW1lZCBwZWVwaG9sZTIgcGF0dGVybik6IFJlbW92ZSBjb3JyZXNwb25kaW5nIHBlZXBob2xlMgoJcGF0dGVybiB0aGF0IG9wdGltaXplcyB0YW4gaW5zbiBhbmQgbG9hZGluZyBvZiBjb25zdGFudCAxLjAuCgkodGFueGYyKTogVXNlIGZwdGFueGY0X2kzODcuCgkodGFuPG1vZGU+Mik6IFJlbmFtZSBmcm9tIHRhbnNmMiBhbmQgdGFuZGYyIGFuZCBtYWNyb2l6ZSBpbnNuCglwYXR0ZXJucyB1c2luZyBYODdNT0RFRjEyIG1vZGUgbWFjcm8uICBVc2UgZnB0YW5fZXh0ZW5kPG1vZGU+eGY0X2kzODcKCWFuZCB0cnVuY2F0ZSByZXN1bHQgdG8gcmVxdWVzdGVkIG1vZGUuICBVc2UgU1NFX0ZMT0FUX01PREVfUCB0bwoJZGlzYWJsZSBwYXR0ZXJucyBmb3IgU1NFIG1hdGguCgkoc2luY29zPG1vZGU+Myk6IFVzZSB0cnVuY3hmPG1vZGU+Ml9pMzg3X25vb3AgZm9yIHRydW5jYXRpb24uCgkoZnlsMnhfZXh0ZW5kPG1vZGU+eGYzX2kzODcpOiBVc2UgWDg3TU9ERUYxMiBmb3Igb3BlcmFuZCAxLgoKMjAwNy0wMS0xOCAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCSAgICBSaWNoYXJkIEd1ZW50aGVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBkaWFnbm9zdGljLzgyNjgKCSogZG9jL2ludm9rZS50ZXhpIChXYXJyYXktYm91bmRzKTogRG9jdW1lbnQgLVdhcnJheS1ib3VuZHMuCgkqIGNvbW1vbi5vcHQgKFdhcnJheS1ib3VuZHMpOiBBZGQgbmV3IHdhcm5pbmcgb3B0aW9uLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IERlZmluZSAtV2FycmF5LWJvdW5kcwoJaWYgLVdhbGwgaXMgZ2l2ZW4uCgkqIE1ha2VmaWxlLmluOiBtYWtlIHRyZWUtdnJwLm8gZGVwZW5kIG9uIHRvcGxldi5oCgkqIHRyZWUtdnJwLmMgKHZycF9maW5hbGl6ZSk6IENhbGwgY2hlY2tfYXJyYXlfcmVmcyBpZiAtV2FycmF5LWJvdW5kcwoJaXMgZW5hYmxlZC4KCShjaGVja19hcnJheV9yZWZzLCBjaGVja19hcnJheV9ib3VuZHMsIGNoZWNrX2FycmF5X3JlZik6IE5ldy4KCjIwMDctMDEtMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWNjcC5jIChjY3BfZmluYWxpemUpOiBSZXR1cm4gaWYgc29tZXRoaW5nIGNoYW5nZWQuCgkoZXhlY3V0ZV9zc2FfY2NwKTogUmV0dXJuIGZsYWdzIGNvbmRpdGlvbmFsbHkuCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChzdWJzdGl0dWVfYW5kX2ZvbGQpOiBSZXR1cm4gaWYgc29tZXRoaW5nIHdhcwoJY2hhbmdlZC4KCSogdHJlZS1zc2EtcHJvcGFnYXRlLmggKHN1YnN0aXR1dGVfYW5kX2ZvbGQpOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwNy0wMS0xOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogY2ZnY2xlYW51cC5jIChjbGVhbnVwX2NmZyk6IERldGVjdCBjZmdsYXlvdXQgbW9kZSBhbmQgc2V0Cgl0aGUgQ0xFQU5VUF9DRkdMQVlPVVQgZmxhZyB3aGVuIGluIGNmZ2xheW91dCBtb2RlLgoKCSogTWFrZWZpbGUuYyAoR1RGSUxFUyk6IEFkZCBjZmdsYXlvdXQuaC4KCSogZ2VuZ3R5cGUuYyAob3Blbl9iYXNlX2ZpbGVzKTogTGlrZXdpc2UuCgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X2Z1bmN0aW9uX2Zvb3RlciwKCWNmZ19sYXlvdXRfZnVuY3Rpb25faGVhZGVyKSBSZWluZGVudCB0byBtYWtlIGdlbmd0eXBlIGhhcHB5LgoJKiBjZmdsYXlvdXQuaCAoY2ZnX2xheW91dF9mdW5jdGlvbl9mb290ZXIsCgljZmdfbGF5b3V0X2Z1bmN0aW9uX2hlYWRlcik6IEFkZCBHVFkoKCkpIG1hcmtlci4KCgkqIGlmY3Z0LmMgKG5vY2VfdHJ5X3NpZ25fbWFzayk6IE1ha2Ugc3VyZSBJTlNOX0IgaXMgbm9uLW51bGwuCgoyMDA3LTAxLTE4ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGdlbmF1dG9tYXRhLmMgKHdyaXRlX2F1dG9tYXRhKTogSW5jbHVkZSB4c3RyZXJyb3Igb3V0cHV0IGluIHRoZQoJZXJyb3IgbWVzc2FnZSBpZiB3cml0aW5nIHRoZSBERkEgZGVzY3JpcHRpb24gZmlsZSBmYWlscy4KCjIwMDctMDEtMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfb3V0cHV0X2V4dGVybmFsKTogTWFrZSBpdAoJcmV0dXJuIHZvaWQuCgkqIGNvbmZpZy9taXBzL2lyaXMuaCAoVEFSR0VUX0FTTV9FWFRFUk5BTF9MSUJDQUxMKTogUmVtb3ZlZC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChpcml4X291dHB1dF9leHRlcm5hbF9saWJjYWxsKTogTGlrZXdpc2UuCgkoZXh0ZXJuX2xpc3QpOiBMaWtld2lzZS4KCShleHRlcm5faGVhZCk6IExpa2V3aXNlLgoJKFRBUkdFVF9BU01fRklMRV9FTkQpOiBMaWtld2lzZS4KCShtaXBzX2ZpbGVfZW5kKTogTGlrZXdpc2UuCgkobWlwc19vdXRwdXRfZXh0ZXJuYWwpOiBSZXdyaXR0ZW4uCgoyMDA3LTAxLTE4ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGdlbnByZWRzLmMgKHdyaXRlX2luc25fcHJlZHNfYyk6IE9ubHkgd3JpdGUgb3V0IHRoZSBmdW5jdGlvbgoJYm9keSBmb3IgcmVnY2xhc3NfZm9yX2NvbnN0cmFpbnQgaWYgd2UgaGF2ZSByZWdpc3RlciBjb25zdHJhaW50cy4KCjIwMDctMDEtMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChsaWJnY2ogVGVzdHMpOiBVc2Ugc291cmNld2FyZS5vcmcuCgkqIGRvYy9pbnN0YWxsLnRleGkgKFRlc3RpbmcpOiBVc2Ugc291cmNld2FyZS5vcmcuCgkoQmluYXJpZXMpOiBMaWtld2lzZS4KCShTcGVjaWZpYyk6IExpa2V3aXNlLgoJKiBkb2MvY29udHJpYi50ZXhpIChDb250cmlidXRvcnMpOiBVc2Ugc291cmNld2FyZS5vcmcuCgoyMDA3LTAxLTE3ICBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJKiBjb25maWcvYXZyL2F2ci5oIChBVlJfSEFWRV9MUE1YKTogTmV3IG1hY3JvLgoJKEFWUl9FTkhBTkNFRCk6IFJlbmFtZSB0byAuLi4KCShBVlJfSEFWRV9NVUwpOiAuLi4gbmV3LgoJKGF2cl9lbmhhbmNlZF9wKTogUmVuYW1lIHRvIC4uLgoJKGF2cl9oYXZlX211bF9wKTogLi4uIG5ldy4KCShUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IFVzZSAnYXZyX2hhdmVfbXVsX3AnIGluc3RlYWQgb2YKCSdhdnJfZW5oYW5jZWRfcCcgZm9yICJfX0FWUl9FTkhBTkNFRF9fIi4gRGVmaW5lICJfX0FWUl9IQVZFX01VTF9fIi4KCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX2VuaGFuY2VkX3ApOiBSZW5hbWUgdG8gLi4uCgkoYXZyX2hhdmVfbXVsX3ApOiAuLi4gbmV3LgoJKGJhc2VfYXJjaF9zKTogUmVuYW1lICdlbmhhbmNlZCcgdG8gJ2hhdmVfbXVsJy4KCShhdnJfb3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSAnYXZyX2hhdmVfbXVsX3AnIGFuZCAnaGF2ZV9tdWwnIGluc3RlYWQgb2YKCSdhdnJfZW5oYW5jZWRfcCcgYW5kICdlbmhhbmNlZCcuCgkoYXNobGhpM19vdXQsIGFzaHJoaTNfb3V0LCBsc2hyaGkzX291dCwgYXZyX3J0eF9jb3N0cyk6IFVzZQoJQVZSX0hBVkVfTVVMIGluc3RlYWQgb2YgQVZSX0VOSEFOQ0VELgoJKiBhdnIubWQgKCp0YWJsZWp1bXBfZW5oKTogVXNlIEFWUl9IQVZFX0xQTVggaW5zdGVhZCBvZiBBVlJfRU5IQU5DRUQuCgkobXVscWkzLCAqbXVscWkzX2VuaCwgKm11bHFpM19jYWxsLCBtdWxxaWhpMywgdW11bHFpaGkzLCBtdWxoaTMsCgkqbXVsaGkzX2VuaCwgKm11bGhpM19jYWxsLCBtdWxzaTMsICptdWxzaTNfY2FsbCk6IFVzZSBBVlJfSEFWRV9NVUwKCWluc3RlYWQgb2YgQVZSX0VOSEFOQ0VELgoJKCp0YWJsZWp1bXBfZW5oKTogVXNlIEFWUl9IQVZFX0xQTVggaW5zdGVhZCBvZiBBVlJfRU5IQU5DRUQuCgkqIGxpYmdjYy5TOiBVc2UgX19BVlJfSEFWRV9NVUxfXyBpbnN0ZWFkIG9mIF9fQVZSX0VOSEFOQ0VEX18uCgkoX190YWJsZWp1bXBfXyk6IFVzZSBfX0FWUl9IQVZFX0xQTVhfXyBpbnN0ZWFkIG9mIF9fQVZSX0VOSEFOQ0VEX18uCgoyMDA3LTAxLTE3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogdmVjLmggKFZFQ19yZXNlcnZlX2V4YWN0KTogRGVmaW5lLgoJKHZlY19nY19wX3Jlc2VydmVfZXhhY3QpOiBEZWNsYXJlLgoJKHZlY19nY19vX3Jlc2VydmVfZXhhY3QpOiBEZWNsYXJlLgoJKHZlY19oZWFwX3BfcmVzZXJ2ZV9leGFjdCk6IERlY2xhcmUuCgkodmVjX2hlYXBfb19yZXNlcnZlX2V4YWN0KTogRGVjbGFyZS4KCShWRUNfT1AgKFQsQSxyZXNlcnZlX2V4YWN0KSk6IE5ldyBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLCB0aHJlZQoJdmVyc2lvbnMuCgkoVkVDX09QIChULEEscmVzZXJ2ZSkpIFthbGwgdmVyc2lvbnNdOiBSZW1vdmUgaGFuZGxpbmcgb2YKCW5lZ2F0aXZlIHBhcmFtZXRlci4KCShWRUNfT1AgKFQsQSxhbGxvYykpIFthbGwgdmVyc2lvbnNdOiBDYWxsIC4uLnJlc2VydmVfZXhhY3QuCgkoVkVDX09QIChULEEsY29weSkpIFthbGwgdmVyc2lvbnNdOiBMaWtld2lzZS4KCShWRUNfT1AgKFQsYSxzYWZlX2dyb3cpKSBbYWxsIHZlcnNpb25zXTogTGlrZXdpc2UuCgkqIHZlYy5jIChjYWxjdWxhdGVfYWxsb2NhdGlvbik6IEFkZCBleGFjdCBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsCgljYWxsZXJzLgoJKHZlY19nY19vX3Jlc2VydmVfMSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGZyb20gdmVjX2djX29fcmVzZXJ2ZS4KCSh2ZWNfZ2NfcF9yZXNlcnZlLCB2ZWNfZ2Nfb19yZXNlcnZlKTogQ2FsbCB2ZWNfZ2Nfb19yZXNlcnZlXzEuCgkodmVjX2djX3BfcmVzZXJ2ZV9leGFjdCwgdmVjX2djX29fcmVzZXJ2ZV9leGFjdCk6IE5ldyBmdW5jdGlvbnMuCgkodmVjX2hlYXBfb19yZXNlcnZlXzEpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLCBmcm9tIHZlY19oZWFwX29fcmVzZXJ2ZS4KCSh2ZWNfaGVhcF9wX3Jlc2VydmUsIHZlY19oZWFwX29fcmVzZXJ2ZSk6IENhbGwgdmVjX2hlYXBfb19yZXNlcnZlXzEuCgkodmVjX2hlYXBfcF9yZXNlcnZlX2V4YWN0KTogTmV3IGZ1bmN0aW9uLgoJKHZlY19oZWFwX29fcmVzZXJ2ZV9leGFjdCk6IE5ldyBmdW5jdGlvbi4KCjIwMDctMDEtMTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGlwYS10eXBlLWVzY2FwZS5jIChsb29rX2Zvcl9jYXN0cyk6IFJldmFtcCB1c2luZyBoYW5kbGVkX2NvbXBvbmVudF9wLgoKMjAwNy0wMS0xNyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy5nY2M6IFN1cHBvcnQgY29yZTIgcHJvY2Vzc29yLgoKMjAwNy0wMS0xNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2FuYW1lcy5jIChyZWxlYXNlX2RlYWRfc3NhX25hbWVzKTogSW5zdGVhZCBvZiBnZ2NfZnJlZWluZwoJdGhlIG5hbWVzLCBqdXN0IHVubGluayB0aGUgY2hhaW4gc28gd2UgZG9uJ3QgY3Jhc2ggb24gZGFuZ2xpbmcKCXBvaW50ZXJzCgl0byBkZWFkIFNTQSBuYW1lcy4KCjIwMDctMDEtMTYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5oIChjZ3JhcGhfZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkpOiBLaWxsLgoJKiB0cmVlLXBhc3MuaDogUmVvcmRlciB0byBtYWtlIElQQSBwYXNzZXMgYXBwZWFyIHRvZWdoZXIuCgkocGFzc19lYXJseV9pbmxpbmUsIHBhc3NfaW5saW5lX3BhcmFtZXRlcnMsIHBhc3NfYXBwbHlfaW5saW5lKToKCURlY2xhcmUuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogRG8gbm90IGNvbXB1dGUgaW5saW5nCglwYXJhbWV0ZXJzLCBkbyBub3QgY2FsbCBlYXJseSBpbmxpbmVyLgoJKiBpcGEtaW5saW5lLmM6IFVwZGF0ZSBjb21tZW50cy4gIEluY2x1ZGUgdHJlZS1mbG93LmgKCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nKTogRG8gbm90IGNvbXB1dGUgaW5saW5pbmcgcGFyYW1ldGVycy4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkpOiBSZXR1cm4gVE9ET3M7IGFzc3VtZSB0bwoJYmUgY2FsbGVkIHdpdGggZnVuY3Rpb24gY29udGV4dCBzZXQgdXAuCgkocGFzc19pcGFfaW5saW5lKTogUmVtb3ZlIHVucmVhY2hhYmxlIGZ1bmN0aW9ucyBiZWZvcmUgcGFzcy4KCShjZ3JhcGhfZWFybHlfaW5saW5pbmcpOiBTaW1wbGlmeSBhc3N1bWluZyB0byBiZSBjYWxsZWQgZnJvbSB0aGUKCVBNIGFzIGxvY2FsIHBhc3MuCgkocGFzc19lYXJseV9pbmxpbmUpOiBOZXcgcGFzcy4KCShjZ3JhcGhfZ2F0ZV9pcGFfZWFybHlfaW5saW5pbmcpOiBOZXcgZ2F0ZS4KCShwYXNzX2lwYV9lYXJseV9pbmxpbmUpOiBUdXJuIGludG8gc2ltcGxlIHdyYXBwZXIuCgkoY29tcHV0ZV9pbmxpbmVfcGFyYW1ldGVycyk6IE5ldyBmdW5jdGlvbi4KCShnYXRlX2lubGluZV9wYXNzZXMpOiBOZXcgZ2F0ZS4KCShwYXNzX2lubGluZV9wYXJhbWV0ZXJzKTogTmV3IHBhc3MuCgkoYXBwbHlfaW5saW5lKTogTW92ZSBoZXJlIGZyb20gdHJlZS1vcHRpbWl6ZS5jCgkocGFzc19hcHBseV9pbmxpbmUpOiBOZXcgcGFzcy4KCSogaXBhLmMgKGNncmFwaF9yZW1vdmVfdW5yZWFjaGFibGVfbm9kZXMpOiBWZXJpZnkgY2dyYXBoIGFmdGVyCgl0cmFuc2Zvcm1pbmcuCgkqIHRyZWUtaW5saW5lLmMgKG9wdGltaXplX2lubGluZV9jYWxscyk6IFJldHVybiBUT0RPcyByYXRoZXIgdGhhbgoJZG9pbmcgdGhlbSBieSBoYW5kLgoJKHRyZWVfZnVuY3Rpb25fdmVyc2lvbmluZyk6IERvIG5vdCBhbGxvY2F0ZSBkdW1teSBzdHJ1Y3QgZnVuY3Rpb24uCgkqIHRyZWUtaW5saW5lLmggKG9wdGltaXplX2lubGluZV9jYWxscyk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIHRyZWUtb3B0aW1pemUuYyAoZXhlY3V0ZV9maXh1cF9jZmcpOiBFeHBvcnQuCgkocGFzc19maXh1cF9jZmcpOiBSZW1vdmUKCSh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBEbyBub3QgYXBwbHkgaW5saW5lcy4KCSogdHJlZS1mbG93LmggKGV4ZWN1dGVfZml4dXBfY2ZnKTogRGVjbGFyZS4KCSogTWFrZWZpbGUuaW4gKGd0LXBhc3Nlcy5jKTogTmV3LgoJKiBwYXNzZXMuYzogSW5jbHVkZSBndC1wYXNzZXMuaAoJKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IE5ldyBwYXNzZXMuCgkobm5vZGVzLCBvcmRlcik6IE5ldyBzdGF0aWMgdmFycy4KCShkb19wZXJfZnVuY3Rpb25fdG9wb3JkZXIpOiBOZXcgZnVuY3Rpb24uCgkoZXhlY3V0ZV9vbmVfcGFzcyk6IER1bXAgY3VycmVudCBwYXNzIGhlcmUuCgkoZXhlY3V0ZV9pcGFfcGFzc19saXN0KTogRG9uJ3QgZHVtcCBjdXJyZW50IHBhc3MgaGVyZS4KCjIwMDctMDEtMTYgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL2RmcC1iaXQuYyAoZGZwX2NvbXBhcmVfb3ApOiBSZXR1cm4gc2VwYXJhdGUgdmFsdWUgZm9yIE5hTi4KCShERlBfTkUsIERGUF9MRSwgREZQX0dFKTogUmV0dXJuIGZhbHNlIGZvciBOYU4uCgoyMDA3LTAxLTE2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi1sZG91YmxlLmM6IEJ1aWxkIGZpbGUgZm9yIFNPRlRfRkxPQVQuCgkoc3Ryb25nX2FsaWFzKTogRGVmaW5lLgoJKF9fZ2NjX3FtdWwpOiBQcm92aWRlIG5vbi1GTUEgZm9yIHNvZnQtZmxvYXQuCgkoX19nY2NfcWRpdik6IFNhbWUuCgkoX19nY2NfcW5lZyk6IE5ldy4KCShfX2djY19xZXEpOiBOZXcuCgkoX19nY2NfcWxlKTogTmV3LgoJKF9fZ2NjX3FnZSk6IE5ldy4KCShfX2djY19xdW5vcmQpOiBOZXcuCgkoX19nY2Nfc3RvcSk6IE5ldy4KCShfX2djY19kdG9xKTogTmV3LgoJKF9fZ2NjX3F0b3MpOiBOZXcuCgkoX19nY2NfcXRvZCk6IE5ldy4KCShfX2djY19xdG9pKTogTmV3LgoJKF9fZ2NjX3F0b3UpOiBOZXcuCgkoX19nY2NfaXRvcSk6IE5ldy4KCShfX2djY191dG9xKTogTmV3LgoJKGZtc3ViKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaW5pdF9saWJmdW5jcyk6IEluaXRpYWxpemUKCXNvZnQtZmxvYXQgZnVuY3Rpb25zLgoJKiBjb25maWcvcnM2MDAwL2xpYmdjYy1wcGMtZ2xpYmMudmVyOiBWZXJzaW9uIHNvZnQtZmxvYXQgc3ltYm9scy4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IERvIG5vdCB3YXJuCglhYm91dCBsb25nIGRvdWJsZSBzb2Z0IGZsb2F0LgoKMjAwNy0wMS0xNiAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCSAgICBUZWhpbGEgTWV5emVscyAgPHRlaGlsYUBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmggKGlzX3BhdHRlcm5fc3RtdF9wKTogTmV3LgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2RldGVybWluZV92ZWN0b3JpemF0aW9uX2ZhY3Rvcik6IEZpeAoJZm9ybWF0dGluZyAodGFicyBpbnN0ZWFkIG9mIHNwYWNlcykuIENsZWFudXAgYW5kIGNsYXJpZnkgc2V0dGluZwoJb2YgU1RNVF9WSU5GT19WRUNUWVBFLiBDYWxsIGlzX3BhdHRlcm5fc3RtdF9wLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfZ2V0X3ZlY19kZWZfZm9yX29wZXJhbmQpOiBGaXggdHlwby4KCSh2ZWN0b3JpemFibGVfdHlwZV9kZW1vdGlvbik6IENoZWNrIHRoYXQgdHlwZXMgYXJlIGludGVncmFsLgoJKHZlY3Rvcml6YWJsZV90eXBlX3Byb21vdGlvbik6IExpa2V3aXNlLgoJKHZlY3Rvcml6YWJsZV9zdG9yZSk6IEZpeCB0eXBvLiAgRWxpbWluYXRlIG5ldy1saW5lIGF0IGVuZCBvZgoJY29tbWVudHMuCgoyMDA3LTAxLTE2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXNzYW5hbWVzLmMgKHJlbGVhc2VfZGVhZF9zc2FfbmFtZXMpOiBSZW1vdmUgaW52YWxpZGF0ZWQKCWNncmFwaCBlZGdlcyB0b28uCgoyMDA3LTAxLTE1ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCSogaWZjdnQuYzogSW5jbHVkZSB2ZWMuaCwgdmVjcHJpbS5oLgoJKGNoZWNrX2NvbmRfbW92ZV9ibG9jayk6IE5ldyBhcmd1bWVudCByZWdzLgoJUmVvcmdhbml6ZS4gQWRkIHJlZ2lzdGVycyB1c2VkIHRvIHJlZ3MuCgkoY29uZF9tb3ZlX3Byb2Nlc3NfaWZfYmxvY2spOiBVc2UgcmVncyBzZXQgYWJvdmUgYXMKCWxvb3AgYm91bmRzLgoKMjAwNy0wMS0xNSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaDogVXBkYXRlIGNvcHlyaWdodC4KCShUQVJHRVRfT1BUSU9OX1RSQU5TTEFURV9UQUJMRSk6IEFkZCB1bWJyZWxsYS4KCShMSU5LX0NPTU1BTkRfU1BFQyk6IEFkZCAtdS4KCShMSU5LX1NQRUMpOiBGaXggdW1icmVsbGEgZm9yIGFib3ZlLgoKMjAwNy0wMS0xNSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc29mdC1mcC9vcC1jb21tb24uaCwgY29uZmlnL3NvZnQtZnAvb3AtNC5oOiBVcGRhdGUgZnJvbQoJZ2xpYmMgQ1ZTLgoKMjAwNy0wMS0xNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKGxpYmdjaiBUZXN0cyk6IERvbid0IG1lbnRpb24gamFja3MuCgkqIGRvYy9pbnN0YWxsLnRleGkgKFRlc3RpbmcpOiBEb24ndCBtZW50aW9uIGphY2tzLgoJKENvbmZpZ3VyYXRpb24pOiBEb2N1bWVudCAtLWVuYWJsZS1qYXZhLW1haW50YWluZXItbW9kZS4gIE1vdmUKCS0td2l0aC1qYXZhLWhvbWUgdG8gbGliZ2NqLXNwZWNpZmljIHNlY3Rpb24uICBEb2N1bWVudAoJLS13aXRoLWVjai1qYXIuCgkoUHJlcmVxdWlzaXRlcyk6IE1lbnRpb24gLS1lbmFibGUtamF2YS1tYWludGFpbmVyLW1vZGUsIGVjajEuCgoyMDA3LTAxLTE1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1kY2UuYyAoRENFX1RPRE9zKTogTmV3LgoJKHByb3BhZ2F0ZV9uZWNlc3NpdHkpOiBSZXR1cm4gaWYgc29tZXRoaW5nIGNoYW5nZWQuCgkoZWxpbWluYXRlX3VubmVjZXNzYXJ5X3N0bXRzKTogTGlrZXdpc2UuCgkocGVyZm9ybV90cmVlX3NzYV9kY2UpOiBSZXR1cm4gVE9ETyBmbGFncyB3aGVuIG5lZWRlZC4KCShwYXNzX2RjZSwgcGFzc19kY2VfbG9vcCwgcGFzc19jZF9kY2UpOiBSZW1vdmUgVE9ETyBmbGFncy4KCjIwMDctMDEtMTUgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChmeWwyeHhmM19pMzg3KTogUmVuYW1lIGZyb20gZnlsMnhfeGYzLgoJKGZ5bDJ4X2V4dGVuZDxtb2RlPnhmM19pMzg3KTogTmV3IGluc24gcGF0dGVybi4KCShsb2c8bW9kZT4yKTogUmVuYW1lIGZyb20gbG9nc2YyIGFuZCBsb2dkZjIgYW5kIG1hY3JvaXplIGluc24KCXBhdHRlcm5zIHVzaW5nIFg4N01PREVGMTIgbW9kZSBtYWNyby4gIEV4dGVuZCBvcGVyYW5kIDEKCXRvIFhGbW9kZS4gVXNlIFNTRV9GTE9BVF9NT0RFX1AgdG8gZGlzYWJsZSBwYXR0ZXJucyBmb3IgU1NFIG1hdGguCgkobG9nMTA8bW9kZT4yKTogRGl0dG8uCgkobG9nMjxtb2RlPjIpOiBEaXR0by4KCShsb2cxcDxtb2RlPjIpOiBEaXR0by4KCShsb2diPG1vZGU+Mik6IERpdHRvLgoJKGZ5bDJ4cDF4ZjNfaTM4Nyk6IFJlbmFtZSBmcm9tIGZ5bDJ4cDFfeGYzLgoJKGZ5bDJ4cDFfZXh0ZW5kPG1vZGU+eGYzX2kzODcpOiBOZXcgaW5zbiBwYXR0ZXJuLgoJKCpmeHRyYWN0eGYzX2kzODcpOiBSZW5hbWUgZnJvbSAqZnh0cmFjdHhmMy4KCShmeHRyYWN0X2V4dGVuZDxtb2RlPnhmM19pMzg3KTogTmV3IGluc24gcGF0dGVybi4KCShpbG9nYnNpMik6IFVzZSBtYXRjaF9kdXAgMywgbm90IG1hdGNoX29wZXJhbmQ6WEYgMy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2VtaXRfaTM4N19sb2cxcCk6IFVzZSBnZW5fZnlsMnhwMXhmM19pMzg3KCkKCWFuZCBnZW5fZnlsMnh4ZjNfaTM4NygpLgoKMjAwNy0wMS0xNCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogbG9vcC11bnN3aXRjaC5jICh1bnN3aXRjaF9sb29wKTogRG8gbm90IGNhbGwgZml4X2xvb3BfcGxhY2VtZW50LgoJKiBjZmdsb29wbWFuaXAuYyAoZml4X2xvb3BfcGxhY2VtZW50KTogTWFkZSBzdGF0aWMuICBVc2UKCWdldF9sb29wX2V4aXRfZWRnZXMuICBDaGFuZ2VkIHJldHVybiB0eXBlIHRvIGJvb2wuCgkqIGNmZ2xvb3AuaCAoZml4X2xvb3BfcGxhY2VtZW50KTogRGVjbGFyYXRpb24gcmVtb3ZlZC4KCjIwMDctMDEtMTQgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJKiBwYXJhbS5oIChNSU5fVkVDVF9MT09QX0JPVU5EKTogTmV3LgoJKiBwYXJhbXMuZGVmIChNSU5fVkVDVF9MT09QX0JPVU5EKTogTmV3LgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UpOiBUYWtlcyBhbm90aGVyCglhcmd1bWVudCAtIG1pbmltdW0gdGhyZXNob2xkIGZvciBudW1iZXIgb2YgaXRlcmF0aW9ucy4KCSogdHJlZS12ZWN0b3JpemVyLmggKHNscGVlbF90cmVlX3BlZWxfbG9vcF90b19lZGdlKTogQWRkIGFub3RoZXIKCWFyZ3VtZW50IHRvIGRlY2xhcmF0aW9uLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyk6IENoZWNrIHZhbHVlIG9mCglNSU5fVkVDVF9MT09QX0JPVU5ELgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfZG9fcGVlbGluZ19mb3JfbG9vcF9ib3VuZCk6IENhbGwKCXNscGVlbF90cmVlX3BlZWxfbG9vcF90b19lZGdlIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudC4KCSh2ZWN0X2RvX3BlZWxpbmdfZm9yX2FsaWdubWVudCk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGkgKG1pbi12ZWN0LWxvb3AtYm91bmQpOiBEb2N1bWVudCBuZXcgcGFyYW0gb3B0aW9uLgoKMjAwNy0wMS0xNCAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCglQUiB0YXJnZXQvMzA0MTMKCSogY29uZmlnL2kzODYvaTM4Ni5jIChwcmludF9vcGVyYW5kKSBbJ3onXTogT3V0cHV0ICdiJyBmb3IKCW9wZXJhbmRzIG9mIHNpemUgMS4KCjIwMDctMDEtMTQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtZGZhLmMgKHJlbW92ZV9yZWZlcmVuY2VkX3Zhcik6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1zc2EtbGl2ZS5jIChyZW1vdmVfdW51c2VkX2xvY2Fscyk6IFdhbGsgcmVmZXJlbmNlZCB2YXJzIGFuZAoJcHJ1bmUgcmVmZXJlbmNlZCB2YXJzIGxpc3QgdG9vLgoJKiB0cmVlLWZsb3cuaCAocmVtb3ZlX3JlZmVyZW5jZWRfdmFyKTogRGVjbGFyZS4KCjIwMDctMDEtMTQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtZWguYyAoYWRkX3N0bXRfdG9fZWhfcmVnaW9uX2ZuKTogRG8gbm90IGFkZCBjYWxsX2V4cHJzCglzZXBhcmF0ZWx5LgoJKHJlbW92ZV9zdG10X2Zyb21fZWhfcmVnaW9uX2ZuKTogRG8gbm90IHJlbW92ZSBjYWxsX2V4cHJzLgoJKHZlcmlmeV9laF90aHJvd19zdG10X25vZGUsIHZlcmlmeV9laF90aHJvd190YWJsZV9zdGF0ZW1lbnRzKTogS2lsbC4KCSogZXhjZXB0LmggKHZlcmlmeV9laF90aHJvd190YWJsZV9zdGF0ZW1lbnRzKTogS2lsbCBwcm90b3R5cGUuCgkqIGNmZ2V4cGFuZC5jIChleHBhbmRfZ2ltcGxlX2Jhc2ljX2Jsb2NrKTogUHJvcGFnYXRlIEVoIHJlZ2lvbnMKCWludG8gY2FsbCBleHJlcHNzaW9ucy4KCSogdHJlZS1vcHRpbWl6ZS5jIChleGVjdXRlX2ZyZWVfY2ZnX2Fubm90YXRpb3NuKTogRG8gbm90IGNhbGwKCWVoIHRyaG93IHZlcmlmaWVyLgoJKiB0cmVlLWNmZy5jOiBJbmNsdWRlIHBvaW50ZXItc2V0LmguCgkodmVyaWZ5X25vZGVfc2hhcmluZyk6IFdvcmsgb24gcG9pbnRlciBzZXQuCgkodmVyaWZ5X2VoX3Rocm93X3N0bXRfbm9kZSk6IE5ldy4KCSh2ZXJpZnlfc3RtdHMpOiBVc2UgcG9pbnRlcnMgc2V0cywgdmVyaWZ5IHRocm93X3N0bXQuCgoyMDA3LTAxLTEzICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBpcGEtcmVmZXJlbmNlLmMgKGFuYWx5emVfZnVuY3Rpb24pOiBDb25zaWRlciBhbHNvIGFkZHJlc3NlcyB0YWtlbgoJaW4gcGhpIG5vZGVzLgoKMjAwNy0wMS0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjLXR5cGVjay5jIChudWxsX3BvaW50ZXJfY29uc3RhbnRfcCk6IFJlcGxhY2UgdXNlIG9mCglUUkVFX0NPTlNUQU5UX09WRVJGTE9XIHdpdGggVFJFRV9PVkVSRkxPVy4KCShidWlsZF9jX2Nhc3QpOiBMaWtld2lzZS4KCjIwMDctMDEtMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJlZS5oIChmb3JjZV9maXRfdHlwZV9kb3VibGUpOiBSZW1vdmUgdW51c2VkIGZpbmFsIGFyZ3VtZW50LgoJKiBjLWNvbW1vbi5jIChjb25zdGFudF9leHByZXNzaW9uX3dhcm5pbmcpOiBSZXBsYWNlIHVzZSBvZgoJVFJFRV9DT05TVEFOVF9PVkVSRkxPVyB3aXRoIFRSRUVfT1ZFUkZMT1cuCgkoY29udmVydF9hbmRfY2hlY2spOiBMaWtld2lzZS4KCShzaG9ydGVuX2NvbXBhcmUpOiBVcGRhdGUgY2FsbCB0byBmb3JjZV9maXRfdHlwZV9kb3VibGUuCgkoY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uKSA8SU5URUdFUl9DU1Q+OiBVc2UgaW50ZWdlcl96ZXJvcC4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX3BvaW50ZXIpOiBVcGRhdGUgY2FsbCB0bwoJZm9yY2VfZml0X3R5cGVfZG91YmxlLgoJKiBmb2xkLWNvbnN0LmMgKGZvcmNlX2ZpdF90eXBlX2RvdWJsZSk6IFJlbW92ZSBvdmVyZmxvd2VkX2NvbnN0Cglhcmd1bWVudC4KCShpbnRfY29uc3RfYmlub3AsIGZvbGRfY29udmVydF9jb25zdF9pbnRfZnJvbV9pbnQsCglmb2xkX2NvbnZlcnRfY29uc3RfaW50X2Zyb21fcmVhbCwgZm9sZF9kaXZfY29tcGFyZSwKCWZvbGRfc2lnbl9jaGFuZ2VkX2NvbXBhcmlzb24sIGZvbGRfdW5hcnksIGZvbGRfbmVnYXRlX2NvbnN0LAoJZm9sZF9hYnNfY29uc3QsIGZvbGRfbm90X2NvbnN0KTogUmVtb3ZlIHRoZSBmaW5hbCBhcmd1bWVudCBmcm9tCgljYWxscyB0byBmb3JjZV9maXRfdHlwZV9kb3VibGUuCgoyMDA3LTAxLTEyICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogU2V0IGluc24gdG8gIm5vcCIgZm9yIHNwdS0qLSogYWxzby4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNy0wMS0xMiAgT2xnYSBHb2xvdmFuZXZza3kgIDxvbGdhQGlsLmlibS5jb20+CgoJKiBidWlsdGlucy5kZWYgOiBBZGQgQlVJTFRfSU5fRlJFRS4KCjIwMDctMDEtMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8zMDQ0MwoJKiB0cmVlLWlubGluZS5jICh0cmVlX2Z1bmN0aW9uX3ZlcnNpb25pbmcpOiBEbyBub3Qgb3B0aW1pemUgd2hlbgoJY2xvbmluZyBmb3IgaW5saW5pbmcuCgoyMDA3LTAxLTEyICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBkb2MvbG9vcC50ZXhpOiBEb2N1bWVudCByZWNvcmRpbmcgb2YgbG9vcCBleGl0cy4KCSogY2ZnbG9vcG1hbmlwLmMgKGxvb3BpZnksIGR1cGxpY2F0ZV9sb29wKTogVXNlIGFsbG9jX2xvb3AuCgkodXBkYXRlX3NpbmdsZV9leGl0c19hZnRlcl9kdXBsaWNhdGlvbiwKCXVwZGF0ZV9zaW5nbGVfZXhpdF9mb3JfZHVwbGljYXRlZF9sb29wLAoJdXBkYXRlX3NpbmdsZV9leGl0X2Zvcl9kdXBsaWNhdGVkX2xvb3BzKTogUmVtb3ZlZC4KCShkdXBsaWNhdGVfbG9vcF90b19oZWFkZXJfZWRnZSk6IERvIG5vdCBjYWxsCgl1cGRhdGVfc2luZ2xlX2V4aXRzX2FmdGVyX2R1cGxpY2F0aW9uIGFuZAoJdXBkYXRlX3NpbmdsZV9leGl0X2Zvcl9kdXBsaWNhdGVkX2xvb3BzLgoJKGxvb3BfdmVyc2lvbik6IERvIG5vdCB1cGRhdGUgc2luZ2xlX2V4aXQgaW5mb3JtYXRpb24uCgkoZml4X2xvb3Bfc3RydWN0dXJlKTogVXNlIHJlY29yZF9sb29wX2V4aXRzIGluc3RlYWQgb2YKCW1hcmtfc2luZ2xlX2V4aXRfbG9vcHMuCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAodHJlZV90cmFuc2Zvcm1fYW5kX3Vucm9sbF9sb29wKTogVXBkYXRlCgl0aGUgbGlzdHMgb2YgbG9vcCBleGl0cy4KCSogY2ZnaG9va3MuYyAocmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoLCByZWRpcmVjdF9lZGdlX2FuZF9icmFuY2hfZm9yY2UsCglzcGxpdF9lZGdlLCBtZXJnZV9ibG9ja3MpOiBVcGRhdGUgdGhlIGxpc3RzIG9mIGxvb3AgZXhpdHMuCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUpOiBQYXNzIExPT1BTX0hBVkVfUkVDT1JERURfRVhJVFMgdG8KCWxvb3Bfb3B0aW1pemVyX2luaXQuCgkqIGxvb3AtaW5pdC5jIChsb29wX29wdGltaXplcl9pbml0KTogQ2FsbCByZWNvcmRfbG9vcF9leGl0cyBpbnN0ZWFkCglvZiBtYXJrX3NpbmdsZV9leGl0X2xvb3BzLgoJKGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXplKTogQ2FsbCByZWxlYXNlX3JlY29yZGVkX2V4aXRzLgoJKiB0cmVlLXNzYS1sb29wLmMgKHRyZWVfbG9vcF9vcHRpbWl6ZXJfaW5pdCk6IFBhc3MKCUxPT1BTX0hBVkVfUkVDT1JERURfRVhJVFMgdG8gbG9vcF9vcHRpbWl6ZXJfaW5pdC4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2VkZ2VfY2ZnKTogRG8gbm90Cgl1cGRhdGUgc2luZ2xlIGV4aXQgaW5mb3JtYXRpb24uCgkqIGxhbWJkYS1jb2RlLmMgKHBlcmZlY3RfbmVzdGlmeSk6IERpdHRvLgoJKiBjZmdsb29wLmMgKGZsb3dfbG9vcF9mcmVlKTogRGVzdHJveSB0aGUgbGlzdCBvZiBleGl0cyBvZiB0aGUgbG9vcC4KCShtYXJrX3NpbmdsZV9leGl0X2xvb3BzKTogUmVtb3ZlZC4KCShhbGxvY19sb29wLCBsb29wX2V4aXRfaGFzaCwgbG9vcF9leGl0X2VxLCBsb29wX2V4aXRfZnJlZSwKCWdldF9leGl0X2Rlc2NyaXB0aW9ucywgcmVzY2FuX2xvb3BfZXhpdCwgcmVjb3JkX2xvb3BfZXhpdHMsCglkdW1wX3JlY29yZGVkX2V4aXQsIGR1bXBfcmVjb3JkZWRfZXhpdHMsIHJlbGVhc2VfcmVjb3JkZWRfZXhpdHMpOiBOZXcKCWZ1bmN0aW9ucy4KCShnZXRfbG9vcF9leGl0X2VkZ2VzLCBzaW5nbGVfZXhpdCk6IFVzZSByZWNvcmRlZCBleGl0IGxpc3RzLgoJKGFkZF9iYl90b19sb29wLCByZW1vdmVfYmJfZnJvbV9sb29wcyk6IFVwZGF0ZSB0aGUgbGlzdHMgb2YgbG9vcCBleGl0cy4KCSh2ZXJpZnlfbG9vcF9zdHJ1Y3R1cmUpOiBWZXJpZnkgY29uc2lzdGVuY3kgb2YgdGhlIGV4aXQgbGlzdHMuCgkoZmxvd19sb29wc19maW5kKTogVXNlIGFsbG9jX2xvb3AuICBJbml0aWFsaXplIGV4aXRzIGhhc2guCgkoc2V0X3NpbmdsZV9leGl0KTogUmVtb3ZlZC4KCSogY2ZnbG9vcC5oIChzdHJ1Y3QgbG9vcF9leGl0KTogTmV3IGZ1bmN0aW9uLgoJKHN0cnVjdCBsb29wKTogc2luZ2xlX2V4aXRfIGZpZWxkIHJlcGxhY2VkIGJ5IGV4aXRzIGZpZWxkLgoJKExPT1BTX0hBVkVfTUFSS0VEX1NJTkdMRV9FWElUUyk6IFJlcGxhY2VkIGJ5CglMT09QU19IQVZFX1JFQ09SREVEX0VYSVRTLgoJKHN0cnVjdCBsb29wcyk6IEFkZGVkIGV4aXRzIGhhc2guCgkobWFya19zaW5nbGVfZXhpdF9sb29wcywgc2V0X3NpbmdsZV9leGl0KTogRGVjbGFyYXRpb24gcmVtb3ZlZC4KCShyZWxlYXNlX3JlY29yZGVkX2V4aXRzLCByZWNvcmRfbG9vcF9leGl0cywgcmVzY2FuX2xvb3BfZXhpdCk6IERlY2xhcmUuCgoyMDA3LTAxLTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogQXZvaWQgdXNlIG9mIEBoZWFkaXRlbS4KCjIwMDctMDEtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3NlLmMgKGNzZV9pbnNuKTogTW92ZSBIQVZFX0NDMCBjb2RlIGFmdGVyIGRlY2xhcmF0aW9ucy4KCjIwMDctMDEtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aTogRml4IG02OGstKi0qIGFuY2hvciBhbmQgYWRkIG02OGstKi0qIHRvIHRoZQoJbGlzdCBvZiB0YXJnZXRzLgoKMjAwNy0wMS0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1uby1iaXRmaWVsZCwgLW1uby1ydGQgYW5kIC1tbm8tc2hvcnQuCgkqIGNvbmZpZy9tNjhrL202OGsub3B0OiBSZXNvcnQgb3B0aW9ucy4KCShtYml0ZmllbGQsIG1ydGQsIG1zaG9ydCk6IFJlbW92ZSBSZWplY3ROZWdhdGl2ZSBwcm9wZXJ0aWVzLgoKMjAwNy0wMS0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgdGhlIG1hY3JvcyB0aGF0IGFyZSBkZWZpbmVkIGJ5CgltNjhrJ3MgLW10dW5lIGFuZCAtbWhhcmQtZmxvYXQgb3B0aW9ucy4KCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCAobTY4a19jcHBfY3B1X2lkZW50KSBEZWNsYXJlLgoJKG02OGtfY3BwX2NwdV9mYW1pbHkpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZCBhIGZ1bGwgc2V0CglvZiBfX3VjZnYqX18gbWFjcm9zLiAgRGVmaW5lIF9fbWNmZnB1X18gaWYgZ2VuZXJhdGluZyBjb2RlIGZvcgoJQ29sZEZpcmUgRlBVcy4gIERlZmluZSBfX21jZl9jcHVfKiBhbmQgX19tY2ZfZmFtaWx5XyogbWFjcm9zLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfY3BwX2NwdV9pZGVudCk6IE5ldyBmdW5jdGlvbi4KCShtNjhrX2NwcF9jcHVfZmFtaWx5KTogTGlrZXdpc2UuCgoyMDA3LTAxLTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBUcmVhdCBhbGwgbWM2OCoKCW1hY3JvcyBiZXNpZGVzIG1jNjgwMDAgYXMgdHVuaW5nIG1hY3Jvcy4gIFVzZSBhIHN3aXRjaCBzdGF0ZW1lbnQKCXRvIHNldCB0aGVtIGFuZCBtY3B1MzIuCgoyMDA3LTAxLTEyICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaDogVXNlIFRBUkdFVF82ODA0MCBpbnN0ZWFkIG9mIFRBUkdFVF82ODA0MF9PTkxZLgoJKFRBUkdFVF82ODA0MF9PTkxZKTogUmVuYW1lIHRvLi4uCgkoVEFSR0VUXzY4MDQwKTogLi4udGhpcy4KCSogY29uZmlnL202OGsvbTY4ay5jOiBVc2UgVEFSR0VUXzY4MDQwIGluc3RlYWQgb2YgVEFSR0VUXzY4MDQwX09OTFkuCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IExpa2V3aXNlLgoKMjAwNy0wMS0xMiAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG02ODBbMDEyXTAtKi0qLCBtNjhrKi0qLSopOiBTZXQgbTY4a19jcHVfaWRlbnQgdG8KCXRoZSAtbWNwdT0gYXJndW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSAtLXdpdGgtY3B1IHNldHRpbmcuCglEZWZpbmUgTTY4S19ERUZBVUxUX1RVTkUgdG8gdGhlIGRlZmF1bHQgLW10dW5lPSBvcHRpb24sCglpZiBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIGltcGxpZWQgYnkgdGhlIC1tY3B1IHNldHRpbmcuCglBY2NlcHQgLS13aXRoLWNwdT1GT08gaWYgRk9PIGlzIGxpc3RlZCBpbiBtNjhrLWRldmljZXMuZGVmLAoJdXNpbmcgbWNwdT1GT08gYXMgdGhlIGRlZmF1bHQgQ1BVIG9wdGlvbi4gIFNldCB0YXJnZXRfY3B1X2RlZmF1bHQyLgoJKiBkb2MvaW52b2tlLnRleGk6IE1lbnRpb24gQ29sZEZpcmUgaW4gdGhlIGludHJvZHVjdGlvbiB0byB0aGUKCW02OGsgb3B0aW9ucy4gIERvY3VtZW50IHRoZSBuZXcgLW1hcmNoLCAtbWNwdSwgLW10dW5lLCAtbWRpdiwKCS1tbm8tZGl2IGFuZCAtbWhhcmQtZmxvYXQgb3B0aW9ucy4gIE1ha2UgLW02ODg4MSBhIHN5bm9ueW0gZm9yCgktbWhhcmQtZmxvYXQuICBEb2N1bWVudCB0aGUgcHJldmlvdXNseS11bmRvY3VtZW50ZWQgLW01MjA2ZSwKCS1tNTI4eCwgLW01MzA3IGFuZCAtbTU0MDcgb3B0aW9ucy4gIFR3ZWFrIHRoZSBleGlzdGluZyBvcHRpb24KCWRvY3VtZW50YXRpb24gZm9yIGNvbnNpc3RlbmN5LgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBNZW50aW9uIG5ldyAtLXdpdGgtY3B1IGFyZ3VtZW50cy4KCSogY29uZmlnL202OGsvbTY4ay5oIChPUFRJT05fREVGQVVMVF9TUEVDUyk6IE9ubHkgdXNlIHRoZQoJZGVmYXVsdCBDUFUgaWYgbmVpdGhlciAtbWNwdSBub3IgLW1hcmNoIGFyZSBzcGVjaWZpZWQuCgkoQVNNX0NQVV9TUEVDKTogUGFzcyBkb3duIC1tY3B1IGFuZCAtbWFyY2ggb3B0aW9ucy4KCShUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IFNldCBfX21jZmlzYSpfXyBtYWNyb3MgZnJvbQoJVEFSR0VUX0lTQSouICBTZXQgdGhlIGxlZ2FjeSBfX21jZipfXyBjcHUgbWFjcm9zIGluIHRoZSBzYW1lIHdheSwKCXVzaW5nIG02OGtfdHVuZSB0byBkZWNpZGUgYmV0d2VlbiBmYW1pbGllcyB0aGF0IGltcGxlbWVudCB0aGUKCXNhbWUgSVNBLiAgVXNlIG02OGtfdHVuZSB0byBzZXQgX19tY2Z2NGVfXy4KCShGTF9CSVRGSUVMRCwgRkxfNjg4ODEsIEZMX0NPTERGSVJFLCBGTF9DRl9IV0RJViwgRkxfQ0ZfTUFDKQoJKEZMX0NGX0VNQUMsIEZMX0NGX0VNQUNfQiwgRkxfQ0ZfVVNQLCBGTF9DRl9GUFUsIEZMX0lTQV82ODAwMCkKCShGTF9JU0FfNjgwMTAsIEZMX0lTQV82ODAyMCwgRkxfSVNBXzY4MDQwLCBGTF9JU0FfQSwgRkxfSVNBX0IpCgkoRkxfSVNBX0MsIEZMX0lTQV9NTVUpOiBOZXcgbWFjcm9zLgoJKE1BU0tfQ09MREZJUkUpOiBEZWxldGUuCgkoVEFSR0VUXzY4MDEwLCBUQVJHRVRfNjgwMjAsIFRBUkdFVF82ODA0MF9PTkxZLCBUQVJHRVRfQ09MREZJUkUpCgkoVEFSR0VUX0lTQUIpOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiBtNjhrX2NwdV9mbGFncy4KCShUQVJHRVRfNjg4ODEsIFRBUkdFVF9DT0xERklSRV9GUFUpOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiBtNjhrX2ZwdS4KCShUQVJHRVRfSEFSRF9GTE9BVCk6IERvIG5vdCBkZWZpbmUgaGVyZS4KCShUQVJHRVRfSVNBQVBMVVMsIFRBUkdFVF9JU0FDKTogTmV3IG1hY3Jvcy4KCShUVU5FXzY4MDAwKTogTmV3IG1hY3JvLgoJKFRVTkVfNjgwMDBfMTApOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiBUVU5FXzY4MDAwIGFuZCBUVU5FXzY4MDEwLgoJKFRVTkVfNjgwMTAsIFRVTkVfNjgwMzAsIFRVTkVfNjgwNDAsIFRVTkVfNjgwNjAsIFRVTkVfQ1BVMzIpCgkoVFVORV9DRlYyKTogUmVkZWZpbmUgaW4gdGVybXMgb2YgbTY4a190dW5lLgoJKHVhcmNoX3R5cGUsIHRhcmdldF9kZXZpY2UsIGZwdV90eXBlKTogTmV3IGVudW1zLgoJKG02OGtfY3B1LCBtNjhrX3R1bmUsIG02OGtfZnB1LCBtNjhrX2NwdV9mbGFncyk6IERlY2xhcmUuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoVEFSR0VUX0RFRkFVTFQpOiBSZW1vdmUgTUFTS182ODg4MS4KCShGTF9GT1JfaXNhXzAwLCBGTF9GT1JfaXNhXzEwLCBGTF9GT1JfaXNhXzIwLCBGTF9GT1JfaXNhXzQwKQoJKEZMX0ZPUl9pc2FfY3B1MzIsIEZMX0ZPUl9pc2FfYSwgRkxfRk9SX2lzYV9hcGx1cywgRkxfRk9SX2lzYV9iKQoJKEZMX0ZPUl9pc2FfYyk6IE5ldyBtYWNyb3MuCgkobTY4a19pc2EpOiBOZXcgZW51bS4KCShtNjhrX3RhcmdldF9zZWxlY3Rpb24pOiBOZXcgc3RydWN0dXJlLgoJKGFsbF9kZXZpY2VzLCBhbGxfaXNhcywgYWxsX21pY3JvYXJjaHMpOiBOZXcgdGFibGVzLgoJKG02OGtfY3B1X2VudHJ5LCBtNjhrX2FyY2hfZW50cnksIG02OGtfdHVuZV9lbnRyeSwgbTY4a19jcHUpCgkobTY4a190dW5lLCBtNjhrX2ZwdSwgbTY4a19jcHVfZmxhZ3MpOiBOZXcgdmFyaWFibGVzLgoJKE1BU0tfQUxMX0NQVV9CSVRTKTogRGVsZXRlLgoJKG02OGtfZmluZF9zZWxlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkobTY4a19oYW5kbGVfb3B0aW9uKTogSGFuZGxlIC1tY3B1PSwgLW1hcmNoPSBhbmQgLW10dW5lPS4KCU1hcCB0aGUgbGVnYWN5IHRhcmdldCBvcHRpb25zIHRvIGEgY29tYmluYXRpb24gb2YgdGhlIG5ldyBvbmVzLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBTZXQgbTY4a19jcHUsIG02OGtfdHVuZSwgbTY4a19mcHUgYW5kCgltNjhrX2NwdV9mbGFncy4gIEhhbmRsZSBNNjhLX0RFRkFVTFRfVFVORS4gIFVzZSBtNjhrX2NwdV9mbGFncwoJdG8gZGVyaXZlIGRlZmF1bHQgTUFTS19CSVRGSUVMRCwgTUFTS19DRl9IV0RJViBhbmQgTUFTS19IQVJEX0ZMT0FUCglzZXR0aW5ncy4KCSogY29uZmlnL202OGsvbTY4ay5vcHQgKG01MjAwLCBtNTIwNmUsIG01Mjh4LCBtNTMwNywgbTU0MDcsIG1jZnY0ZSkKCShtNjgwMTAsIG02ODAyMCwgbTY4MDIwLTQwLCBtNjgwMjAtNjAsIG02ODAzMCwgbTY4MDQwKTogUmVtb3ZlIE1hc2sKCXByb3BlcnRpZXMuCgkobTY4ODgxLCBtc29mdC1mbG9hdCk6IENoYW5nZSBtYXNrIGZyb20gNjg4ODEgdG8gSEFSRF9GTE9BVC4KCShtYXJjaD0sIG1jcHU9LCBtZGl2LCBtaGFyZC1mbG9hdCwgbXR1bmU9KTogTmV3IG9wdGlvbnMuCgkqIGNvbmZpZy9tNjhrL202OGstZGV2aWNlcy5kZWY6IE5ldyBmaWxlLgoKMjAwNy0wMS0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoQVNNX0NQVV9TUEVDLCBBU01fU1BFQywgRVhUUkFfU1BFQ1MpCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogTmV3IG1hY3Jvcy4KCSogY29uZmlnL202OGsvbGludXguaCAoQVNNX1NQRUMpOiBSZW1vdmUgQ1BVIGZsYWdzOwoJdXNlICUoYXNtX2NwdV9zcGVjKSBpbnN0ZWFkLgoJKiBjb25maWcvbTY4ay9tNjhrLW5vbmUuaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvb3BlbmJzZC5oIChBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkoRVhUUkFfU1BFQ1MpOiBSZW5hbWUgdG8uLi4KCShTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiAuLi50aGlzLgoKMjAwNy0wMS0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG02OGstKi1hb3V0KiwgbTY4ay0qLWNvZmYqLCBtNjgwMjAtKi1lbGYqLCBtNjhrLSotZWxmKikKCShtNjhrLSotdWNsaW51eCosIG02OGstKi1saW51eCosIG02OGstKi1ydGVtcyopOiBTZXQgZGVmYXVsdF9tNjhrX2NwdQoJdG8gdGhlIGNvbmZpZ3VyYXRpb24ncyBkZWZhdWx0IENQVS4KCShtNjgwMTAtKi1uZXRic2RlbGYqLCBtNjhrKi0qLW5ldGJzZGVsZiosIG02OGsqLSotb3BlbmJzZCopOiBMaWtld2lzZS4KCVJlbW92ZSBkZWZhdWx0IG1hc2tzLgoJKG02ODBbMDEyXTAtKi0qKTogU2V0IHRoZSBkZWZhdWx0IHdpdGhfY3B1IHRvIHRoZSBmaXJzdCBwYXJ0IG9mCgl0aGUgdGFyZ2V0IG5hbWUuCgkobTY4ayotKi0qKTogU2V0IHRoZSBkZWZhdWx0IHdpdGhfY3B1IHRvIG0kZGVmYXVsdF9tNjhrX2NwdS4KCShtNjhrKi0qLWxpbnV4KTogRXh0ZW5kIHRoZSAtLXdpdGgtY3B1IGhhbmRsaW5nIHRvLi4uCgkobTY4MFswMTJdMC0qLSosIG02OGsqLSotKik6IC4uLnRoZXNlIGNvbmZpZ3VyYXRpb25zLiAgQWxsb3cgbTY4MDAwCglhbmQgbTY4MDEwLiAgRG9uJ3Qgc2V0IHRhcmdldF9jcHVfZGVmYXVsdDIuCgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IC0td2l0aC1jcHUgZm9yIG02OGsuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoT1BUSU9OX0RFRkFVTFRfU1BFQ1MpOiBEZWZpbmUuCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oIChUQVJHRVRfQ1BVX0RFRkFVTFQsIE02OEtfQ1BVX202OGspCgkoTTY4S19DUFVfbTY4MDAwLCBNNjhLX0NQVV9tNjgwMTAsIE02OEtfQ1BVX202ODAyMCwgTTY4S19DUFVfbTY4MDMwKQoJKE02OEtfQ1BVX202ODA0MCwgTTY4S19DUFVfbTY4MzAyLCBNNjhLX0NQVV9tNjgzMzIsIFRBUkdFVF9ERUZBVUxUKQoJKEFTTV9DUFVfREVGQVVMVF9TUEVDLCBDQzFfQ1BVX0RFRkFVTFRfU1BFQyk6IERlbGV0ZS4KCShBU01fU1BFQyk6IFJlbW92ZSB1c2Ugb2YgJShhc21fY3B1X2RlZmF1bHQpLgoJKEVYVFJBX1NQRUNTLCBTVUJUQVJHRVRfRVhUUkFfU1BFQ1MsIE1VTFRJTElCX0RFRkFVTFRTKTogRGVsZXRlLgoJKiBjb25maWcvbTY4ay9saW51eC5oIChUQVJHRVRfREVGQVVMVCk6IERlbGV0ZS4KCShDUFBfU1BFQyk6IE1lcmdlIGRlZmluaXRpb25zLiAgRG8gbm90IGhhbmRsZSBfX0hBVkVfNjg4ODFfXyBoZXJlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUKCV9fSEFWRV9GUFVfXyBpZiBUQVJHRVRfSEFSRF9GTE9BVC4KCShUQVJHRVRfREVGQVVMVCk6IERlbGV0ZS4KCShFWFRSQV9TUEVDUyk6IERlbGV0ZSBjcHBfY3B1X2RlZmF1bHRfc3BlYywgY3BwX2NwdV9zcGVjLAoJY3BwX2ZwdV9zcGVjLCBhc21fZGVmYXVsdF9zcGVjIGFuZCBuZXRic2RfY3BwX3NwZWMuCgkoQ1BQX0NQVV9TUEVDKTogRGVsZXRlLgoJKFRBUkdFVF9WRVJTSU9OKTogTWVyZ2UgZGVmaW5pdGlvbnMsIHVzaW5nIFRBUkdFVF82ODAxMCB0byBwaWNrCgl0aGUgYXBwcm9wcmlhdGUgc3RyaW5nLgoJKENQUF9DUFVfREVGQVVMVF9TUEVDLCBBU01fREVGQVVMVF9TUEVDLCBDUFBfRlBVX1NQRUMpOiBEZWxldGUuCgkoQ1BQX1NQRUMpOiBEZWZpbmUgdG8gTkVUQlNEX0NQUF9TUEVDLgoJKEFTTV9TUEVDKTogRG9uJ3QgdXNlICUoYXNtX2RlZmF1bHRfc3BlYykuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoVEFSR0VUX0RFRkFVTFRfVEFSR0VUX0ZMQUdTKTogUmVtb3ZlCglUQVJHRVRfREVGQVVMVCBhbmQgYWRkIE1BU0tfNjg4ODEuCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IFJlbW92ZSBtZW50aW9uIG9mIFRBUkdFVF9ERUZBVUxUIGZyb20gY29tbWVudHMuCgoyMDA3LTAxLTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG02ODAxMC0qLW5ldGJzZGVsZiopOiBBZGQgTUFTS182ODAxMC4KCShtNjhrKi0qLW5ldGJzZGVsZiosIG02OGsqLSotb3BlbmJzZCosIG02OGsqLWxpbnV4Kik6IEFkZAoJTUFTS182ODAxMCBhbG9uZ3NpZGUgTUFTS182ODAyMC4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbTY4MDEwLgoJKiBjb25maWcvbTY4ay9tNjhrLm9wdCAobTY4MDEwKTogTmV3LgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIG1jNjgwMTAKCWlmIFRVTkVfNjgwMTAuCgkoVFVORV82ODAxMCk6IE5ldyBtYWNyby4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmggKE02OEtfQ1BVX202OGssIE02OEtfQ1BVX202ODAxMCkKCShNNjhLX0NQVV9tNjgwMjAsIE02OEtfQ1BVX202ODAzMCwgTTY4S19DUFVfbTY4MDQwKQoJKE02OEtfQ1BVX202ODMzMik6IEFkZCBNQVNLXzY4MDEwLgoJKiBjb25maWcvbTY4ay9saW51eC5oIChUQVJHRVRfREVGQVVMVCk6IEFkZCBNQVNLXzY4MDEwIHRvCglmYWxsYmFjayBkZWZpbml0aW9uLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKENQUF9DUFVfU1BFQyk6IFJlbW92ZSBub3ctcmVkdW5kYW50CglkZWZpbmVzLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKE1BU0tfQUxMX0NQVV9CSVRTKTogQWRkIE1BU0tfNjgwMTAuCgkobTY4a19oYW5kbGVfb3B0aW9uKTogSGFuZGxlIE9QVF9tNjgwMTAuICBBZGQgTUFTS182ODAxMAoJdG8gYWxsIGVudHJpZXMgdGhhdCB1c2UgTUFTS182ODAyMC4KCShvdXRwdXRfbW92ZV9zaW1vZGVfY29uc3QsIG91dHB1dF9tb3ZlX2hpbW9kZSwgb3V0cHV0X21vdmVfcWltb2RlKQoJKG91dHB1dF9tb3ZlX3N0cmljdGhpLCBvdXRwdXRfbW92ZV9zdHJpY3RxaSk6IFVzZSBUQVJHRVRfNjgwMTAKCWluc3RlYWQgb2YgVEFSR0VUXzY4MDIwIHRvIHNlbGVjdCBjbHIgYmVoYXZpb3IuICBSZW1vdmUgY29tbWVudAoJYWJvdXQgdGhlcmUgYmVpbmcgbm8gVEFSR0VUXzY4MDEwLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBMaWtld2lzZSB0aHJvdWdob3V0LgoKMjAwNy0wMS0xMiAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF9JU0FCKTogTmV3IG1hY3JvLgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IFVzZSBUQVJHRVRfSVNBQiByYXRoZXIgdGhhbiBUQVJHRVRfQ0ZWNC4KCSogY29uZmlnL202OGsvbTY4ay5tZDogTGlrZXdpc2UuCgoyMDA3LTAxLTEyICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoTEVHSVRJTUFURV9JTkRFWF9QLCBMRUdJVElNSVpFX0FERFJFU1MpOiBVc2UKCVRBUkdFVF9DT0xERklSRV9GUFUgaW5zdGVhZCBvZiBUQVJHRVRfQ0ZWNEUuCgoyMDA3LTAxLTEyICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoVFVORV82ODA0MF82MCk6IE5ldyBtYWNyby4KCSogY29uZmlnL202OGsvbTY4ay5jIChzdGFuZGFyZF82ODg4MV9jb25zdGFudF9wKTogVXNlIGl0LgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBMaWtld2lzZS4KCjIwMDctMDEtMTIgIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IFVzZSBUVU5FXzY4MDMwCglpbnN0ZWFkIG9mIFRBUkdFVF82ODAzMCwgVFVORV82ODA0MCBpbnN0ZWFkIG9mIFRBUkdFVF82ODA0MCwKCVRVTkVfNjgwNjAgaW5zdGVhZCBvZiBUQVJHRVRfNjgwNjAgYW5kIFRVTkVfQ1BVMzIgaW5zdGVhZCBvZgoJVEFSR0VUX0NQVTMyLgoJKFRBUkdFVF9DUFUzMik6IFJlbmFtZSB0by4uLgoJKFRVTkVfQ1BVMzIpOiAuLi50aGlzLgoJKFRVTkVfNjgwMDBfMTAsIFRVTkVfNjgwMzAsIFRVTkVfNjgwNDAsIFRVTkVfNjgwNjApCgkoVFVORV9DRlYyKTogTmV3IG1hY3Jvcy4KCSogY29uZmlnL202OGsvbmV0YnNkLWVsZi5oIChMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBTaW1wbGlmeTsKCXJlbW92ZSBjb25kaXRpb25zIHRoYXQgYXJlIGltcGxpZWQgYnkgVEFSR0VUXzY4MDIwLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogVXNlIFRVTkVfNjgwNDAKCWluc3RlYWQgb2YgVEFSR0VUXzY4MDQwIGFuZCBUVU5FX0NQVTMyIGluc3RlYWQgb2YgVEFSR0VUX0NQVTMyLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkobTY4a19ydHhfY29zdHMpOiBMaWtld2lzZS4gIFVzZSBUVU5FXzY4MDYwIGluc3RlYWQgb2YgVEFSR0VUXzY4MDYwCglhbmQgVFVORV9DRlYyIGluc3RlYWQgb2YgVEFSR0VUXzUyMDAuICBVc2UgVFVORV82ODAwMF8xMCBpbnN0ZWFkIG9mCgkiIVRBUkdFVF82ODAyMCAmJiAhVEFSR0VUX0NPTERGSVJFIiB0byBjaG9vc2UgYmV0d2VlbiA2ODAwMCBhbmQKCW5vbi02ODAwMCB0aW1pbmdzLiAgUmVmYWN0b3IgbXVsdGlwbGljYXRpb24gYW5kIGRpdmlzaW9uIGNvc3RzLgoJKG91dHB1dF9hZGRzaTMpOiBVc2UgVFVORV82ODA0MCBpbnN0ZWFkIG9mIFRBUkdFVF82ODA0MCBhbmQKCVRVTkVfQ1BVMzIgaW5zdGVhZCBvZiBUQVJHRVRfQ1BVMzIuCgkoc3RhbmRhcmRfNjg4ODFfY29uc3RhbnRfcCk6IFVzZSBUVU5FXzY4MDQwIGluc3RlYWQgb2YgVEFSR0VUXzY4MDQwCglhbmQgVFVORV82ODA2MCBpbnN0ZWFkIG9mIFRBUkdFVF82ODA2MC4KCSogY29uZmlnL202OGsvbTY4ay5tZDogVXNlIFRVTkVfNjgwNDAgaW5zdGVhZCBvZiBUQVJHRVRfNjgwNDAsCglUVU5FXzY4MDYwIGluc3RlYWQgb2YgVEFSR0VUXzY4MDYwLCBhbmQgVFVORV9DUFUzMiBpbnN0ZWFkIG9mCglUQVJHRVRfQ1BVMzIuCgkobW92c2lfY29uc3QwKTogVXNlIFRVTkVfNjgwMDBfMTAgcmF0aGVyIHRoYW4gIiFUQVJHRVRfNjgwMjAKCSYmICFUQVJHRVRfQ09MREZJUkUiIHRvIGNob29zZSBiZXR3ZWVuIG1vdmVxIGFuZCBjbHIuCglMaWtld2lzZSBpbiB0aGUgdW5uYW1lZCBtb3ZzZiBwYXR0ZXJuLgoJKGFzaGxzaV8xN18yNCwgbHNocnNpXzE3XzI0KTogR3VhcmQgd2l0aCBUVU5FXzY4MDAwXzEwIHJhdGhlciB0aGFuCgkiIVRBUkdFVF82ODAyMCAmJiAhVEFSR0VUX0NPTERGSVJFIi4gIExpa2V3aXNlIHRoZSB1bm5hbWVkCglhc2hpZnRydCBwYXR0ZXJuLgoKMjAwNy0wMS0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogSW5jcmVhc2UgYW1vdW50CglvZiB0YWJiaW5nIGJlZm9yZSBiYWNrc2xhc2hlcy4KCjIwMDctMDEtMTEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS1saW51eC5oIChBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMKTogVW5kZWZpbmUuCgkqIHBhLmggKEFTTV9PVVRQVVRfTEFCRUwpOiBPdXRwdXQgY29sb24gd2hlbiB1c2luZyBHQVMuCgkoQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCk6IERlZmluZS4KCjIwMDctMDEtMTEgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGV4dHJhY3RfY29uZF9vcGVyYW5kcyk6IFNwbGl0IGZyb20KCWZpbmRfaW50ZXJlc3RpbmdfdXNlc19jb25kLgoJKGZpbmRfaW50ZXJlc3RpbmdfdXNlc19jb25kKTogVXNlIGV4dHJhY3RfY29uZF9vcGVyYW5kcy4KCShyZXdyaXRlX3VzZV9jb21wYXJlKTogVXNlIGV4dHJhY3RfY29uZF9vcGVyYW5kcyBhbmQKCWZvcmNlX2dpbXBsZV9vcGVyYW5kX2JzaS4gIERvIG5vdCBjYWxsIHVwZGF0ZV9zdG10LgoJKGRldGVybWluZV91c2VfaXZfY29zdF9jb25kaXRpb24pOiBVc2UgZXh0cmFjdF9jb25kX29wZXJhbmRzLgoJUmV0dXJuIGNoZWFwZXIgb2YgdXNpbmcgb3JpZ2luYWwgYm91bmQgYW5kIGNoYW5naW5nIHRoZSBleGl0IGJvdW5kLgoKMjAwNy0wMS0xMSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI5NTE2CgkqIHRyZWUtc3NhLWFkZHJlc3MuYyAodHJlZV9tZW1fcmVmX2FkZHIsIGFkZF90b19wYXJ0cywKCW1vc3RfZXhwZW5zaXZlX211bHRfdG9faW5kZXgsIGFkZHJfdG9fcGFydHMsCgljcmVhdGVfbWVtX3JlZiwgbWF5YmVfZm9sZF90bXIpOiBNYWtlIHRoZSB0eXBlIG9mCglmaWVsZHMgb2YgVEFSR0VUX01FTV9SRUYgc2l6ZXR5cGUuCgkobW92ZV9maXhlZF9hZGRyZXNzX3RvX3N5bWJvbCwgbW92ZV9wb2ludGVyX3RvX2Jhc2UpOgoJTmV3IGZ1bmN0aW9ucy4KCSogdHJlZS5kZWYgKFRBUkdFVF9NRU1fUkVGKTogQWRkIGNvbW1lbnQgb24gdHlwZXMgb2YKCXRoZSBvcGVyYW5kcy4KCjIwMDctMDEtMTEgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAodmVjdG9yX3R5cGVzX2NvbnZlcnRpYmxlX3ApOiBUcmVhdCBvcGFxdWUgdHlwZXMgYXMKCWFsd2F5cyBjb252ZXJ0aWJsZSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgc2l6ZSwgYnV0IG5vdCBvdGhlcndpc2UuCgoyMDA3LTAxLTExICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBpZmN2dC5jIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvKTogQWRkIGNvbW1lbnRzIHRvIHRoZSBmaWVsZHMuCglSZW1vdmUgdGhlIGJfdW5jb25kaXRpb25hbCBmaWVsZC4KCShub2NlX3RyeV9zaWduX21hc2spOiBEbyBub3QgbG9vayBhdCBiX3VuY29uZGl0aW9uYWwuCgkobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogRG8gbm90IHVzZSBtZXJnZV9pZl9ibG9ja3MuICBVcGRhdGUKCXRoZSBDRkcgaGVyZS4gIERvIG5vdCBzZXQgYl91bmNvbmRpdGlvbmFsLgoJKGNvbmRfbW92ZV9wcm9jZXNzX2lmX2Jsb2NrKTogTGlrZXdpc2UuCgkoZmluZF9jb25kX3RyYXApOiBMaWtld2lzZS4KCShjaGVja19jb25kX21vdmVfYmxvY2spOiBSZXF1aXJlIHNpbXBsZSBqdW1wIGluc25zIGF0IHRoZSBlbmQKCW9mIHRoZSBiYXNpYyBibG9jay4KCjIwMDctMDEtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xMDQ2CgkqIHRyZWUtdGFpbGNhbGwuYyAoc3VpdGFibGVfZm9yX3RhaWxfY2FsbF9vcHRfcCk6IFVzZSBUUkVFX0FERFJFU1NBQkxFCgl3aGVuIGFsaWFzIGluZm8gaXMgbm90IHJlYWR5LgoJKHBhc3NfdGFpbF9yZWN1cnNpb24pOiBEbyBub3QgcmVxdWlyZSBhbGlhc2luZy4KCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChwYXNzX3JlbmFtZV9zc2FfY29wKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWNjcC5jIChwYXNzX2NjcCwgcGFzc19mb2xkX2J1aWx0aW5zKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWNvcHkuYyAocGFzc19jb3B5X3Byb3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAocGFzc19mb3J3cHJvcCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kY2UuYyAocGFzc19kY2UsIHBhc3NfZGNlX2xvb3AsIHBhc3NfY2RfZGNlKTogTGlrZXdpc2UuCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBFeGVjdXRlIHJlbmFtZV9zc2FfY29waWVzLAoJY2NwLCBmb3J3cHJvcCwgY29weV9wcm9wLCBtZXJnZV9waGksIGNvcHlfcHJvcCwgZGNlIGFuZCB0YWlsIHJlY3Vyc2lvbgoJYmVmb3JlIGlubGluaW5nLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmlydHVhbF9vcGVyYW5kLCBnZXRfaW5kaXJlY3RfcmVmX29wZXJhbmQpOgoJV2hlbiBhbGlhc2luZyBpcyBub3QgYnVpbGQsIG1hcmsgc3RhdGVtZW50IGFzIHZvbGF0aWxlLgoKMjAwNy0wMS0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIHByZXByb2Nlc3Nvci8xNTE4NQoJUFIgcHJlcHJvY2Vzc29yLzIwOTg5CgkqIGRvYy9jcHBvcHRzLnRleGkgPC1NVD46IFVwZGF0ZSBkZXNjcmlwdGlvbiBvZiBhbGdvcml0aG0gZm9yCgljb21wdXRpbmcgZGVmYXVsdCB0YXJnZXQuCgk8LU0sIC1NRD46IFJld29yZCAiYmFzZW5hbWUiIHRleHQuCgoyMDA3LTAxLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3BvdywgZXhwYW5kX2J1aWx0aW5fcG93aSwKCWZvbGRfYnVpbHRpbl9jYWJzLCBmb2xkX2J1aWx0aW5fc3FydCwgZm9sZF9idWlsdGluX3RydW5jLAoJZm9sZF9idWlsdGluX2Zsb29yLCBmb2xkX2J1aWx0aW5fY2VpbCwgZm9sZF9idWlsdGluX3JvdW5kLAoJZm9sZF9idWlsdGluX2ludF9pbnRfcm91bmRpbmdmbiwgZm9sZF9idWlsdGluX2JpdG9wLAoJZm9sZF9idWlsdGluX2Jzd2FwLCByZWFsX2NvbnN0cCwgZm9sZF9idWlsdGluX3BvdywKCWZvbGRfYnVpbHRpbl9wb3dpLCBmb2xkX2J1aWx0aW5fc2lnbmJpdCwgZm9sZF9idWlsdGluX2NvcHlzaWduLAoJZG9fbXBmcl9hcmcxLCBkb19tcGZyX2FyZzIsIGRvX21wZnJfYXJnMywgZG9fbXBmcl9zaW5jb3MpOiBSZXBsYWNlCgl1c2VzIG9mIHRoZSBtYWNybyBUUkVFX0NPTlNUQU5UX09WRVJGTE9XIHdpdGggVFJFRV9PVkVSRkxPVy4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCSogZXhwci5jIChoaWdoZXN0X3BvdzJfZmFjdG9yLCBleHBhbmRfZXhwcl9yZWFsXzEpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChmb3JjZV9maXRfdHlwZSwgZm9sZF9uZWdhdGVfZXhwciwgaW50X2NvbnN0X2Jpbm9wLAoJY29uc3RfYmlub3AsIGZvbGRfY29udmVydF9jb25zdF9pbnRfZnJvbV9pbnQsCglmb2xkX2NvbnZlcnRfY29uc3RfaW50X2Zyb21fcmVhbCwKCWZvbGRfY29udmVydF9jb25zdF9yZWFsX2Zyb21fcmVhbCwgc2lnbl9iaXRfcCwKCW9wdGltaXplX21pbm1heF9jb21wYXJpc29uLCBleHRyYWN0X211bGRpdl8xLCBmb2xkX2Rpdl9jb21wYXJlLAoJZm9sZF9zaWduX2NoYW5nZWRfY29tcGFyaXNvbiwgZm9sZF91bmFyeSwgZm9sZF9jb21wYXJpc29uLAoJZm9sZF9iaW5hcnksIG11bHRpcGxlX29mX3AsIHRyZWVfRXhwcl9ub25femVyb19wLAoJZm9sZF9uZWdhdGVfY29uc3QsIGZvbGRfYWJzX2NvbnN0LCBmb2xkX25vdF9jb25zdCk6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGVfYnJpZWYsIHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYyAocGxhY2VfZmllbGQsIGxheW91dF90eXBlKTogTGlrZXdpc2UuCgkqIHRyZWUtY2hyZWMuYyAoa2VlcF9jYXN0KTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGRfdmVjdG9yLCBidWlsZF9yZWFsLCBidWlsZF9yZWFsX2Zyb21faW50X2NzdCwKCWJ1aWxkX2NvbXBsZXgpOiBMaWtld2lzZS4KCjIwMDctMDEtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJlZS5oIChUUkVFX0NPTlNUQU5UX09WRVJGTE9XKTogT2Jzb2xldGUuICBGb3IgdGhlIHRpbWUgYmVpbmcsCgl0cmVhdCBUUkVFX0NPTlNUQU5UX09WRVJGTE9XIGFzIGEgc3lub255bSBvZiBUUkVFX09WRVJGTE9XLgoKMjAwNy0wMS0xMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYyAoc3RyaWN0MV93YXJuKTogUmVuYW1lIHRvIHN0cmljdF93YXJuLgoJKFdFUlJPUiwgLS1lbmFibGUtd2Vycm9yLCBzeW1saW5rIGhhY2tzLCBzdGFnZTFfY2ZsYWdzLAoJY2Nfc2V0X2J5X2NvbmZpZ3VyZSwgcXVvdGVkX2NjX3NldF9ieV9jb25maWd1cmUsCglzdGFnZV9wcmVmaXhfc2V0X2J5X2NvbmZpZ3VyZSwgcXVvdGVkX3N0YWdlX3ByZWZpeF9zZXRfYnlfY29uZmlndXJlLAoJYWxsX2Jvb3RfbGFuZ3VhZ2VzLCBhbGxfc3RhZ2VzdHVmZik6IFJlbW92ZS4KCSh0YXJnZXRfbGlzdCk6IFJlbW92ZSBib290c3RyYXAgdGFyZ2V0cy4KCSogTWFrZWZpbGUuaW4gKHF1aWNrc3RyYXApOiBVbmNvbmRpdGlvbmFsbHkgbWFrZSBhIHN5bm9ueW0gb2YgYWxsLgoJKEJPT1RfTEFOR1VBR0VTLCBTVEFHRTFfQ0ZMQUdTLCBTVEFHRTFfQ0hFQ0tJTkcsCglSRU1BS0VGTEFHUywgRkxBR1NfVE9fUEFTUywgUFJFUEVORF9ET1RET1RfVE9fUkVMQVRJVkVfUEFUSFMsCglTVUJESVJfRkxBR1NfVE9fUEFTUywgV0VSUk9SX0ZMQUdTLCBTVFJJQ1QyX1dBUk4sIExBTkdfU1RBR0VTVFVGRiwKCVZPTF9GSUxFUywgUE9TVFNUQUdFMV9GTEFHU19UT19QQVNTLCBTVEFHRTJfRkxBR1NfVE9fUEFTUywKCVNUQUdFUFJPRklMRV9GTEFHU19UT19QQVNTLCBTVEFHRUZFRURCQUNLX0ZMQUdTX1RPX1BBU1MsIHN0YWdlMV9idWlsZCwKCXN0YWdlMV9jb3B5LCBzdGFnZTJfYnVpbGQsIHN0YWdlMl9jb3B5LCBzdGFnZXByb2ZpbGVfYnVpbGQsCglzdGFnZXByb2ZpbGVfY29weSwgc3RhZ2UzX2J1aWxkLCBzdGFnZTNfY29weSwgc3RhZ2VmZWVkYmFja19idWlsZCwKCXN0YWdlZmVlZGJhY2tfY29weSwgc3RhZ2U0X2J1aWxkLCBjbGVhbl9zMSwgY2xlYW5fc3csIGJvb3RzdHJhcCwKCWJvb3RzdHJhcC1sZWFuLCBib290c3RyYXAyLCBib290c3RyYXAyLWxlYW4sIGJvb3RzdHJhcDMsCglib290c3RyYXAzLWxlYW4sIGJvb3RzdHJhcDQsIGJvb3RzdHJhcDQtbGVhbiwgdW5zdGFnZTEsIHVuc3RhZ2UyLAoJdW5zdGFnZTMsIHVuc3RhZ2U0LCB1bnN0YWdlcHJvZmlsZSwgdW5zdGFnZWZlZWRiYWNrLCByZXN0YWdlLCByZXN0YWdlMiwKCXJlc3RhZ2UzLCByZXN0YWdlNCwgcmVzdGFnZXByb2ZpbGUsIHJlc3RhZ2VmZWVkYmFjaywgYnViYmxlZXN0cmFwLAoJY2xlYW5zdHJhcCwgdW5zdHJhcCwgcmVzdHJhcCwgKmNvbXBhcmUsICpjb21wYXJlMywgKmNvbXBhcmU0LAoJKmNvbXBhcmUtbGVhbiwgKmNvbXBhcmUzLWxlYW4sICpjb21wYXJlNC1sZWFuLCBzdGFnZTEtc3RhcnQsIHN0YWdlMSwKCXN0YWdlMi1zdGFydCwgc3RhZ2UyLCBzdGFnZTMtc3RhcnQsIHN0YWdlMywgc3RhZ2U0LXN0YXJ0LCBzdGFnZTQsCglzdGFnZXByb2ZpbGUtc3RhcnQsIHN0YWdlcHJvZmlsZSwgc3RhZ2VmZWVkYmFjay1zdGFydCwgc3RhZ2VmZWVkYmFjaywKCXJpc2t5LXN0YWdlMSwgcmlza3ktc3RhZ2UyLCByaXNreS1zdGFnZTMsIHJpc2t5LXN0YWdlNCk6IFJlbW92ZS4KCShPUkRJTkFSWV9GTEFHU19UT19QQVNTKTogUmVuYW1lIHRvIEZMQUdTX1RPX1BBU1MuCgkoU1RBR0VDT1BZU1RVRkYsIFNUQUdFTU9WRVNUVUZGKTogQ29uc29saWRhdGUgaW50byBNT1NUTFlDTEVBTkZJTEVTLgoJKG1vc3RseWNsZWFuKTogQWRqdXN0LgoJKGNsZWFuLCBkaXN0Y2xlYW4pOiBEb24ndCBtZW50aW9uIGJvb3RzdHJhcCBzdHVmZi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBhZGEvY29uZmlnLWxhbmcuaW4sIGNwL2NvbmZpZy1sYW5nLmluLCBmb3J0dHJhbi9jb25maWctbGFuZy5pbiwKCWphdmEvY29uZmlnLWxhbmcuaW4sIG9iamMvY29uZmlnLWxhbmcuaW4sIG9iamNwL2NvbmZpZy1sYW5nLmluLAoJdHJlZWxhbmcvY29uZmlnLWxhbmcuaW4gKHN0YWdlc3R1ZmYpOiBSZW1vdmUuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChzdGFnZTEsIHN0YWdlMiwgc3RhZ2UzLCBzdGFnZTQsCglzdGFnZXByb2ZpbGUsIHN0YWdlZmVlZGJhY2ssIHN0YWdlc3R1ZmYpOiBSZW1vdmUgbWVudGlvbi4KCjIwMDctMDEtMTEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWNvcmUvcHJlZGljYXRlcy5tZCAobWNvcmVfZ2VuZXJhbF9tb3Zlc3JjX29wZXJhbmQpOgoJQWNjZXB0IENPTlNUcy4KCShtY29yZV9nZW5lcmFsX21vdmRzdF9vcGVyYW5kKTogRG8gbm90IGFjY2VwdCBDT05TVF9JTlRzLgoJKG1jb3JlX2FyaXRoX0tfU19vcGVyYW5kKTogUnVuIHRoZSB0ZXN0IGZvciB0aGUgUyBjb25zdHJhaW50IG5vdAoJdGhlIHRlc3QgZm9yIHRoZSBNIGNvbnN0cmFpbnQuCgkobWNvcmVfYWRkc3ViX29wZXJhbmQpOiBEbyBub3QgYWNjZXB0IGludGVnZXIgdmFsdWVzIHRoYXQgYXJlCglsYXJnZXIgdGhhbiAzMiBiaXRzLgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQ6IFJlbW92ZSB1bnVzZWQgY29uc3RyYWludHMgZnJvbSBzcGxpdC4KCShhbmRzaTMpOiBVc2UgSE9TVF9XSURFX0lOVCBpbnN0ZWFkIG9mIGludCB0byBob2xkIGFuIElOVFZBTC4KCShhZGRzaTMpOiBMaWtld2lzZS4KCShhbGxvY2F0ZV9zdGFjayk6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAobWNvcmVfcHJpbnRfb3BlcmFuZCk6IFJlc3RyaWN0IG91dHB1dCBvZiBQCglvcGVyYW5kcyB0byAzMiBiaXRzLgoJKG1jb3JlX2NvbnN0X2Nvc3RzKTogVXNlIEhPU1RfV0lERV9JTlQgaW5zdGVhZCBvZiBpbnQgdG8gaG9sZCBhbgoJSU5UVkFMLgoJKG1jb3JlX2FuZF9jb3N0LCBtY29yZV9tb2RpZnlfY29tcGFyaXNvbiwgY29uc3Rfb2tfZm9yX21jb3JlLAoJbWNvcmVfY29uc3Rfb2tfZm9yX2lubGluZSwgbWNvcmVfY29uc3RfdHJpY2tfdXNlc19ub3QsCgl0cnlfY29uc3RhbnRfdHJpY2tzLCBtY29yZV9udW1fb25lcywgbWNvcmVfbnVtX3plcm9zLAoJbWNvcmVfb3V0cHV0X2JjbHJpLCBtY29yZV9vdXRwdXRfYW5kbiwgb3V0cHV0X2lubGluZV9jb25zdCwKCW1jb3JlX291dHB1dF9tb3ZlLCBtY29yZV9vdXRwdXRfbW92ZWRvdWJsZSk6IExpa2V3aXNlLgoJKG1jb3JlX291dHB1dF9jbW92KTogVXNlIENPTlNUX09LX0ZPUl9NIGFuZCBDT05TVF9PS19GT1JfTi4KCShvdXRwdXRfaW5saW5lX2NvbnN0KTogTGlrZXdpc2UuCgkob3V0cHV0X2lubGluZV9jb25zdCk6IEZpeCBmb3JtYXQgc3RyaW5ncyB1c2VkIGluIHNwcmludGYKCXN0YXRlbWVudHMuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaDogVXBkYXRlIHByb3RvdHlwZXMgZm9yIGNoYW5nZWQKCWZ1bmN0aW9ucyBpbiBtY29yZS5jLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaCAoQ09OU1RfT0tfRk9SX0kpOiBDYXN0IHZhbHVlcyB0bwoJSE9TVF9XSURFX0lOVCBhbmQgbm90IGludC4KCShDT05TVF9PS19GT1JfSiwgQ09OU1RfT0tfRk9SX0ssIENPTlNUX09LX0ZPUl9MLCBDT05TVF9PS19GT1JfTSwKCUNPTlNUX09LX0ZPUl9OKTogTGlrZXdpc2UuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogQWxzbyBjaGVjayBDT05TVEFOVF9QLgoJKEdPX0lGX0xFR0lUSU1BVEVfSU5ERVgpOiBVc2UgSE9TVF9XSURFX0lOVCBpbnN0ZWFkIG9mIGludCB0byBob2xkCglhbiBJTlRWQUwuCgoyMDA3LTAxLTEwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXZycC5jIChyZW1vdmVfcmFuZ2VfYXNzZXJ0aW9ucyk6IFJlbGVhc2UgZGVmcy4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAocm1lb3ZlX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAocmVtb3ZlX3N0bXRfb3JfcGhpKTogTGlrZXdpc2UuCgoyMDA3LTAxLTEwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3J0eF9jb3N0c18xKTogSGFuZGxlIG11dGlwbHktc3VidHJhY3QuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChtdWxzaTNzdWJzaSk6IE5ldyBpbnNuLgoKMjAwNy0wMS0xMCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jICh0cmVlX3Vucm9sbF9sb29wKTogTWFrZSBpdCBhIHdyYXBwZXIgb3ZlciAuLi4KCSh0cmVlX3RyYW5zZm9ybV9hbmRfdW5yb2xsX2xvb3ApOiBOZXcuCgkqIHRyZWUtZmxvdy5oICh0cmFuc2Zvcm1fY2FsbGJhY2ssIHRyZWVfdHJhbnNmb3JtX2FuZF91bnJvbGxfbG9vcCk6CglEZWNsYXJlLgoKMjAwNy0wMS0xMCAgUm9iZXJ0IEtlbm5lZHkgPGppbWJvYkBnb29nbGUuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbXBhcmlzb24pOiBGb2xkIGNvbXBhcmlzb25zIGxpa2UgKHggKgoJMTAwMCA8IDApIHRvICh4IDwgMCkuCgoyMDA3LTAxLTEwICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBQcmludCBwYXJlbnRoZXNlcyB3aGVuCglvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LgoKMjAwNy0wMS0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX3RydXRob3ApOiBEb24ndCBjaGVjayBjYW5fdXNlX2JpdF9maWVsZHNfcC4KCShmb2xkX2JpbmFyeSk6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuYyAobGhkX2Nhbl91c2VfYml0X2ZpZWxkc19wKTogUmVtb3ZlZC4KCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfY2FuX3VzZV9iaXRfZmllbGRzX3ApOiBSZW1vdmVkLgoJKExBTkdfSE9PS1NfQ0FOX1VTRV9CSVRfRklFTERTX1ApOiBSZW1vdmVkLgoJKExBTkdfSE9PS1NfSU5JVElBTElaRVIpOiBSZW1vdmUgTEFOR19IT09LU19DQU5fVVNFX0JJVF9GSUVMRFNfUC4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogUmVtb3ZlZCBmaWVsZAoJJ2Nhbl91c2VfYml0X2ZpZWxkc19wJy4KCjIwMDctMDEtMTAgIFJhbGYgQ29yc8PCqXBpdXMgPHJhbGYuY29yc2VwaXVzQHJ0ZW1zLm9yZz4KCgkqIGNvbmZpZy9iZmluL3QtYmZpbiwgY29uZmlnL2JmaW4vdC1iZmluLWVsZjogUmVtb3ZlIEdDQ19DRkxBR1MuCgoyMDA3LTAxLTEwICBSYXp5YSBMYWRlbHNreSAgPHJhenlhQGlsLmlibS5jb20+CgoJKiBmdW5jdGlvbi5jIChnZXRfbGFzdF9mdW5jZGVmX25vKTogTmV3IGZ1bmN0aW9uLgoJKiBmdW5jdGlvbi5oIChnZXRfbGFzdF9mdW5jZGVmX25vKTogRGVjbGFyZS4KCSogdHJlZS1pbmxpbmUuYyAoaW5pdGlhbGl6ZV9jZnVuKTogQWRkIGluaXRpYWxpemF0aW9uLgoJKHRyZWVfZnVuY3Rpb25fdmVyc2lvbmluZyk6IENsZWFudXAuCgoyMDA3LTAxLTEwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLWlubGluZS5jIChzZXR1cF9vbmVfcGFyYW1ldGVyKTogRG8gbm90IHByb3BhZ2F0ZSBpbnRvIGFibm9ybWFsCglQSElzLgoKMjAwNy0wMS0xMCAgU2EgTGl1ICA8c2FsaXVAZGUuaWJtLmNvbT4KCSAgICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHNwdS5oIChTVEFDS19TQVZFX0FSRUEpOiBVc2UgVk9JRG1vZGUgZm9yIFNBVkVfRlVOQ1RJT04sIFNJbW9kZQoJZm9yIFNBVkVfTk9OTE9DQUwgYW5kIFBtb2RlIGZvciBhbnkgb3RoZXIgc2F2ZSBsZXZlbC4KCSogc3B1LXByb3Rvcy5oIChzcHVfcmVzdG9yZV9zdGFja19ibG9jayk6IERlY2xhcmUuCgkqIHNwdS5tZCAoc2F2ZV9zdGFja19ibG9jayk6IFJlbW92ZS4KCShyZXN0b3JlX3N0YWNrX2Jsb2NrKTogQ2FsbCBzcHVfcmVzdG9yZV9zdGFja19ibG9jay4KCSogc3B1LmMgKHNwdV9yZXN0b3JlX3N0YWNrX2Jsb2NrKTogTmV3IGZ1bmN0aW9uLgoJKHNwdV9leHBhbmRfZXBpbG9ndWUpOiBSZW1vdmUgb2xkIGNvbW1lbnQuCgoyMDA3LTAxLTA5ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzAzMjIKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZm9sZF9hZmZpbmVfZXhwciwgaXZfdmFsdWUpOiBSZW1vdmVkLgoJKGNhbmRfdmFsdWVfYXQpOiBSZXR1cm4gdGhlIHZhbHVlIGFzIGFmZl90cmVlLgoJKG1heV9lbGltaW5hdGVfaXYpOiBDb252ZXJ0IHRoZSBib3VuZCBmcm9tIGFmZl90cmVlIHRvIHRyZWUuCgkqIHRyZWUtYWZmaW5lLmMgKGFmZl9jb21iaW5hdGlvbl9hZGRfY3N0LCBhZmZfY29tYmluYXRpb25fYWRkX3Byb2R1Y3QsCglhZmZfY29tYmluYXRpb25fbXVsdCk6IE5ldyBmdW5jdGlvbnMuCgkoYWZmX2NvbWJpbmF0aW9uX2FkZCk6IFVzZSBhZmZfY29tYmluYXRpb25fYWRkX2NzdC4KCShhZmZfY29tYmluYXRpb25fY29udmVydCk6IEFsbG93IGNvbnZlcnNpb25zIHRvIGEgd2lkZXIgdHlwZS4KCSh0cmVlX3RvX2FmZl9jb21iaW5hdGlvbik6IEhhbmRsZSBCSVRfTk9UX0VYUFIuCgkqIHRyZWUtYWZmaW5lLmggKGFmZl9jb21iaW5hdGlvbl9tdWx0KTogRGVjbGFyZS4KCjIwMDctMDEtMDkgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3RtLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgcmVhbGl0eSBvZiBleGVjCglhbmQgc3RhcnQgZmlsZSBzZWFyY2ggYmVoYXZpb3Vycy4gVXBkYXRlIGNvcHlyaWdodCB5ZWFyLgoJKiBkb2MvaW52b2tlLnRleGk6IEV4cGxhaW4gaG93IEdDQ19FWEVDX1BSRUZJWCBpcyB1c2VkIHRvIGZpbmQKCWhlYWRlciBmaWxlIGRpcmVjdG9yaWVzLgoKMjAwNy0wMS0wOSAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpzaW54ZjIpOiBSZW5hbWUgdG8gKnNpbnhmMl9pMzg3LgoJKCpjb3N4ZjIpOiBSZW5hbWUgdG8gY29zeGYyX2kzODcuCgkoKnNpbmRmMiwgKnNpbnNmMik6IEV4dGVuZCBvcGVyYW5kIDEgdG8gWEZtb2RlLiAgTWFjcm9pemUgcGF0dGVybnMKCXVzaW5nIFg4N01PREVGMTIgbW9kZSBtYWNyby4gUmVuYW1lIHBhdHRlcm5zIHRvCgkqc2luX2V4dGVuZDxtb2RlPnhmMl9pMzg3LiAgVXNlIFNTRV9GTE9BVF9NT0RFX1AgdG8gZGlzYWJsZSBwYXR0ZXJucwoJZm9yIFNTRSBtYXRoLgoJKCpjb3NkZjIsICpjb3NzZjIpOiBEaXR0by4KCShzaW5jb3NkZjMsIHNpbmNvc3NmMyk6IERpdHRvLiAgUmV3cml0ZSBjb3JyZXNwb25kaW5nIHNwbGl0dGVycwoJdG8gbWF0Y2ggZXh0ZW5kZWQgaW5wdXQgb3BlcmFuZHMuCgkoc2luY29zPG1vZGU+Myk6IE5ldyBleHBhbmRlci4KCSgqc2luZXh0ZW5kc2ZkZjIsICpjb3NleHRlbmRzZmRmMiwgKnNpbmNvc2V4dGVuZHNmZGYzKTogUmVtb3ZlCglpbnNuIHBhdHRlcm5zIGFuZCBjb3JyZXNwb25kaW5nIHNwbGl0dGVycy4KCjIwMDctMDEtMDkgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3QtbGludXggKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IERlbGV0ZS4KCShTSExJQl9NQVBGSUxFUywgU0hMSUJfTElOSywgU0hMSUJfSU5TVEFMTCk6IExpa2V3aXNlLgoKMjAwNy0wMS0wOSAgTmljb2xhcyBQaXRyZSAgPG5pY29AY2FtLm9yZz4KCglQUiB0YXJnZXQvMzAxNzMKCSogYXJtL2llZWU3NTQtZGYuUyAoTGFkX3MpOiBBbHNvIHRlc3QgdGhlIGxvdyB3b3JkIG9mIFggZm9yIHplcm8uCgoyMDA3LTAxLTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IE5ldyBmaWVsZCBsaWJyYXJ5X3J0dGlfY29tZGF0LgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9DWFhfTElCUkFSWV9SVFRJX0NPTURBVCk6IE5ldy4KCShUQVJHRVRfQ1hYKTogQWRkIFRBUkdFVF9DWFhfTElCUkFSWV9SVFRJX0NPTURBVC4KCSogZG9jL3RtLnRleGkgKEMrKyBBQkkpOiBEb2N1bWVudCBUQVJHRVRfQ1hYX0xJQlJBUllfUlRUSV9DT01EQVQuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoVEFSR0VUX0NYWF9MSUJSQVJZX1JUVElfQ09NREFUKTogRGVmaW5lLgoKMjAwNy0wMS0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGltaXplIE9wdGlvbnMpOiBDb3JyZWN0IGRlc2NyaXB0aW9uIG9mIC1PMC4KCjIwMDctMDEtMDggIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUuaCAoZm9yY2VfZml0X3R5cGVfZG91YmxlKTogRXhwb3J0LgoJKGZvcmNlX2ZpdF90eXBlKTogUmVtb3ZlLgoJKiBmb2xkLWNvbnN0LmMgKGZvcmNlX2ZpdF90eXBlX2RvdWJsZSk6IE5ldyBmdW5jdGlvbi4KCShmb3JjZV9maXRfdHlwZSk6IFJlbW92ZS4KCShpbnRfY29uc3RfYmlub3ApOiBVc2UgaXQuCgkoZm9sZF9jb252ZXJ0X2NvbnN0X2ludF9mcm9tX2ludCk6IExpa2V3aXNlLgoJKGZvbGRfY29udmVydF9jb25zdF9pbnRfZnJvbV9yZWFsKTogTGlrZXdpc2UuCgkoZm9sZF9kaXZfY29tcGFyZSk6IExpa2V3aXNlLgoJKGZvbGRfc2lnbl9jaGFuZ2VkX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCShmb2xkX3VuYXJ5KTogTGlrZXdpc2UuCgkoZm9sZF9uZWdhdGVfY29uc3QpOiBMaWtld2lzZS4KCShmb2xkX2Fic19jb25zdCk6IExpa2V3aXNlLgoJKGZvbGRfbm90X2NvbnN0KTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKHNob3J0ZW5fY29tcGFyZSk6IFVzZSBmb3JjZV9maXRfdHlwZV9kb3VibGUuCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19wb2ludGVyKTogTGlrZXdpc2UuCgoyMDA3LTAxLTA4ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLmggKGJ1aWxkX2ludF9jc3Rfd2lkZV90eXBlKTogRXhwb3J0LgoJKiB0cmVlLmMgKGJ1aWxkX2ludF9jc3Rfd2lkZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2ludF9jc3Rfd2lkZSk6IEZpeCBjb21tZW50LgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fb2JqZWN0X3NpemUpOiBVc2UgYnVpbGRfaW50X2NzdAoJdG8gYnVpbGQgLTEgb3IgMCBvZiB0aGUgY29ycmVjdCB0eXBlLiAgVXNlIGZpdF9kb3VibGVfdHlwZQoJdG8gY2hlY2sgZm9yIG92ZXJmbG93LgoJKiBmb2xkLWNvbnN0LmMgKG9wdGltaXplX2JpdF9maWVsZF9jb21wYXJlKTogVXNlIGJ1aWxkX2ludF9jc3RfdHlwZQoJdG8gYnVpbGQgdGhlIG1hc2suCgkoZGVjb2RlX2ZpZWxkX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGFsbF9vbmVzX21hc2tfcCk6IExpa2V3aXNlLgoJKG5hdGl2ZV9pbnRlcnByZXRfaW50KTogVXNlIGJ1aWxkX2ludF9jc3Rfd2lkZV90eXBlLgoJKGZvbGRfYmluYXJ5KTogVXNlIGJ1aWxkX2ludF9jc3RfdHlwZSB0byBidWlsZCBhbiBhbGwtb25lcwoJdmFsdWUuCgkqIHN0b3ItbGF5b3V0LmMgKHNldF9zaXpldHlwZSk6IFVzZSBidWlsZF9pbnRfY3N0X3dpZGVfdHlwZS4KCjIwMDctMDEtMDggIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcGEvdC1wYTY0IChsaWJnY2Nfc3R1Yi5hKTogVXNlICQoVCkuCgoyMDA3LTAxLTA5ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGdlbmF1dG9tYXRhLmMgKFNUQVRTX09QVElPTik6IE5ldyBvcHRpb24uCgkoc3RhdHNfZmxhZyk6IE5ldyBmbGFnLgoJKGdlbl9hdXRvbWF0YV9vcHRpb24pOiBIYW5kbGUgaXQuCgkoaW5pdGlhdGVfYXV0b21hdG9uX2dlbik6IERpdHRvLgoJKHdyaXRlX2F1dG9tYXRhKTogT3V0cHV0IHN0YXRpc3RpY3Mgb25seSBpZiBzdGF0c19mbGFnIGlzCglzZXQuIExpa2V3aXNlLCBvdXRwdXQgdGltZSBzdGF0aXN0aWNzIG9ubHkgaWYgdGltZV9mbGFnIGlzIHNldC4KCSogZG9jL21kLnRleGkgKFByb2Nlc3NvciBwaXBlbGluZSBkZXNjcmlwdGlvbik6IERvY3VtZW50IG5ldyBmbGFnLgoKMjAwNy0wMS0wOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuKTogVXNlIGZpdF9kb3VibGVfdHlwZS4KCSogdHJlZS5jIChidWlsZF9pbnRfY3N0X3R5cGUpOiBMaWtld2lzZS4KCShzaXplX2luX2J5dGVzKTogRG9uJ3QgY2FsbCBmb3JjZV9maXRfdHlwZSBvbiB0aGUgcmVzdWx0LgoJKGludF9maXRzX3R5cGVfcCk6IFVzZSBmaXRfZG91YmxlX3R5cGUuCgkqIGZvbGQtY29uc3QuYyAoZml0X2RvdWJsZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGZvcmNlX2ZpdF90eXBlKTogVXNlIGl0LgoJKiB0cmVlLmggKGZpdF9kb3VibGVfdHlwZSk6IEV4cG9ydC4KCjIwMDctMDEtMDggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtdmVjdG9yaXplci5jIChnYXRlX2luY3JlYXNlX2FsaWdubWVudCk6IEZpeCByZXR1cm4gdHlwZS4KCSogaXBhLmMgKGZ1bmN0aW9uX2FuZF92YXJpYWJsZV92aXNpYmlsaXR5KTogRml4IHJldHVybiB0eXBlLgoKMjAwNy0wMS0wOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1zc2EtY2NwLmMgKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2FycmF5X3JlZik6IFVzZSB0eXBlCglvZiBvZmZzZXQgdG8gYnVpbGQgdGhlIGluZGV4LgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IERvbid0IGJ1aWxkIG5lZ2F0ZWQKCWNvbnN0IGp1c3QgZm9yIHByaW50aW5nLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX2ludGVnZXJfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2ludF9yb3VuZGluZ2ZuKTogQ2hlY2sgaWYgcmVzdWx0CglmaXRzIHRoZSB0eXBlIGJ5IHVzaW5nIGZvcmNlX2ZpdF90eXBlIGFuZCBjb21wYXJpbmcgdGhlIHJlc3VsdC4KCSogcHJlZGljdC5jIChwcmVkaWN0X2xvb3BzKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQgZm9yIGNvbXBhcmlzb24uCgkqIHRyZWUuYyAoYnVpbGRfaW50X2NzdCk6IEZhbGwgYmFjayB0byBpbnRlZ2VyX3R5cGVfbm9kZSBmb3IKCU5VTExfVFJFRSB0eXBlLgoJKGJ1aWxkX2ludF9jc3Rfd2lkZSk6IEFzc2VydCB0eXBlIGlzIG5vbi1udWxsLgoKMjAwNy0wMS0wOCAgUm9iZXJ0byBDb3N0YSAgPHJvYmVydG8uY29zdGFAc3QuY29tPgoKCSogdHJlZS12cnAuYyAoZXh0cmFjdF9yYW5nZV9mcm9tX2NvbmRfZXhwcik6IE5ldy4KCShleHRyYWN0X3JhbmdlX2Zyb21fZXhwcik6IEhhbmRsZSBDT05EX0VYUFIgbm9kZXMgdXNlZCBhcyBleHByZXNzaW9ucy4KCSogdHJlZS1zc2EtY2NwLmMgKGdldF9tYXh2YWxfc3RybGVuKTogSGFuZGxlIENPTkRfRVhQUiBub2RlcyB1c2VkCglhcyBleHByZXNzaW9ucy4KCShmb2xkX3N0bXQpOiBCdWcgZml4LCBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gd2hlbiBmb2xkaW5nIENPTkRfRVhQUnMuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHNpbXBsaWZ5X2NvbmQsIGZvcndhcmRfcHJvcGFnYXRlX2ludG9fY29uZCwKCXRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IEhhbmRsZSBDT05EX0VYUFIgbm9kZXMKCXVzZWQgYXMgZXhwcmVzc2lvbnMuCgkqIHRyZWUtb2JqZWN0LXNpemUuYyAoY29uZF9leHByX29iamVjdF9zaXplKTogTmV3LgoJKGNvbGxlY3Rfb2JqZWN0X3NpemVzX2Zvcik6IEhhbmRsZSBDT05EX0VYUFIgbm9kZXMgdXNlZCBhcyBleHByZXNzaW9ucy4KCjIwMDctMDEtMDggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2ludG9fY29uZCwKCXRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmEpOiBSZWxlYXNlIGRlZnMgb2YgcHJvcGFnYXRlZAoJc3RhdGVtZW50LgoKMjAwNy0wMS0wOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzIzNjAzCgkqIHRyZWUtdnJwLmMgKHNldF92YWx1ZV9yYW5nZV90b190cnV0aHZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKGV4dHJhY3RfcmFuZ2VfZnJvbV9iaW5hcnkpOiBGYWxsIGJhY2sgdG8gdHJ1dGh2YWx1ZSBpbnN0ZWFkIG9mCgl2YXJ5aW5nIGZvciBUUlVUSF8qX0VYUFIuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2NvbXBhcmlzb24pOiBGYWxsIGJhY2sgdG8gdHJ1dGh2YWx1ZSBpbnN0ZWFkIG9mCgl2YXJ5aW5nLgoJKHZycF92aXNpdF9waGlfbm9kZSk6IERvbid0IGFkanVzdCBuZXcgcmFuZ2UgYm91bmRzIHRvICtJTkYvLUlORgoJaWYgYWxsIHZpc2l0ZWQgUEhJIHZhbHVlcyB3ZXJlIGNvbnN0YW50LgoKMjAwNy0wMS0wOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfcHJvY2Vzc19uZXdfZnVuY3Rpb25zKTogUmVzZXQgcmVhY2hhYmxlIGZsYWcuCgkoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBicmVhayBvdXQgZnJvbSAuLi4KCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCk6IC4uLiBoZXJlLgoJKGNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBSZW1vdmUgZm9yZ290ZW4gY29tbWVudGVkIG91dCBsaW5lLgoJKGNncmFwaF9vcHRpbWl6ZSk6IEFuYWx5emUgZnVuY3Rpb25zLgoKMjAwNy0wMS0wOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1wYXMuaCAoVE9ET19yZW1vdmVfZnVuY3Rpb24pOiBOZXcgZmxhZy4KCShUT0RPX3VwZGF0ZSopOiBSZW51bWJlci4KCShwYXNzX2lwYV9pbmNyZWFzZV9hbGlnbm1lbnQsCglwYXNzX2lwYV9mdW5jdGlvbl9hbmRfdmFyaWFibGVfdmlzaWJpbGl0eSk6IE5ldyBwYXNzZXMuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2luY3JlYXNlX2FsaWdubWVudCk6IE1vdmUgdG8gdHJlZS12ZWN0b3JpemVyLmMKCShjZ3JhcGhfZnVuY3Rpb25fYW5kX3ZhcmlhYmxlX3Zpc2liaWxpdHkpOiBNb3ZlIHRvIGlwYS5jCgkoY2dyYXBoX29wdGltaXplKTogRG9uJ3QgY2FsbCBjZ3JhcGhfZnVuY3Rpb25fYW5kX3ZhcmlhYmxlX3Zpc2liaWxpdHksCgljZ3JhcGhfaW5jcmVhc2VfYWxpZ25tZW50LgoJKiBpcGEtaW5saW5lLmMgKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBEb24ndCBwdXNoIHRpbWV2YXIuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19pbmNyZW1lbnRhbGx5KTogUHVzaCBUVl9JTlRFR1JBVElPTiBiZWZvcmUKCWNhbGxpbmcgdHJlZS1pbmxpbmUuCgkoY2dyYXBoX2Vhcmx5X2lubGluaW5nKTogRG8gbm90IGNhbGwgY2dyYXBoX3JlbW92ZV91bnJlYWNoYWJsZV9ub2Rlcy4KCShwYXNzX2lwYV9pbmxpbmUsIHBhc3NfZWFybHlfaXBhX2lubGluaW5nKTogU2V0IFRPRE9fcmVtb3ZlX2Z1bmN0aW9ucwoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoaW5jcmVhc2VfYWxpZ25tZW50KTogTW92ZSBoZXJlIGZyb20gY2dyYXBodW5pdC5jCgkoZ2F0ZV9pbmNyZWFzZV9hbGlnbm1lbnQpOiBOZXcgZnVuY3Rpb24uCgkocGFzc19pcGFfaW5jcmVhc2VfYWxpZ25tZW50KTogTmV3IHBhc3MuCgkqIGlwYS5jOiBJbmxpbmUgdHJlZS1wYXNzLmggYW5kIHRpbWV2YXIuaAoJKGZ1bmN0aW9uX2FuZF92YXJpYWJsZV92aXNpYmlsaXR5KTogTW92ZSBoZXJlIGZyb20gY2dyYXBodW5pdC5jCgkqIHRyZWUtb3B0aW1pemUuYyAocGFzc19lYXJseV9sb2NhbF9wYXNzZXMpOiBBZGQgVE9ET19yZW1vdmVfZnVuY3Rpb25zLgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkIHRoZSB0d28gbmV3IHBhc3Nlcy4KCShleGVjdXRlX3RvZG8pOiBIYW5kbGUgY2dyYXBoX3JlbW92ZV9mdW5jdGlvbnMuCgoyMDA3LTAxLTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9wcmVkaWNhdGVzLm1kIChyZWdfb3JfMF9vcGVyYW5kKTogQWNjZXB0CglDT05TVF9ET1VCTEVzLgoKMjAwNy0wMS0wOCAgUmFsZiBDb3Jzw8KpcGl1cyA8cmFsZi5jb3JzZXBpdXNAcnRlbXMub3JnPgoKCSogY29uZmlnL2JmaW4vcnRlbXMuaCwgY29uZmlnL2JmaW4vdC1ydGVtczogTmV3LgoJKiBjb25maWcuZ2NjOiBBZGQgYmZpbiotcnRlbXMqLgoKMjAwNy0wMS0wOCAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLm9wdDogQWRkIC1mbGF4LXZlY3Rvci1jb252ZXJzaW9ucy4KCSogYy10eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFBhc3MgZmxhZyB0bwoJdmVjdG9yX3R5cGVzX2NvbnZlcnRpYmxlX3AgdG8gYWxsb3cgZW1pc3Npb24gb2Ygbm90ZS4KCShkaWdlc3RfaW5pdCk6IExpa2V3aXNlLgoJKiBjLW9wdHMuYzogSGFuZGxlIC1mbGF4LXZlY3Rvci1jb252ZXJzaW9ucy4KCSogYy1jb21tb24uYyAoZmxhZ19sYXhfdmVjdG9yX2NvbnZlcnNpb25zKTogTmV3LgoJKHZlY3Rvcl90eXBlc19jb252ZXJ0aWJsZV9wKTogVW5sZXNzIC1mbGF4LXZlY3RvciBjb252ZXJzaW9ucwoJaGFzIGJlZW4gcGFzc2VkLCBkaXNhbGxvdyBjb252ZXJzaW9ucyBiZXR3ZWVuIHZlY3RvcnMgd2l0aAoJZGlmZmVyaW5nIG51bWJlcnMgb2Ygc3VicGFydHMgYW5kL29yIGVsZW1lbnQgdHlwZXMuICBJZiBzdWNoCglhIGNvbnZlcnNpb24gaXMgZGlzYWxsb3dlZCwgcG9zc2libHkgZW1pdCBhIG5vdGUgb24gdGhlIGZpcnN0CglvY2Nhc2lvbiBvbmx5IHRvIGluZm9ybSB0aGUgdXNlciBvZiAtZmxheC12ZWN0b3ItY29udmVyc2lvbnMuCglUaGUgbmV3IGxhc3QgYXJndW1lbnQgc3BlY2lmaWVzIHRoaXMuCgkqIGMtY29tbW9uLmggKGZsYWdfbGF4X3ZlY3Rvcl9jb252ZXJzaW9ucyk6IE5ldy4KCSh2ZWN0b3JfdHlwZXNfY29udmVydGlibGVfcCk6IEFkZCBleHRyYSBhcmd1bWVudC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2luaXRfbW14X3NzZV9idWlsdGlucyk6IFVzZQoJY2hhcl90eXBlX25vZGUgZm9yIFYqUUkgdHlwZSB2ZWN0b3JzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1jLmMgKGFsdGl2ZWNfb3ZlcmxvYWRlZF9idWlsdGlucyk6CglVcGRhdGUgdG8gc2F0aXNmeSBuZXcgdHlwZWNoZWNraW5nIHJ1bGVzLgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaCAodmVjX2NtcGxlKTogVXNlIHZlY19jbXBnZSwgZm9yIGJvdGgKCUMgYW5kIEMrKyB2YXJpYW50cy4KCSogZG9jL2ludm9rZS50ZXhpIChDIERpYWxlY3QgT3B0aW9ucyk6IERvY3VtZW50CgktZmxheC12ZWN0b3ItY29udmVyc2lvbnMuCgoyMDA3LTAxLTA4ICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yOTg3NwoJKiB0cmVlLXNzYS10ZXIuYyAoaXNfcmVwbGFjZWFibGVfcCk6IERlZW0gYXNzaWdubWVudHMgd2l0aAoJYSByZWdpc3RlciB2YXJpYWJsZSBvbiB0aGUgUkhTIHRvIG5vdCBiZSByZXBsYWNlYWJsZS4KCjIwMDctMDEtMDggIENoZW4gTGlxaW4gIDxsaXFpbkBzdW5ub3J0aC5jb20uY24+CgkqIGNvbmZpZy9zY29yZS90LXNjb3JlLWVsZiAoTVVMVElMSUJfT1BUSU9OUyk6IENoYW5nZS4KCSogY29uZmlnL3Njb3JlL3ByZWRpY2F0ZXMubWQgKGNvbnN0X3VpbW01LCBzcjBfb3BlcmFuZCwgY29uc3Rfc2ltbTEyLAoJY29uc3Rfc2ltbTE1LCBjb25zdF9wb3cyLCBjb25zdF9ucG93Mik6IEFkZGVkLgoJKiBjb25maWcvc2NvcmUvbWlzYy5tZCAoaW5zdiwgZXh0diwgZXh0enYsIG1vdm1lbXNpLAoJbW92ZV9sYnVfYS9iLCBtb3ZfbGh1X2EvYiBldGMpOiBBZGRlZCBhbmQgZml4IHNvbWUgYnVnLgoJKiBjb25maWcvc2NvcmUvc2NvcmUuYyAoc2NvcmVfYWRkcmVzc19jb3N0LCBzY29yZV9zZWxlY3RfY2NfbW9kZSk6CglBZGRlZC4KCUNoYW5nZSBDT05TVF9PS19GT1JfTEVUVEVSX1AvRVhUUkFfQ09OU1RSQUlOVCBkZWZpbmUuCglVcGRhdGUgc2NvcmVfcnR4X2Nvc3RzIGZvciBNQUNSTyBUQVJHRVRfUlRYX0NPU1RTLgoJVXBkYXRlIHNjb3JlX3ByaW50X29wZXJhbmQuCgkqIGNvbmZpZy9zY29yZS9zY29yZS5oIChEQVRBX0FMSUdOTUVOVCwgU0VMRUNUX0NDX01PREUpOiBBZGRlZC4KCUFkanVzdCByZWdpc3RlciBhbGxvY2F0ZSBvcmRlciBhbmQgdXBkYXRlIHNvbWUgbWFjcm8gZGVmaW5lLgoJKiBjb25maWcvc2NvcmUvc2NvcmUtbWRhdXguYyAobWR4X3VuYWxpZ25lZF9sb2FkLCBtZHhfdW5zaWduZWRfc3RvcmUsCgltZHhfYmxvY2tfbW92ZV9zdHJhaWdodCwgbWR4X2Jsb2NrX21vdmVfbG9vcF9oZWFkLAoJbWR4X2Jsb2NrX21vdmVfbG9vcF9ib2R5LCBtZHhfYmxvY2tfbW92ZV9sb29wX2Zvb3QsCgltZHhfYmxvY2tfbW92ZV9sb29wLCBtZHhfYmxvY2tfbW92ZSk6IEFkZGVkLgoJKG1keF9tb3ZzaWNjLCBtZHBfc2VsZWN0X2FkZF9pbW0sIG1kcF9zZWxlY3QsIG1kc196ZXJvX2V4dHJhY3RfYW5kaSwKCW1kcF9saW1tKTogVXBkYXRlZCBhbmQgZml4IHNvbWUgYnVnIGFuZCB0eXBvLgoJKiBjb25maWcvc2NvcmUvc2NvcmUubWQgKG1vdnFpL2hpL3NpLCBhZGQvc3ViL3plcm8vZXh0KTogVXBkYXRlZC4KCShtb3ZzZiwgbW92ZGYsIGRvbG9vcF9lbmQpOiBBZGRlZC4KCjIwMDctMDEtMDggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2FybS9hcm0uaCwgY29uZmlnL2FybS9hcm0ubWQsCgljb25maWcvYXJtL3RodW1iMi5tZDogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGRvYy9leHRlbmQudGV4aTogRml4IGEgdHlwby4KCjIwMDctMDEtMDcgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBfX3N0YWNrX2Noa19mYWlsIGZvciBkYXJ3aW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDctMDEtMDcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV9hc3NlcnQpOiBDU0UgY2FsbHMgdG8KCWNvbXBhcmVfdmFsdWVzIHdoZXJlIHBvc3NpYmxlLgoJKGV4dHJhY3RfcmFuZ2VfZnJvbV91bmFyeV9leHByKTogTGlrZXdpc2UuCgoyMDA3LTAxLTA3ICBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAoY2FsbF9pbnNuX29wZXJhbmQpOiBEZWxldGUgcHJvdG90eXBlLgoJKiBjb25maWcvYXZyL2F2ci5jIChjYWxsX2luc25fb3BlcmFuZCk6IERlbGV0ZSBmdW5jdGlvbi4KCSogY29uZmlnL2F2ci9hdnIubWQgKCpwdXNocWksICpwdXNoaGksICpwdXNoc2ksICpwdXNoc2YpOiBVc2UgUkVHX1NQCglpbnN0ZWFkIG9mIHJlZ2lzdGVyIG51bWJlci4gVXNlIHByZWRpY2F0ZXMuCgkqIGNvbmZpZy9hdnIvcHJlZGljYXRlcy5tZCAoY29uc3QwX29wZXJhbmQsIHJlZ19vcl8wX29wZXJhbmQsCgljYWxsX2luc25fb3BlcmFuZCk6IEFkZC4KCjIwMDctMDEtMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtcGFzcy5oIChwYXNzX2J1aWxkX2NncmFwaF9lZGdlcyk6IERlY2xhcmUuCgkqIGNncmFwaHVuaXQuYyAocmVjb3JkX3JlZmVybmVjZSk6IE1vdmUgdG8gY2dyYXBoYnVpbGQuYwoJKHZpc2l0ZWRfbm9kZXMpOiBSZW1vdmUuCgkoY2dyYXBoX2NyZWF0ZV9lZGdlcyk6IE1vdmUgdG8gY2dyYXBoYnVpbGQuYzsgcmVuYW1lIHRvCglidWlsZF9jZ3JwYWhfZWRnZXM7IG1ha2UgdmlzaXRlZF9ub2RlcyBsb2NhbC4KCShjZ3JhcGhfcHJvY2Vzc19uZXdfZnVuY3Rpb25zKTogRE8gbm90IGNhbGwgaW5pdGlhbGl6ZV9pbmxpbmVfZmFpbGVkLgoJKHJlY29yZF9yZWZlcmVuY2VzX2luX2luaXRpYWxpemVyKTogTW92ZSB0byBjZ3JhcGhidWlsZC5jCgkoaW5pdGlhbGl6ZV9pbmxpbmVfZmFpbGVkLCByZWJ1aWxkX2NncmFwaF9lZGdlcywKCXBhc3NfcmVidWlsZF9jZ3JhcGhfZWRnZXMpOiBNb3ZlIHRvIGNncmFwaGJ1aWxkLmMuCgkodmVyaWZ5X2NncmFwaF9ub2RlKTogTWFrZSB2aXNpdGVkX25vZGVzIGxvY2FsLgoJKGNncmFwaF9hbmFseXplX2Z1bmN0aW9uKTogRG8gbm90IGNhbGwgY2dyYXBoX2NyZWF0ZV9lZGdlcyBhbmQKCWluaXRpYWxpemVfaW5saW5lX2ZhaWxlZC4KCShjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogRG8gbm90IGNhbGwgY2dyYXBoX2xvd2VyX2Z1bmN0aW9uOwoJYXNzZXJ0IHRoYXQgZnVuY3Rpb24gaXMgYWxyZWFkeSBsb3dlcmVkLgoJKiBNYWtlZmlsZS5pbiAoY2dyYXBoYnVpbGQubyk6IE5ldy4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBwYXNzX2J1aWxkX2NncmFwaF9lZGdlcwoJYXQgdGhlIGVuZCBvZiBsb3dlcmluZyBwYXNzZXMuCgoyMDA3LTAxLTA2ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBpZmN2dC5jIChjb25kX21vdmVfY29udmVydF9pZl9ibG9jayk6IE5ldyBmdW5jdGlvbiwgY29kZQoJZmFjdG9yZWQgb3V0IGZyb20uLi4KCShjb25kX21vdmVfcHJvY2Vzc19pZl9ibG9jayk6IC4uLmhlcmUuICBDYWxsIHRoZSBuZXcgZnVuY3Rpb24KCW9uIHRoZSBUSEVOIGFuZCBFTFNFIGJsb2Nrcy4KCShtZXJnZV9pZl9ibG9jayk6IERvIG5vdCBjb3B5IGdsb2JhbF9saXZlX2F0X2VuZCwgbWVyZ2VfYmxvY2tzCglhbHJlYWR5IHRha2VzIGNhcmUgb2YgdGhpcy4KCjIwMDctMDEtMDUgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCVBSIGMvMTk5NzgKCSogdHJlZS5oIChUUkVFX09WRVJGTE9XX1ApOiBOZXcuCgkqIGMtdHlwZWNrLmMgKHBhcnNlcl9idWlsZF91bmFyeV9vcCk6IFdhcm4gb25seSBpZiByZXN1bHQKCW92ZXJmbG93ZWQgYW5kIG9wZXJhbmRzIGRpZCBub3QuCgkocGFyc2VyX2J1aWxkX2JpbmFyeV9vcCk6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBSZW1vdmUgcmVkdW5kYW50IG92ZXJmbG93X3dhcm5pbmcuCgkqIGMtY29tbW9uLmMgKG92ZXJmbG93X3dhcm5pbmcpOiBEb24ndCBjaGVjayBvciBzZXQgVFJFRV9PVkVSRkxPVy4KCjIwMDctMDEtMDUgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCSogYy10eXBlY2suYyAoc3RvcmVfaW5pdF92YWx1ZSk6IFNwbGl0IG92ZXIgdHdvIGxpbmVzIHRvIGZvbGxvdwoJdGhlIEdOVSBjb2Rpbmcgc3R5bGUuCgoyMDA3LTAxLTA1ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJlZGhhdC5jb20+CgoJKiBjLWNwcGJ1aWx0aW4uYyAoY19jcHBfYnVpbHRpbnMpOiBfX0dYWF9FWFBFUklNRU5UQUxfQ1BQMFhfXyB0bwoJX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18uCgkqIGRvYy9jcHAudGV4aTogU2FtZS4KCjIwMDctMDEtMDUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzI3ODI2CgkqIHRyZWUuYyAoZ2V0X25hcnJvd2VyKTogRG8gbm90IGNvbnN0cnVjdCBDT01QT05FTlRfUkVGcwoJd2l0aCBtaXNtYXRjaGVkIHR5cGVzLiAgSW5zdGVhZCBleHBsaWNpdGx5IGJ1aWxkIGEKCWNvbnZlcnNpb24gTk9QX0VYUFIuCgoyMDA3LTAxLTA1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogYy1jb21tb24uYyAoZGVjbF93aXRoX25vbm51bGxfYWRkcl9wKTogTmV3IGZ1bmN0aW9uLgoJKGNfY29tbW9uX3RydXRodmFsdWVfY29udmVyc2lvbik6IENhbGwgaXQuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5oIChkZWNsX3dpdGhfbm9ubnVsbF9hZGRyX3ApOiBEZWNsYXJlLgoKMjAwNy0wMS0wNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYy8zMDM2MAoJKiBsaWJnY2MyLmMgKF9fZGl2ZGMzKTogQ29tcGFyZSBjIGFuZCBkIGFnYWluc3QgMC4wIGluc3RlYWQgb2YKCWRlbm9tIGFnYWluc3QgMC4wLgoKMjAwNy0wMS0wNSAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChGaW5hbCBpbnN0YWxsKTogRG9jdW1lbnQgdGhlIGZhY3QgdGhhdAoJdGhlIEdOQVQgcnVudGltZSBzaG91bGQgbm90IGJlIHN0cmlwcGVkLgoKMjAwNy0wMS0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1pbmxpbmUuYyAoZm9sZF9tYXJrZWRfc3RhdGVtZW50cyk6IFVwZGF0ZSBvcGVyYW5kIGNhY2hlcwoJYW5kIEVIIGFmdGVyIGZvbGRpbmcKCjIwMDctMDEtMDQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mdW5jdGlvbl9ub25udWxsKTogV2hpdGVzcGFjZSBmaXguCgoyMDA3LTAxLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLW9wdGltaXplLmMgKGV4ZWN1dGVfZml4dXBfY2ZnKTogQ29ycmVjdCBwcmV2aW91c2x5IG1pc3Rha2VseQoJY29taXR0ZWQgb2xkZXIgdmVyc2lvbiBvZiBwYXRjaC4KCShwYXNzX2ZpeHVwX2NmZyk6IEFkZCBUT0RPcyB0byB2ZXJpZnkgZmxvdyBhbmQgc3RhdGVtZW50cywgZHVtcAoJZnVuY3Rpb24sIGNlbGFudXAgY2ZnIGFuZCBjb2xsZWN0IGdhcmJhZ2UuCgoyMDA3LTAxLTA0ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChtb3N0bHljbGVhbik6IERvbid0IHJlbW92ZSBsaWJnY2MgYW55bW9yZS4KCShjbGVhbik6IExpa2V3aXNlLgoKMjAwNy0wMS0wNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGxpYmdjYzIuYyAoX19ic3dhcHNpMik6IFVzZSBTSXR5cGUuCgkoX19ic3dhcGRpMik6IFVzZSBESXR5cGUuCgkqIGxpYmdjYzIuaDogVXBkYXRlIGZvciBhYm92ZS4KCjIwMDctMDEtMDQgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAoYXJtX211bHNpMywgdGh1bWJfbXVsc2kzLCBtdWxzaTNfY29tcGFyZTAsCgltdWxzaV9jb21wYXJlMF9zY3JhdGNoLCBtdWxzaTNhZGRzaSwgbXVsc2kzYWRkc2lfY29tcGFyZTAsCgltdWxzaTNhZGRzaV9jb21wYXJlMF9zY3JhdGNoLCBtdWxzaWRpM2FkZGRpLCBtdWxzaWRpMywKCXVtdWxzaWRpMywgdW11bHNpZGkzYWRkZGksIHNtdWxzaTNfaGlnaHBhcnQsCgl1bXVsc2kzX2hpZ2hwYXJ0KTogTWFrZSBjb25kaXRpb25hbCBvbiAhYXJtX2FyY2g2LgoJKGFybV9tdWxzaTNfdjYsIHRodW1iX211bHNpM192NiwgbXVsc2kzX2NvbXBhcmUwX3Y2LAoJbXVsc2lfY29tcGFyZTBfc2NyYXRjaF92NiwgbXVsc2kzYWRkc2lfdjYsIG11bHNpM2FkZHNpX2NvbXBhcmUwX3Y2LAoJbXVsc2kzYWRkc2lfY29tcGFyZTBfc2NyYXRjaF92NiwgbXVsc2lkaTNhZGRkaV92NiwgbXVsc2lkaTNfdjYsCgl1bXVsc2lkaTNfdjYsIHVtdWxzaWRpM2FkZGRpX3Y2LCBzbXVsc2kzX2hpZ2hwYXJ0X3Y2LAoJdW11bHNpM19oaWdocGFydF92Nik6IE5ldyBpbnNucy4KCjIwMDctMDEtMDQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbnZlcnQpOiBXaGVuIGNhc3RpbmcgYW4gZXhwcmVzc2lvbiB0byB2b2lkLAoJZm9sZF9pZ25vcmVkX3Jlc3VsdCBtYXkgZGlzY292ZXIgYSBHSU1QTEVfTU9ESUZZX1NUTVQgd2hpY2ggZG9lc24ndAoJaGF2ZSBhIHR5cGUuICBJbnN0ZWFkIG9mIGF0dGVtcHRpbmcgdG8gYnVpbGQgYSBOT1BfRVhQUiwgcmV0dXJuCgl0aGVzZSAic3BlY2lhbCIgdHJlZXMgZGlyZWN0bHkuCgoyMDA3LTAxLTA0ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9ydHhfY29zdHMpOiBNYWtlIGFkanVzdG1lbnQgZm9yCglNVUxUIGluc2lkZSBNSU5VUyBhcyBlaXRoZXIgYXJndW1lbnQuICBVc2UgcnM2MDAwX2Nvc3QtPmRtdWwgLQoJcnM2MDAwX2Nvc3QtPmZwIG5vdCAwIGFzIGFkanVzdG1lbnQgZm9yIG91dGVyIE5FRy4KCjIwMDctMDEtMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfcmVsZWFzZV9mdW5jdGlvbl9ib2R5KTogTmV3IGZ1bmN0aW9uLgoJKGNncmFwaF9yZW1vdmVfbm9kZSk6IFVzZSBpdC4KCSogY2dyYXBoLmggKGNncmFwaF9yZWxlYXNlX2Z1bmN0aW9uX2JvZHkpOiBEZWNsYXJlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBVc2UgaXQuCgkqIGlwYS5jIChjZ3JhcGhfcmVtb3ZlX3VucmVhaGNoYWJsZV9ub2Rlcyk6IFVzZSBpdC4KCSogdHJlZS1zc2EuYyAoZGVsZXRlX3RyZWVfc3NhKTogQWxsb3cgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbGlhc2luZwoJaXMgaW5pdGlhbGl6ZWQgYW5kIHdoaWxlIGNvbXBpbGF0aW9uIG9mIG90aGVyIGZ1bmN0aW9uIGlzIHJ1bm5pbmcuCgkqIHRyZWUtb3B0aW1pemUuYyAoZXhlY3V0ZV9mcmVlX2NmZ19hbm5vdGF0aW9ucyk6IE1vdmUgY29kZSB0byBjbGVhcgoJc3RhdGVtZW50IENGRyBhbm5vdGF0aW9ucyBmcm9tIGhlcmUgdG8gLi4uCgkqIHRyZWUtY2ZnLmMgKGRlbGV0ZV90cmVlX2NmZ19hbm5vdGF0aW9ucyk6IC4uLiBoZXJlLgoKMjAwNy0wMS0wNCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY2ZnbG9vcC5oIChlbnVtIGxpX2ZsYWdzKTogTWFrZSB0aGUgY29uc3RhbnRzIHBvd2VycyBvZiB0d28uCgoyMDA3LTAxLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JiKTogSW5zZXJ0IG5ldyBzdGF0ZW1lbnRzIHRvIHN0YXRlbWVudHNfdG9fZm9sZAoJc2V0LgoJKGZvbGRfbWFya2VkX3N0YXRlbWVudHMpOiBOZXcgZnVuY3Rpb24uCgkob3B0aW1pemVfaW5saW5lX2NhbGxzLCB0cmVlX2Z1bmN0aW9uX3ZlcnNpb25pbmcpOiBGb2xkIG5ldyBzdGF0ZW1lbnRzLgoJKiB0cmVlLWlubGluZS5oIChjb3B5X2JvZHlfZGF0YSk6IEFkZCBzdGF0ZW1lbnRzX3RvX2ZvbGQuCgoyMDA3LTAxLTAzICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYzogTWVudGlvbiBsaWJnY2MvY29uZmlnLmhvc3QuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgY29tbWVudHMgbWVudGlvbmluZyBsaWJnY2MuCgkoTElCR0NDLCBJTlNUQUxMX0xJQkdDQywgR0NDX1BBUlRTLCBta2xpYmdjYyk6IERlbGV0ZS4KCShhbGwuY3Jvc3MsIHN0YXJ0LmVuY2FwLCByZXN0LmVuY2FwLCByZXN0LmNyb3NzKTogVXBkYXRlCglkZXBlbmRlbmNpZXMgZm9yIGxpYmdjYyBtb3ZlLgoJKGxpYmdjYy5taywgTElCR0NDX0RFUFMsIGxpYmdjb3YuYSwgbGliZ2NjLmEsIHN0bXAtbXVsdGlsaWIpCgkoY2xlYW4tdGFyZ2V0LCBjbGVhbi10YXJnZXQtbGliZ2NjKTogRGVsZXRlLgoJKHNyY2RpcmlmeSwgR0NDX0VYVFJBX1BBUlRTKTogTmV3IG1hY3Jvcy4KCShsaWJnY2Mtc3VwcG9ydCwgbGliZ2NjLm12YXJzKTogTmV3IHJ1bGVzLgoJKGRpc3RjbGVhbik6IFJlbW92ZSBtZW50aW9uIG9mIG1rbGliZ2NjLgoJKGluc3RhbGwpOiBEb24ndCByZWZlcmVuY2UgSU5TVEFMTF9MSUJHQ0MuCgkoaW5zdGFsbC1jb21tb24pOiBEb24ndCByZWZlcmVuY2UgRVhUUkFfUEFSVFMuCgkoaW5zdGFsbC1saWJnY2MsIGluc3RhbGwtbXVsdGlsaWIpOiBEZWxldGUgcnVsZXMuCgkqIG1rbGliZ2NjLmluOiBEZWxldGUgZmlsZS4KCSogZG9jL2NvbmZpZ2ZpbGVzLnRleGk6IERvbid0IG1lbnRpb24gbWtsaWJnY2MuCgoJKiBjb25maWcvaTM4Ni90LWRhcndpbiAoU0hMSUJfVkVSUEZYKTogRGVsZXRlIChtb3ZlZCB0byBsaWJnY2MpLgoJKiBjb25maWcvaTM4Ni90LWRhcndpbjY0IChTSExJQl9WRVJQRlgpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC90LWRhcndpbiAoU0hMSUJfVkVSUEZYKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNjb21tIChUQVJHRVRfTElCR0NDMl9DRkxBR1MsIFNITElCX01BUEZJTEVTKQoJKG1rbGliZ2NjLCBsZGJsc3BlY3MpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L3QtbndsZCAobGliZ2NjLmRlZiwgbGliYy5kZWYsIGxpYnBjcmUuZGVmKQoJKHBvc2l4cHJlLmRlZik6IFVzZSAkKFQpLgoJKFNITElCX0VYVCwgU0hMSUJfTkFNRSwgU0hMSUJfU0xJQkRJUl9RVUFMLCBTSExJQl9ERUYsIFNITElCX01BUCkKCShTSExJQl9TUkMsIFNITElCX0lOU1RBTEwpOiBEZWxldGUuCgkoU0hMSUJfTElOSyk6IE1ha2UgZHVtbXkuCgkqIGNvbmZpZy90LXNsaWJnY2MtZGFyd2luOiBEZWxldGUgY29udGVudHMgZXhjZXB0IGZvciBkdW1teSBTSExJQl9MSU5LLgoKCSogY29uZmlnL2Zydi90LWxpbnV4IChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IENsZWFyLgoKCSogY29uZmlnL2FscGhhL3QtY3J0Zm06IFVzZSAkKFQpIGluIHJ1bGVzIGZvciBFWFRSQV9QQVJUUy4KCSogY29uZmlnL2FscGhhL3Qtdm1zLCBjb25maWcvYWxwaGEvdC12bXM2NCwgY29uZmlnL2ZyMzAvdC1mcjMwLAoJY29uZmlnL2kzODYvdC1ydGVtcy1pMzg2LCBjb25maWcvaWE2NC90LWlhNjQsIGNvbmZpZy9yczYwMDAvdC1iZW9zLAoJY29uZmlnL3JzNjAwMC90LW5ld2FzLCBjb25maWcvc3BhcmMvdC1lbGY6IExpa2V3aXNlLgoKCSogY29uZmlndXJlLmFjIChhbGxfb3V0cHV0cyk6IFJlbW92ZSBta2xpYmdjYy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDctMDEtMDMgIEpvc2ggQ29ubmVyICA8amNvbm5lckBhcHBsZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yOTY4MwoJKiBjYWxscy5jIChjb21wdXRlX2FyZ3VtZW50X2FkZHJlc3Nlcyk6IFNldCBzdGFjayBhbmQgc3RhY2tfc2xvdAoJZm9yIHBhcnRpYWwgYXJncywgdG9vLgoJKHN0b3JlX29uZV9hcmcpOiBVc2UgbG9jYXRlLnNpemUuY29uc3RhbnQgZm9yIHRoZSBzaXplIHdoZW4KCWdlbmVyYXRpbmcgYSBzYXZlX2FyZWEuCgoyMDA3LTAxLTAzICBSb2JlcnQgS2VubmVkeSA8amltYm9iQGdvb2dsZS5jb20+CgoJKiB0cmVlLWNmZy5jICh0cmVlX21lcmdlX2Jsb2Nrcyk6IFJlbGVhc2UgU1NBX05BTUUgcGhpIHJlc3VsdHMKCXdob3NlIGRlZmluaXRpb25zIGFyZSBkZWxldGVkIGR1ZSB0byBiYXNpYyBibG9jayBtZXJnaW5nLgoKMjAwNy0wMS0wMyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMTY2MzQKCSogY29uZmlnL2FybS9hcm0uYyAob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IFBvcCBQQyBpbiBpbnRlcnJ1cHQKCWZ1bmN0aW9ucy4KCSh1c2VfcmV0dXJuX2luc24pOiBSZXR1cm4gMCBmb3IgVGh1bWIgaW50ZXJydXB0IGZ1bmN0aW9ucy4KCShwcmludF9tdWx0aV9yZWcpOiBBZGQgcmZlIGFyZ3VtZW50IGZvciBJUlEgcmV0dXJucy4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogUG9wIGludGVycnVwdCByZXR1cm4gYWRkcmVzcyBkaXJlY3RseSBpbnRvIFBDLgoJKGFybV9leHBhbmRfcHJvbG9ndWUpOiBPbmx5IGFkanVzdCBJUlEgcmV0dXJuIGFkZHJlc3MgaW4gQXJtIG1vZGUuCgoyMDA3LTAxLTAzICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCU1lcmdlIGZyb20gc291cmNlcnlneHgtNF8xLgoJKiBjb25maWcvYXJtL3RodW1iMi5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9hcm0vZWxmLmggKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IFJldHVybiBUcnVlIGZvcgoJVGh1bWItMi4KCSogY29uZmlnL2FybS9jb2ZmLmggKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IERpdHRvLgoJKiBjb25maWcvYXJtL2FvdXQuaCAoQVNNX09VVFBVVF9BRERSX1ZFQ19FTFQpOiBBZGQgIVRodW1iLTIgYXNzZXJ0aW9uLgoJKEFTTV9PVVRQVVRfQUREUl9ESUZGX0VMVCk6IE91dHB1dCBUaHVtYi0yIGp1bXAgdGFibGVzLgoJKiBjb25maWcvYXJtL2FvZi5oIChBU01fT1VUUFVUX0FERFJfRElGRl9FTFQpOiBPdXRwdXQgVGh1bWItMiBqdW1wCgl0YWJsZXMuCgkoQVNNX09VVFBVVF9BRERSX1ZFQ19FTFQpOiBBZGQgIVRodW1iLTIgYXNzZXJ0aW9uLgoJKiBjb25maWcvYXJtL2llZWU3NTQtZGYuUzogVXNlIG1hY3JvcyBmb3IgVGh1bWItMi9VbmlmaWVkIGFzbQoJY29tcHRpYmlsaXR5LgoJKiBjb25maWcvYXJtL2llZWU3NTQtc2YuUzogRGl0dG8uCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHRodW1iX2Jhc2VfcmVnaXN0ZXJfcnR4X3ApOiBSZW5hbWUuLi4KCSh0aHVtYjFfYmFzZV9yZWdpc3Rlcl9ydHhfcCk6IC4uLiB0byB0aGlzLgoJKHRodW1iX2luZGV4X3JlZ2lzdGVyX3J0eF9wKTogUmVuYW1lLi4uCgkodGh1bWIxX2luZGV4X3JlZ2lzdGVyX3J0eF9wKTogLi4uIHRvIHRoaXMuCgkodGh1bWJfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUmVuYW1lLi4uCgkodGh1bWIxX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IC4uLiB0byB0aGlzLgoJKHRodW1iX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogUmVuYW1lLi4uCgkodGh1bWIxX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogLi4uIHRvIHRoaXMuCgkodGh1bWJfcnR4X2Nvc3RzKTogUmVuYW1lLi4uCgkodGh1bWIxX3J0eF9jb3N0cyk6IC4uLiB0byB0aGlzLgoJKHRodW1iX2NvbXB1dGVfc2F2ZV9yZWdfbWFzayk6IFJlbmFtZS4uLgoJKHRodW1iMV9jb21wdXRlX3NhdmVfcmVnX21hc2spOiAuLi4gdG8gdGhpcy4KCSh0aHVtYl9maW5hbF9wcmVzY2FuX2luc24pOiBSZW5hbWUuLi4KCSh0aHVtYjFfZmluYWxfcHJlc2Nhbl9pbnNuKTogLi4uIHRvIHRoaXMuCgkodGh1bWJfZXhwYW5kX2VwaWxvZ3VlKTogUmVuYW1lLi4uCgkodGh1bWIxX2V4cGFuZF9lcGlsb2d1ZSk6IC4uLiB0byB0aGlzLgoJKGFybV91bndpbmRfZW1pdF9zdG0pOiBSZW5hbWUuLi4KCShhcm1fdW53aW5kX2VtaXRfc2VxdWVuY2UpOiAuLi4gdG8gdGhpcy4KCSh0aHVtYjJfbGVnaXRpbWF0ZV9pbmRleF9wLCB0aHVtYjJfbGVnaXRpbWF0ZV9hZGRyZXNzX3AsCgl0aHVtYjFfY29tcHV0ZV9zYXZlX3JlZ19tYXNrLCBhcm1fZHdhcmZfaGFuZGxlX2ZyYW1lX3Vuc3BlYywKCXRodW1iMl9pbmRleF9tdWxfb3BlcmFuZCwgb3V0cHV0X21vdmVfdmZwLCBhcm1fc2hpZnRfbm1lbSwKCWFybV9zYXZlX2NvcHJvY19yZWdzLCB0aHVtYl9zZXRfZnJhbWVfcG9pbnRlciwgYXJtX3ByaW50X2NvbmRpdGlvbiwKCXRodW1iMl9maW5hbF9wcmVzY2FuX2luc24sIHRodW1iMl9hc21fb3V0cHV0X29wY29kZSwgYXJtX291dHB1dF9zaGlmdCwKCXRodW1iMl9vdXRwdXRfY2FzZXNpKTogTmV3IGZ1bmN0aW9ucy4KCShUQVJHRVRfRFdBUkZfSEFORExFX0ZSQU1FX1VOU1BFQyk6IERlZmluZS4KCShGTF9USFVNQjIsIEZMX05PVE0sIEZMX0RJViwgRkxfRk9SX0FSQ0g2VDIsIEZMX0ZPUl9BUkNINywKCUZMX0ZPUl9BUkNIN0EsIEZMX0ZPUl9BUkNIN1IsIEZMX0ZPUl9BUkNIN00sIEFSTV9MU0xfTkFNRSwKCVRIVU1CMl9XT1JLX1JFR1MpOiBEZWZpbmUuCgkoYXJtX2FyY2hfbm90bSwgYXJtX2FyY2hfdGh1bWIyLCBhcm1fYXJjaF9od2RpdiwgYXJtX2NvbmRleGVjX2NvdW50LAoJYXJtX2NvbmRleGVjX21hc2ssIGFybV9jb25kZXhlY19tYXNrbGVuKSk6IE5ldyB2YXJpYWJsZXMuCgkoYWxsX2FyY2hpdGVjdHVyZXMpOiBBZGQgYXJtdjZ0MiwgYXJtdjcsIGFybXY3YSwgYXJtdjdyIGFuZCBhcm12N20uCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBDaGVjayBuZXcgQ1BVIGNhcGFiaWxpdGllcy4KCVNldCBuZXcgYXJjaGl0ZWN0dXJlIGZsYWcgdmFyaWFibGVzLgoJKGFybV9pc3JfdmFsdWUpOiBIYW5kbGUgdjdtIGludGVycnVwdCBmdW5jdGlvbnMuCgkodXNlcl9yZXR1cm5faW5zbik6IFJldHVybiAwIGZvciB2N20gaW50ZXJydXB0IGZ1bmN0aW9ucy4gIEhhbmRsZQoJVGh1bWItMi4KCShjb25zdF9va19mb3JfYXJtKTogSGFuZGxlIFRodW1iLTIgY29uc3RhbnRzLgoJKGFybV9nZW5fY29uc3RhbnQpOiBEaXR0by4gIFVzZSBtb3Z3IHdoZW4gYXZhaWxhYmxlLgoJKGFybV9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IFJldHVybiBmYWxzZSBmb3IgdjdtIGludGVycnVwdAoJZnVuY3Rpb25zLgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MsIGFybV9jYWxsX3Rsc19nZXRfYWRkcik6IEhhbmRsZSBUaHVtYi0yLgoJKHRodW1iX2ZpbmRfd29ya19yZWdpc3RlciwgYXJtX2xvYWRfcGljX3JlZ2lzdGVyLAoJbGVnaXRpbWl6ZV90bHNfYWRkcmVzcywgYXJtX2FkZHJlc3NfY29zdCwgbG9hZF9tdWx0aXBsZV9zZXF1ZW5jZSwKCWVtaXRfbGRtX3NlcSwgZW1pdF9zdG1fc2VxLCBhcm1fc2VsZWN0X2NjX21vZGUsIGdldF9qdW1wX3RhYmxlX3NpemUsCglwcmludF9tdWx0aV9yZWcsIG91dHB1dF9tb3ZfbG9uZ19kb3VibGVfZnBhX2Zyb21fYXJtLAoJb3V0cHV0X21vdl9sb25nX2RvdWJsZV9hcm1fZnJvbV9mcGEsIG91dHB1dF9tb3ZfZG91YmxlX2ZwYV9mcm9tX2FybSwKCW91dHB1dF9tb3ZfZG91YmxlX2ZwYV9mcm9tX2FybSwgb3V0cHV0X21vdmVfZG91YmxlLAoJYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzaywgYXJtX2NvbXB1dGVfc2F2ZV9yZWcwX3JlZzEyX21hc2ssCglvdXRwdXRfcmV0dXJuX2luc3RydWN0aW9uLCBhcm1fb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlLAoJYXJtX291dHB1dF9lcGlsb2d1ZSwgYXJtX2dldF9mcmFtZV9vZmZzZXRzLCBhcm1fcmVnbm9fY2xhc3MsCglhcm1fb3V0cHV0X21pX3RodW5rLCB0aHVtYl9zZXRfcmV0dXJuX2FkZHJlc3MpOiBEaXR0by4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogSGFuZGxlIFRodW1iLTIuICBVc2UgYXJtX3NhdmVfY29wcm9jX3JlZ3MuCgkoYXJtX2NvcHJvY19tZW1fb3BlcmFuZCk6IEFsbG93IFBPU1RfSU5DL1BSRV9ERUMuCgkoYXJpdGhtZXRpY19pbnN0ciwgc2hpZnRfb3ApOiBVc2UgYXJtX3NoaWZ0X25tZW0uCgkoYXJtX3ByaW50X29wZXJhbmQpOiBVc2UgYXJtX3ByaW50X2NvbmRpdGlvbi4gIEhhbmRsZSAnKCcsICcpJywgJy4nLAoJJyEnIGFuZCAnTCcuCgkoYXJtX2ZpbmFsX3ByZXNjYW5faW5zbik6IFVzZSBleHRyYWN0X2NvbnN0cmFpbl9pbnNuX2NhY2hlZC4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBVc2UgdGh1bWJfc2V0X2ZyYW1lX3BvaW50ZXIuCgkoYXJtX2ZpbGVfc3RhcnQpOiBPdXRwdXQgZGlyZWN0aXZlIGZvciB1bmlmaWVkIHN5bnRheC4KCShhcm1fdW53aW5kX2VtaXRfc2V0KTogSGFuZGxlIHN0YWNrIGFsaWdubWVudCBpbnN0cnVjdGlvbi4KCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtOiBSZW1vdmUgZGVmYXVsdCBmb3IgX19BUk1fQVJDSF9fLgoJQWRkIHY2dDIsIHY3LCB2N2EsIHY3ciBhbmQgdjdtLgoJKFJFVExETSk6IEFkZCBUaHVtYi0yIGNvZGUuCgkoZG9faXQsIHNoaWZ0MSwgZG9fcHVzaCwgZG9fcG9wLCBDT05ELCBUSFVNQl9TWU5UQVgpOiBOZXcgbWFjcm9zLgoJKiBjb25maWcvYXJtL2FybS5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IERlZmluZSBfX3RodW1iMl9fLgoJKFRBUkdFVF9USFVNQjEsIFRBUkdFVF8zMkJJVCwgVEFSR0VUX1RIVU1CMiwgVEFSR0VUX0RTUF9NVUxUSVBMWSwKCVRBUkdFVF9JTlRfU0lNRCwgVEFSR0VUX1VOSUZJRURfQVNNLCBBUk1fRlRfU1RBQ0tBTElHTiwgSVNfU1RBQ0tBTElHTiwKCVRIVU1CMl9UUkFNUE9MSU5FX1RFTVBMQVRFLCBUUkFNUE9MSU5FX0FESlVTVF9BRERSRVNTLAoJQVNNX09VVFBVVF9PUENPREUsIFRIVU1CMl9HT19JRl9MRUdJVElNQVRFX0FERFJFU1MsCglUSFVNQjJfTEVHSVRJTUlaRV9BRERSRVNTLCBDQVNFX1ZFQ1RPUl9QQ19SRUxBVElWRSwKCUNBU0VfVkVDVE9SX1NIT1JURU5fTU9ERSwgQUREUl9WRUNfQUxJR04sIEFTTV9PVVRQVVRfQ0FTRV9FTkQsCglBREpVU1RfSU5TTl9MRU5HVEgpOiBEZWZpbmUuCgkoVEFSR0VUX1JFQUxMWV9JV01NWFQsIFRBUkdFVF9JV01NWFRfQUJJLCBDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSwKCVNUQVRJQ19DSEFJTl9SRUdOVU0sIEhBUkRfUkVHTk9fTlJFR1MsIElOREVYX1JFR19DTEFTUywKCUJBU0VfUkVHX0NMQVNTLCBNT0RFX0JBU0VfUkVHX0NMQVNTLCBTTUFMTF9SRUdJU1RFUl9DTEFTU0VTLAoJUFJFRkVSUkVEX1JFTE9BRF9DTEFTUywgU0VDT05EQVJZX09VVFBVVF9SRUxPQURfQ0xBU1MsCglTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTLCBMSUJDQUxMX1ZBTFVFLCBGVU5DVElPTl9WQUxVRV9SRUdOT19QLAoJVFJBTVBPTElORV9TSVpFLCBJTklUSUFMSVpFX1RSQU1QT0xJTkUsIEhBVkVfUFJFX0lOQ1JFTUVOVCwKCUhBVkVfUE9TVF9ERUNSRU1FTlQsIEhBVkVfUFJFX0RFQ1JFTUVOVCwgSEFWRV9QUkVfTU9ESUZZX0RJU1AsCglIQVZFX1BPU1RfTU9ESUZZX0RJU1AsIEhBVkVfUFJFX01PRElGWV9SRUcsIEhBVkVfUE9TVF9NT0RJRllfUkVHLAoJUkVHTk9fTU9ERV9PS19GT1JfQkFTRV9QLCBMRUdJVElNQVRFX0NPTlNUQU5UX1AsCglSRUdfTU9ERV9PS19GT1JfQkFTRV9QLCBSRUdfT0tfRk9SX0lOREVYX1AsIEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUywKCUxFR0lUSU1JWkVfQUREUkVTUywgVEhVTUIyX0xFR0lUSU1JWkVfQUREUkVTUywKCUdPX0lGX01PREVfREVQRU5ERU5UX0FERFJFU1MsIE1FTU9SWV9NT1ZFX0NPU1QsIEJSQU5DSF9DT1NULAoJQVNNX0FQUF9PRkYsIEFTTV9PVVRQVVRfQ0FTRV9MQUJFTCwgQVJNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSwKCUZJTkFMX1BSRVNDQU5fSU5TTiwgUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QLAoJUFJJTlRfT1BFUkFORF9BRERSRVNTKTogQWRqdXN0IGZvciBUaHVtYi0yLgoJKGFybV9hcmNoX25vdG0sIGFybV9hcmNoX3RodW1iMiwgYXJtX2FyY2hfaHdkaXYpOiBOZXcgZGVjbGFyYXRpb25zLgoJKiBjb25maWcvYXJtL2FybS1jb3Jlcy5kZWY6IEFkZCBhcm0xMTU2dDItcywgY29ydGV4LWE4LCBjb3J0ZXgtcjQgYW5kCgljb3J0ZXgtbTMuCgkqIGNvbmZpZy9hcm0vYXJtLXR1bmUubWQ6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogY29uZmlnL2FybS92ZnAubWQ6IEVuYWJsZSBwYXR0ZXJucyBmb3IgVGh1bWItMi4KCShhcm1fbW92c2lfdmZwKTogQWRkIG1vdncgYWx0ZXJuYXRpdmUuICBVc2Ugb3V0cHV0X21vdmVfdmZwLgoJKGFybV9tb3ZkaV92ZnAsIG1vdnNmX3ZmcCwgbW92ZGZfdmZwKTogVXNlIG91dHB1dF9tb3ZlX3ZmcC4KCSh0aHVtYjJfbW92c2lfdmZwLCB0aHVtYjJfbW92ZGlfdmZwLCB0aHVtYjJfbW92c2ZfdmZwLAoJdGh1bWIyX21vdmRmX3ZmcCwgdGh1bWIyX21vdnNmY2NfdmZwLCB0aHVtYjJfbW92ZGZjY192ZnApOiBOZXcuCgkqIGNvbmZpZy9hcm0vbGlidW53aW5kLlM6IEFkZCBUaHVtYi0yIGNvZGUuCgkqIGNvbmZpZy9hcm0vY29uc3RyYWludHMubWQ6IFVwZGF0ZSBpbmNsdWRlIFRodW1iLTIuCgkqIGNvbmZpZy9hcm0vaWVlZTc1NC1zZi5TOiBBZGQgVGh1bWItMi9VbmlmaWVkIGFzbSBzdXBwb3J0LgoJKiBjb25maWcvYXJtL2llZWU3NTQtZGYuUzogRGl0dG8uCgkqIGNvbmZpZy9hcm0vYnBhYmkuUzogRGl0dG8uCgkqIGNvbmZpZy9hcm0vdC1hcm0gKE1EX0lOQ0xVREVTKTogQWRkIHRodW1iMi5tZC4KCSogY29uZmlnL2FybS9wcmVkaWNhdGVzLm1kIChsb3dfcmVnaXN0ZXJfb3BlcmFuZCwKCWxvd19yZWdfb3JfaW50X29wZXJhbmQsIHRodW1iXzE2Yml0X29wZXJhdG9yKTogTmV3LgoJKHRodW1iX2NtcF9vcGVyYW5kLCB0aHVtYl9jbXBuZWdfb3BlcmFuZCk6IFJlbmFtZS4uLgoJKHRodW1iMV9jbXBfb3BlcmFuZCwgdGh1bWIxX2NtcG5lZ19vcGVyYW5kKTogLi4uIHRvIHRoaXMuCgkqIGNvbmZpZy9hcm0vdC1hcm0tZWxmOiBBZGQgYXJtdjcgbXVsdGlsaWIuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBVcGRhdGUgcGF0dGVybnMgZm9yIFRodW1iLTIgYW5kIFVuaWZpZWQgYXNtLgoJSW5jbHVkZSB0aHVtYjIubWQuCgkoVU5TUEVDX1NUQUNLX0FMSUdOLCBjZV9jb3VudCk6IE5ldy4KCShhcm1faW5jc2NjLCBhcm1fZGVjc2NjLCBhcm1fdW1heHNpMywgYXJtX3VtaW5zaTMsCglhcm1femVyb19leHRlbmRzaWRpMiwgYXJtX3plcm9fZXh0ZW5kcWlkaTIpOiBOZXcKCWluc25zL2V4cGFuZGVycy4KCSogY29uZmlnL2FybS9mcGEubWQ6IFVwZGF0ZSBwYXR0ZXJucyBmb3IgVGh1bWItMiBhbmQgVW5pZmllZCBhc20uCgkodGh1bWIyX21vdnNmX2ZwYSwgdGh1bWIyX21vdmRmX2ZwYSwgdGh1bWIyX21vdnhmX2ZwYSwKCXRodW1iMl9tb3ZzZmNjX2ZwYSwgdGh1bWIyX21vdmRmY2NfZnBhKTogTmV3IGluc25zLgoJKiBjb25maWcvYXJtL2NpcnJ1cy5tZDogVXBkYXRlIHBhdHRlcm5zIGZvciBUaHVtYi0yIGFuZCBVbmlmaWVkIGFzbS4KCShjaXJydXNfdGh1bWIyX21vdmRpLCBjaXJydXNfdGh1bWIyX21vdnNpX2luc24sCgl0aHVtYjJfY2lycnVzX21vdnNmX2hhcmRfaW5zbiwgdGh1bWIyX2NpcnJ1c19tb3ZkZl9oYXJkX2luc24pOiBOZXcKCWluc25zLgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IEFSTXY3LU0gaW50ZXJydXB0IGZ1bmN0aW9ucy4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBUaHVtYi0yIG5ldyBjb3JlcythcmNoaXRlY3R1cmVzLgoKMjAwNy0wMS0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB1bndpbmQtZHcyLmMgKFNJR05BTF9GUkFNRV9CSVQsIEVYVEVOREVEX0NPTlRFWFRfQklUKTogRGVmaW5lLgoJKHN0cnVjdCBfVW53aW5kX0NvbnRleHQpOiBSZW5hbWUgYXJnc19zaXplIHRvIGZsYWdzLCByZW1vdmUKCXNpZ25hbF9mcmFtZSBmaWVsZCwgYWRkIGEgbmV3IGFyZ3Nfc2l6ZSBmaWVsZCBhbmQgdmVyc2lvbiBmaWVsZC4KCShfVW53aW5kX0lzU2lnbmFsRnJhbWUsIF9VbndpbmRfU2V0U2lnbmFsRnJhbWUsCglfVW53aW5kX0lzRXh0ZW5kZWRDb250ZXh0KTogTmV3IGlubGluZSBmdW5jdGlvbnMuCgkoX1Vud2luZF9HZXRHUiwgX1Vud2luZF9TZXRHUiwgX1Vud2luZF9HZXRHUlB0ciwgX1Vud2luZF9TZXRHUlB0cik6CglBc3N1bWUgYnlfdmFsdWUgYXJyYXkgaXMgb25seSBwcmVzZW50IGlmIF9VbndpbmRfSXNFeHRlbmRlZENvbnRleHQuCgkoX1Vud2luZF9HZXRJUEluZm8sIGV4ZWN1dGVfY2ZhX3Byb2dyYW0sIHV3X2ZyYW1lX3N0YXRlX2Zvcik6IFVzZQoJX1Vud2luZF9Jc1NpZ25hbEZyYW1lLgoJKF9fZnJhbWVfc3RhdGVfZm9yKTogSW5pdGlhbGl6ZSBjb250ZXh0LmZsYWdzIHRvIEVYVEVOREVEX0NPTlRFWFRfQklULgoJKHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBVc2UgX1Vud2luZF9TZXRTaWduYWxGcmFtZS4KCSh1d19pbml0X2NvbnRleHRfMSk6IEluaXRpYWxpemUgY29udGV4dC0+ZmxhZ3MgdG8KCUVYVEVOREVEX0NPTlRFWFRfQklULgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LXVud2luZC5oIChmcm9iX3VwZGF0ZV9jb250ZXh0KTogVXNlCglfVW53aW5kX1NldFNpZ25hbEZyYW1lLgoKMjAwNy0wMS0wMyAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMDM1MwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcl9jb21wbGV4X3BhcnQpOiBNb3ZlIGJlbG93Cgl0cmVlX3RvX2dpbXBsZV90dXBsZS4gIENhbGwgdHJlZV90b19naW1wbGVfdHVwbGUgd2hlbiB3ZSBuZWVkCgl0aGUgdmFsdWUuCgoyMDA3LTAxLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoTk9OX1NUQUNLX1JFR19QLCBSRUdOT19PS19GT1JfU0lSRUdfUCwKCVJFR05PX09LX0ZPUl9ESVJFR19QLCBSRVdSSVRFX0FERFJFU1MsIEFTTV9PUEVSQU5EX0xFVFRFUiwKCVJFVCwgQVRfU1ApOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpzc2VfcHJvbG9ndWVfc2F2ZV9pbnNuKTogVXNlIHJldHVybgoJaW5zdGVhZCBvZiBSRVQuCgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKTogVXNlIFZFQ19zYWZlX2dyb3dfY2xlYXJlZC4KCSogY2ZnYnVpbGQuYyAoZmluZF9iYXNpY19ibG9ja3MpOiBMaWtld2lzZS4KCSogY2ZncnRsLmMgKHJ0bF9jcmVhdGVfYmFzaWNfYmxvY2spOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAodGVtcF9zbG90c19hdF9sZXZlbCk6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAoc3RhY2tfcmVnc19tZW50aW9uZWQpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAoYWxsb2NhdGVfcmVnX2luZm8pOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAoaW5pdF9lbXB0eV90cmVlX2NmZywgYnVpbGRfdHJlZV9jZmcsIGNyZWF0ZV9iYiwKCXNldF9iYl9mb3Jfc3RtdCwgbW92ZV9ibG9ja190b19mbik6IExpa2V3aXNlLgoJKiB0cmVlLWNvbXBsZXguYyAodHJlZV9sb3dlcl9jb21wbGV4KTogTGlrZXdpc2UuCgkqIHZlYy5oIChWRUNfc2FmZV9ncm93X2NsZWFyZWQpOiBOZXcuCgoJKiBjZ3JhcGh1bml0LmMsIHRyZWUtc3NhLWFsaWFzLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNy0wMS0wMyAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogbG9vcC11bnN3aXRjaC5jICh1bnN3aXRjaF9sb29wKTogUGFzcyBwcm9iYWJpbGl0aWVzIHRvIGxvb3BpZnkuCgkqIHRyZWUtc3NhLWxvb3AtdW5zd2l0Y2guYyAodHJlZV91bnN3aXRjaF9sb29wKTogUGFzcyBwcm9iYWJpbGl0aWVzCgl0byBsb29wX3ZlcnNpb24uCgkqIGNmZ2xvb3BtYW5pcC5jIChzY2FsZV9sb29wX2ZyZXF1ZW5jaWVzKTogRXhwb3J0LgoJKGxvb3BpZnkpOiBTY2FsZSB0aGUgZnJlcXVlbmNpZXMgYnkgcHJlc2NyaWJlZCBjb2VmZmljaWVudHMuCgkoc2V0X3plcm9fcHJvYmFiaWxpdHkpOiBOZXcgZnVuY3Rpb24uCgkoZHVwbGljYXRlX2xvb3BfdG9faGVhZGVyX2VkZ2UpOiBJbXByb3ZlIHVwZGF0aW5nIG9mIGZyZXF1ZW5jaWVzLgoJKGx2X2FkanVzdF9sb29wX2VudHJ5X2VkZ2UsIGxvb3BfdmVyc2lvbik6IFNldCBwcm9iYWJpbGl0aWVzCglhbmQgZnJlcXVlbmNpZXMgYWNjb3JkaW5nIHRvIGFyZ3VtZW50cy4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jICh0cmVlX3Vucm9sbF9sb29wKTogU2V0IHByb2JhYmlsaXRpZXMKCWNvcnJlY3RseS4KCSogY2ZnLmMgKHNjYWxlX2Jic19mcmVxdWVuY2llc19pbnQpOiBBbGxvdyBzY2FsaW5nIHRoZSBmcmVxdWVuY2llcyB1cC4KCSogbW9kdWxvLXNjaGVkLmMgKHNtc19zY2hlZHVsZSk6IFNldCBwcm9iYWJpbGl0aWVzIGZvciBlbnRlcmluZwoJdmVyc2lvbmVkIGxvb3AgY29ycmVjdGx5LgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBEaXR0by4KCSogY2ZnbG9vcC5oIChsb29waWZ5LCBsb29wX3ZlcnNpb24pOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKHNjYWxlX2xvb3BfZnJlcXVlbmNpZXMpOiBEZWNsYXJlZC4KCjIwMDctMDEtMDIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jOiBJbmNsdWRlIHRyZWUtZmxvdy5oCgkoY2dyYXBoX2FkZF9uZXctZnVuY3Rpb24pOiBIYW5kbGUgSVBBX1NTQSBtb2RlOyBleGVjdXRlCgllYXJseV9sb2NhbF9wYXNzZXMuCgkqIGNncmFwaC5oIChlbnVtIGNncmFwaF9zdGF0ZSk6IEFkZCBDR1JBUEhfU1RBVEVfSVBBX1NTQS4KCSogdHJlZS1wYXNzLmggKHBhc3NfYWxsX2Vhcmx5X29wdGltaXphdGlvbnMpOiBEZWNsYXJlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9wcm9jZXNzX25ld19mdW5jdGlvbnMpOiBBZGQgSVBBX1NTQTsgZXhlY3V0ZQoJZWFybHlfbG9jYWxfcGFzc2VzLgoJKGNncmFwaF9hbmFseXplX2Z1bmN0aW9uKTogRG8gZWFybHlfbG9jYWxfcGFzc2VzLgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfZGVjbF9jYWNoZV9sb2NhbHMsIG1mX2J1aWxkX2NoZWNrX3N0YXRlbWVudF9mb3IpOgoJRG8gbm90IGFkZCByZWZlcmVuY2VkIHZhcnMuCgkqIHRyZWUtb3B0aW1pemUuYyAoZ2F0ZV9hbGxfb3B0aW1pemF0aW9ucyk6IERvIG5vdCBleGVjdXRlIHdoZW4gbm90IGluCglTU0EgZm9ybS4KCShnYXRlX2FsbF9lYXJseV9sb2NhbF9wYXNzZXMpOiBOZXcgZ2F0ZS4KCShwYXNzX2Vhcmx5X2xvY2FsX3Bhc3Nlcyk6IFVzZSBuZXcgZ2F0ZS4KCShleGVjdXRlX2Vhcmx5X2xvY2FsX29wdGltaXphdGlvbnMpOiBOZXcgZnVuY3Rpb25zLgoJKGdhdGVfYWxsX2Vhcmx5X29wdGltaXphdGlvbnMpOiBOZXcgZ2F0ZS4KCShwYXNzX2FsbF9lYXJseV9vcHRpbWl6YXRpb25zKTogTmV3IHBhc3MuCgkoZXhlY3V0ZV9mcmVlX2RhdGFzdHJ1Y3R1cmVzKTogRnJlZSBTU0Egb25seSB3aGVuIGluaXRpYWxpemVkLgoJKGdhdGVfaW5pdF9kYXRhc3RydWN0dXJlcyk6IEluaXQgb25seSB3aGVuIG9wdGltaXppbmcuCgkodHJlZV9sb3dlcmluZ19wYXNzZXMpOiBEbyBlYXJseSBsb2NhbCBwYXNzZXMgd2hlbiBjYWxsZWQgbGF0ZS4KCSogdHJlZS1wcm9maWxlLmMgKGRvX3RyZWVfcHJvZmlsaW5nKTogRG9uJ3QgcHJvZmlsZSBmdW5jdGlvbnMgYWRkZWQKCWxhdGUuCgkoZG9fZWFybHlfdHJlZV9wcm9maWxpbmcsIHBhc3NfZWFybHlfdHJlZV9wcm9maWxlKTogS2lsbC4KCSogdHJlZS1jZmcuYyAodXBkYXRlX21vZGlmaWVkX3N0bXRzKTogRG8gbm90IHVwZGF0ZSB3aGVuIG9wZXJhbmRzIGFyZQoJbm90IGFjdGl2ZS4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uc19wYXNzZXMpOiBSZW9yZGVyIHNvIHdlIGdvIGludG8gU1NBCglkdXJpbmcgZWFybHlfbG9jYWxfcGFzc2VzLgoJKiBNYWtlZmlsZS5pbiAoY2dyYXBoLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiB0cmVlLWZsb3cuaC4KCgoyMDA3LTAxLTAyICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgY29weXJpZ2h0IHllYXIuCgoyMDA3LTAxLTAyICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBFeHBvcnQgR0NDX0VYRUNfUFJFRklYIGJlZm9yZSBjYWxsaW5nICQoUlVOVEVTVCkKCWluICQobGFuZ19jaGVja3MpIGFuZCBjaGVjay1jb25zaXN0ZW5jeSB0YXJnZXRzLgoKMjAwNy0wMS0wMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1tdWRmbGFwLmMgKG1mX2RlY2xfY2FjaGVfbG9jYWxzLCBtZl9idWlsZF9jaGVja19zdGF0ZW1lbnRfZm9yKToKCURvIG5vdCBhZGQgcmVmZXJlbmNlZCB2YXJzLgoJKiB0cmVlLWNmZy5jICh1cGRhdGVfbW9kaWZpZWRfc3RtdHMpOiBEbyBub3QgdXBkYXRlIHdoZW4gU1NBIG9wZXJhbmRzCglhcmUgbm90IGFjdGl2ZS4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFB1dCBtdWRmbGFwXzIgYWZ0ZXIKCWZyZWVfZGF0YXN0cnVjdHVyZXMuCgoyMDA3LTAxLTAyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLW9wdGltaXplIChleGVjdXRlX2ZpeHVwX2NmZyk6IFNldCBhZnRlcl9pbmxpbmluZyBmbGFnLgoJU2V0IE5PVEhST1cgZmxhZyBvbiBjYWxsIHN0YXRlbWVudHMgcHJvdmVkIHRvIGJlIG5vdGhyb3cuCglVcGRhdGUgc3RhdGVtZW50IG9mIGxvY2FsIGNhbGxzIHNvIG5ldyBwdXJlL2NvbnN0IGZ1bmN0aW9ucyBhcmUKCXVwZGF0ZWQuIFVwZGF0ZV9zc2Egd2hlbiBpbiBzc2EgZm9ybS4gTWFyayBQSEkgbm9kZXMgb2Ygbm9ubG9jYWwKCWdvdG8gcmVjZWl2ZXJzLgoJKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IFJlZ2lzdGVyIGhvb2tzIGFuZCBpbml0aWFsaXplIGJpdG1hcAoJZWFybHkuIERvIG5vdCBzZXQgYWZ0ZXJfaW5saW5pbmcgZmxhZy4KCjIwMDctMDEtMDIgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogc2JpdG1hcC5jIChIT1NUX0JJVFNfUEVSX0xPTkdfTE9ORyk6IENoYW5nZSB0bwoJSE9TVF9CSVRTX1BFUl9MT05HTE9ORwoKMjAwNy0wMS0wMiAgTWFudWVsIExvcGV6LUliYW5leiA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBjLzE5OTc3CgkqIGMtdHlwZWNrLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBEb24ndCBlbWl0IHBlZGFudGljIG92ZXJmbG93Cgl3YXJuaW5nIGZvciBub24tc3RhdGljIGluaXRpYWxpemVycy4KCjIwMDctMDEtMDIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCwgYXJtL2FybS5jLCBkYXJ3aW4uYywgZnJ2L2Zydi5tZCwKCW0zMnIvbTMyci5jLCBtMzJyL20zMnIuYywgbW4xMDMwMC9tbjEwMzAwLm1kLCBwYS9wYS5jLAoJcnM2MDAwL3JzNjAwMC5jLCBzMzkwL3MzOTAubWQsIHNoL3NoLm1kLCBzcGFyYy9zcGFyYy5jOgoJQWx3YXlzIHVzZSBzZXRfdW5pcXVlX3JlZ19ub3RlIHRvIGFkZCBSRUdfRVFVQUwgbm90ZXMuCgoyMDA3LTAxLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCglSZXZlcnQ6CgkyMDA3LTAxLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfYW5hbHlzaXMpOiBVc2UgVkVDX3NhZmVfZ3Jvd19jbGVhcmVkLgoJKiBjZmdidWlsZC5jIChmaW5kX2Jhc2ljX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAocnRsX2NyZWF0ZV9iYXNpY19ibG9jayk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jICh0ZW1wX3Nsb3RzX2F0X2xldmVsKTogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jIChzdGFja19yZWdzX21lbnRpb25lZCk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChhbGxvY2F0ZV9yZWdfaW5mbyk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jIChpbml0X2VtcHR5X3RyZWVfY2ZnLCBidWlsZF90cmVlX2NmZywgY3JlYXRlX2JiLAoJc2V0X2JiX2Zvcl9zdG10LCBtb3ZlX2Jsb2NrX3RvX2ZuKTogTGlrZXdpc2UuCgkqIHRyZWUtY29tcGxleC5jICh0cmVlX2xvd2VyX2NvbXBsZXgpOiBMaWtld2lzZS4KCSogdmVjLmggKFZFQ19zYWZlX2dyb3dfY2xlYXJlZCk6IE5ldy4KCjIwMDctMDEtMDIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBXaGVuIHdhcm5pbmcgYWJvdXQKCXVzaW5nIGFuIGFzc2lnbm1lbnQgYXMgYSB0cnV0aCB2YWx1ZSwgc2V0IFRSRUVfTk9fV0FSTklORy4KCjIwMDctMDEtMDIgIE1hbnVlbCBMb3Blei1JYmFuZXogIDxtYW51QGdjYy5nbnUub3JnPgoKCVBSIG1pZGRsZS1lbmQvNzY1MQoJKiBjLm9wdCAoV29sZC1zdHlsZS1kZWNsYXJhdGlvbik6IE5ldy4KCSogZG9jL2ludm9rZS50ZXhpIChDLW9ubHkgV2FybmluZyBPcHRpb25zKTogTmV3LgoJKFdvbGQtc3R5bGUtZGVjbGFyYXRpb24pOiBEb2N1bWVudCBpdC4KCShXZXh0cmEpOiBFbmFibGVkIGJ5IC1XZXh0cmEuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBFbmFibGVkIGJ5IC1XZXh0cmEuCgkqIGMtZGVjbC5jIChkZWNsc3BlY3NfYWRkX3Njc3BlYyk6IFJlcGxhY2UgLVdleHRyYSB3aXRoCgktV29sZC1zdHlsZS1kZWNsYXJhdGlvbi4KCjIwMDctMDEtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6IFVzZSBWRUNfc2FmZV9ncm93X2NsZWFyZWQuCgkqIGNmZ2J1aWxkLmMgKGZpbmRfYmFzaWNfYmxvY2tzKTogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jIChydGxfY3JlYXRlX2Jhc2ljX2Jsb2NrKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHRlbXBfc2xvdHNfYXRfbGV2ZWwpOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmMgKHN0YWNrX3JlZ3NfbWVudGlvbmVkKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKGFsbG9jYXRlX3JlZ19pbmZvKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnLmMgKGluaXRfZW1wdHlfdHJlZV9jZmcsIGJ1aWxkX3RyZWVfY2ZnLCBjcmVhdGVfYmIsCglzZXRfYmJfZm9yX3N0bXQsIG1vdmVfYmxvY2tfdG9fZm4pOiBMaWtld2lzZS4KCSogdHJlZS1jb21wbGV4LmMgKHRyZWVfbG93ZXJfY29tcGxleCk6IExpa2V3aXNlLgoJKiB2ZWMuaCAoVkVDX3NhZmVfZ3Jvd19jbGVhcmVkKTogTmV3LgoKMjAwNy0wMS0wMiAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBTaW5jZSB2YXJpYW50cyBvZgoJdm9pZF90eXBlX25vZGUgZ2V0IGJ1aWx0IGJlZm9yZSBpdCBpcyBnaXZlbiBhIG5hbWUsIHdlIG5lZWQgdG8KCWdpdmUgdGhvc2UgdmFyaWFudHMgdGhlIG5hbWUsIHRvby4KCShjb21wbGV0ZV9hcnJheV90eXBlKTogV2UgbmVlZCB0byB3b3JrIHdpdGggdGhlIGNhbm9uaWNhbCBtYWluCgl0eXBlIG9mIHRoZSBhcnJheSwgZnJvbSB3aGljaCB3ZSB3aWxsIGJ1aWxkIHRoZSBxdWFsaWZpZWQgdmVyc2lvbi4KCSogcGFyYW1zLmRlZiAoUEFSQU1fVkVSSUZZX0NBTk9OSUNBTF9UWVBFUyk6IE5ldy4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogRGlzcGxheSBjYW5vbmljYWwgdHlwZSBpbmZvcm1hdGlvbgoJZm9yIGVhY2ggdHlwZS4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUpOiBXaGVuIHdlIGRvbid0IGtub3cgdGhlCglhbGlnbm1lbnQgb2YgYSB0eXBlIGZvciB3aGljaCB3ZSdyZSBidWlsZGluZyBhbiBhcnJheSwgd2UgZW5kIHVwCglndWVzc2luZyB3cm9uZywgc28gbWFrZSB0aGUgdHlwZSByZXF1aXJlIHN0cnVjdHVyYWwgZXF1YWxpdHkuCgkqIHRyZWUuYyAobWFrZV9ub2RlX3N0YXQpOiBXaGVuIHdlIGJ1aWxkIGEgbmV3IHR5cGUsIGl0IGlzIGl0cwoJb3duIGNhbm9uaWNhbCB0eXBlLgoJKGJ1aWxkX3R5cGVfYXR0cmlidXRlX3F1YWxfdmFyaWFudCk6IFdoZW4gYnVpbGRpbmcgYW4gYXR0cmlidXRlCgl2YXJpYW50LCBpdHMgY2Fub25pY2FsIHR5cGUgaXMgdGhlIG5vbi1hdHRyaWJ1dGUgdmFyaWFudC4gSG93ZXZlciwKCWlmIHRoZSBhdHRyaWJ1dGVzIGFyZSB0YXJnZXQtZGVwZW5kZW50IGFuZCB0aGV5IGRpZmZlciwgd2UgbmVlZCB0bwoJdXNlIHN0cnVjdHVyYWwgZXF1YWxpdHkgY2hlY2tzIGZvciB0aGlzIHR5cGUuCgkoYnVpbGRfcXVhbGlmaWVkX3R5cGUpOiBBIHF1YWxpZmllZCB0eXBlIGlzIG5vdCBlcXVpdmFsZW50IHRvIGl0cwoJdW5xdWFsaWZpZWQgdmFyaWFudDsgc2V0IHRoZSBjYW5vbmljYWwgdHlwZSBhcHByb3ByaWF0ZWx5LgoJKGJ1aWxkX2Rpc3RpbmN0X3R5cGVfY29weSk6IFdoZW4gYnVpbGRpbmcgYSBkaXN0aW5jdCB0eXBlIGZyb20KCWFub3RoZXIgdHlwZSwgdGhlIG5ldyB0eXBlIGlzIGl0cyBvd24gY2Fub25pY2FsIHR5cGUuCgkoYnVpbGRfdmFyaWFudF90eXBlX2NvcHkpOiBXaGVuIGJ1aWxkaW5nIGEgbmV3IHR5cGUgdmFyaWFudCwgd2UKCWFzc3VtZSB0aGF0IGl0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIG9yaWdpbmFsIHR5cGUuCgkoYnVpbGRfcG9pbnRlcl90eXBlX2Zvcl9tb2RlKTogV2hlbiBidWlsZGluZyBhIHBvaW50ZXIgdHlwZSwgYWxzbwoJYnVpbGQgYSBjYW5vbmljYWwgdHlwZSBwb2ludGVyLgoJKGJ1aWxkX3JlZmVyZW5jZV90eXBlX2Zvcl9tb2RlKTogV2hlbiBidWlsZGluZyBhIHJlZmVyZW5jZSB0eXBlLAoJYWxzbyBidWlsZCBhIGNhbm9uaWNhbCB0eXBlIHJlZmVyZW5jZS4KCShidWlsZF9pbmRleF90eXBlKTogV2hlbiB3ZSBjYW4ndCBoYXNoIGFuIGluZGV4IHR5cGUgKGUuZy4sCgliZWNhdXNlIGl0cyBtYXhpbXVtIHZhbHVlIGlzIG5lZ2F0aXZlKSwgdGhlIGluZGV4IHR5cGUgcmVxdWlyZXMKCXN0cnVjdHVyYWwgZXF1YWxpdHkgdGVzdHMuCgkoYnVpbGRfYXJyYXlfdHlwZSk6IEJ1aWxkIHRoZSBjYW5vbmljYWwgZm9ybSBvZiBhbiBhcnJheSB0eXBlLgoJKGJ1aWxkX2Z1bmN0aW9uX3R5cGUpOiBGdW5jdGlvbiB0eXBlcyByZXF1aXJlIHN0cnVjdHVyYWwgZXF1YWxpdHksCgliZWNhdXNlIHRoZXkgY29udGFpbiBkZWZhdWx0IGFyZ3VtZW50cywgYXR0cmlidXRlcywgZXRjLgoJKGJ1aWxkX21ldGhvZF90eXBlX2RpcmVjdGx5KTogRGl0dG8gZm9yIG1ldGhvZCB0eXBlcy4KCShidWlsZF9vZmZzZXRfdHlwZSk6IEJ1aWxkIHRoZSBjYW5vbmljYWwgb2Zmc2V0IHR5cGUuCgkoYnVpbGRfY29tcGxleF90eXBlKTogQnVpbGQgdGhlIGNhbm9uaWNhbCB2ZWN0b3IgdHlwZS4KCShtYWtlX3ZlY3Rvcl90eXBlKTogQnVpbGQgdGhlIGNhbm9uaWNhbCB2ZWN0b3IgdHlwZS4KCSogdHJlZS5oIChUWVBFX0NBTk9OSUNBTCk6IE5ldy4KCShUWVBFX1NUUlVDVFVSQUxfRVFVQUxJVFlfUCk6IE5ldy4KCShTRVRfVFlQRV9TVFJVQ1RVUkFMX0VRVUFMSVRZKTogTmV3LgoJKHN0cnVjdCB0cmVlX3R5cGUpOiBBZGRlZCAiY2Fub25pY2FsIiBmaWVsZC4KCSogcGFyYW1zLmggKFZFUklGWV9DQU5PTklDQUxfVFlQRVMpOiBOZXcuCgkqIGRvYy9jLXRyZWUudGV4aSAoVFlQRV9DQU5PTklDQUwpOiBEb2N1bWVudC4KCShUWVBFX1NUUlVDVFVSQUxfRVFVQUxJVFlfUCk6IERvY3VtZW50LgoJKFNFVF9UWVBFX1NUUlVDVFVSQUxfRVFVQUxJVFkpOiBEb2N1bWVudC4KCSogZG9jL2ludm9rZS50ZXhpICh2ZXJpZnktY2Fub25pY2FsLXR5cGVzKTogRG9jdW1lbnQgLS1wYXJhbQoJcGFyYW1ldGVyIGZvciB2ZXJpZnlpbmcgY2Fub25pY2FsIHR5cGVzLgoKMjAwNy0wMS0wMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjIChwb3dlcnBjLSotZWFiaXNwZSosIHBvd2VycGMtKi1lYWJpc2ltYWx0aXZlYyosCglwb3dlcnBjLSotZWFiaXNpbSosIHBvd2VycGMtKi1lYWJpYWx0aXZlYyosIHBvd2VycGMtKi1lYWJpKiwKCXBvd2VycGMtKi1ydGVtcyosIHBvd2VycGMtd3JzLXZ4d29ya3MsIHBvd2VycGMtd3JzLXZ4d29ya3NhZSwKCXBvd2VycGNsZS0qLWVhYmlzaW0qLCBwb3dlcnBjbGUtKi1lYWJpKik6IEFkZCByczYwMDAvZTUwMC5oIHRvCgl0bV9maWxlLgoJKiBjb25maWcvcnM2MDAwL2U1MDAuaDogTmV3LgoJKiBjb25maWcvcnM2MDAwL2VhYmkuaCAoVEFSR0VUX1NQRV9BQkksIFRBUkdFVF9TUEUsIFRBUkdFVF9FNTAwLAoJVEFSR0VUX0lTRUwsIFRBUkdFVF9GUFJTLCBUQVJHRVRfRTUwMF9TSU5HTEUsIFRBUkdFVF9FNTAwX0RPVUJMRSk6CglSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvbGludXhzcGUuaCAoVEFSR0VUX1NQRV9BQkksIFRBUkdFVF9TUEUsCglUQVJHRVRfRTUwMCwgVEFSR0VUX0lTRUwsIFRBUkdFVF9GUFJTLCBUQVJHRVRfRTUwMF9TSU5HTEUsCglUQVJHRVRfRTUwMF9ET1VCTEUpOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvdnh3b3Jrcy5oIChUQVJHRVRfU1BFX0FCSSwgVEFSR0VUX1NQRSwKCVRBUkdFVF9FNTAwLCBUQVJHRVRfSVNFTCwgVEFSR0VUX0ZQUlMpOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKENIRUNLX0U1MDBfT1BUSU9OUyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBVc2UKCUNIRUNLX0U1MDBfT1BUSU9OUy4KCjIwMDctMDEtMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IENoZWNrIChUQVJHRVRfU1BFIHx8CglUQVJHRVRfRTUwMF9ET1VCTEUpLCBub3QgVEFSR0VUX0U1MDAsIGZvciAleS4KCShyczYwMDBfZ2VuZXJhdGVfY29tcGFyZSwgcnM2MDAwX2VtaXRfc0NPTkQsIG91dHB1dF9jYnJhbmNoLAoJcnM2MDAwX2VtaXRfY21vdmUpOiBEb24ndCBjaGVjayBUQVJHRVRfRTUwMC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGJ1bm9yZGVyZWQsIGJvcmRlcmVkLCBzdW5vcmRlcmVkLAoJc29yZGVyZWQpOiBEb24ndCBjaGVjayBUQVJHRVRfRTUwMC4KCjIwMDctMDEtMDEgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmVnbm9fbW9kZV9va19mb3JfYmFzZV9wKTogVXNlCglIQVJEX1JFR0lTVEVSX05VTV9QLgoKMjAwNy0wMS0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KSA8RVFfRVhQUj46IEZvbGQgIihYXkMxKSBlcS9uZSBDMiIgaW50bwoJIlggZXEvbmUgKEMxXkMyKSIuICBGb2xkICIoWF5aKSBlcS9uZSAoWV5aKSIgYXMgIlggZXEvbmUgWSIgd2hlbiBaCgloYXMgbm8gc2lkZS1lZmZlY3RzLiAgRm9sZCAiKFheQzEpIGVxL25lIChZXkMyKSIgYXMgIihYXihDMV5DMikpCgllcS9uZSBZIi4KCjIwMDctMDEtMDEgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBSZW1vdmUgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBBcHBsZSdzIGdjYy0zLjEuCgoyMDA3LTAxLTAyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwMzExCgkqIGNhbGxlci1zYXZlLmMgKGFkZF9zdG9yZWRfcmVncyk6IE9ubHkgaGFuZGxlIFNVQlJFR3MgaWYgaW5uZXIKCVJFRyBpcyBhIGhhcmQgcmVnaXN0ZXIuICBEbyBub3QgbW9kaWZ5IFJFRyBiZWZvcmUgY2FsbGluZwoJc3VicmVnX25yZWdzLgoJKiBydGxhbmFsLmMgKHN1YnJlZ19nZXRfaW5mbyk6IERvbid0IGFzc2VydCBzaXplIG9mIFhNT0RFIGlzIGEKCW11bHRpcGxlIG9mIHRoZSBzaXplIG9mIFlNT0RFIGZvciBjZXJ0YWluIGxvd3BhcnQgY2FzZXMuCgoyMDA3LTAxLTAxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgbWlkZGxlLWVuZC8zMDI1MwoJKiBnaW1wbGlmeSAodm9pZGlmeV93cmFwcGVyX2V4cHIpOiBVcGRhdGUgZm9yCglHSU1QTEVfTU9ESUZZX1NUTVQuCgoyMDA3LTAxLTAxICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCVBSIHRhcmdldC8yOTE2NgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogQWNjb3VudCBzcGFjZSBmb3IKCXNhdmUgb2YgQlIwIGluIGV4dHJhX3NwaWxsX3NpemUgaW5zdGVhZCBvZiBzcGlsbF9zaXplLgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogU2F2ZSBCUjAgb3V0c2lkZSBvZiB0aGUgZ3IvYnIvZnIgc3BpbGwKCWFyZWEuCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBSZXN0b3JlIEJSMCBmcm9tIGl0cyBuZXcgbG9jYXRpb24uCgoyMDA3LTAxLTAxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9pbml0X2NvbnN0cnVjdG9yIDxjYXNlIFZFQ1RPUl9UWVBFPik6CglVc2UgYSB0ZW1wb3JhcnkgdmFyaWFibGUgaWYgdGhlIGxlZnQgaGFuZCBzaWRlIGlzIG5vdCBhIGdpbXBsZQoJcmVnaXN0ZXIuCgoyMDA3LTAxLTAxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9yZXR1cm5fZXhwcik6IE1ha2UgdGhlIHRlbXBvcmFyeSB2YXJpYWJsZQoJZm9yIHRoZSByZXR1cm4gZXhwcmVzc2lvbiwgYSBnaW1wbGUgcmVnaXN0ZXIgdmFyaWFibGUuCgoyMDA3LTAxLTAxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBlbWl0LXJ0bC5jIChlbWl0X2NvcHlfb2ZfaW5zbl9hZnRlcik6IERvIG5vdCBjYWxsIGNvcHlfaW5zbl8xIGZvcgoJSU5TTl9MSVNULgoKMjAwNy0wMS0wMSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWd1cmUuYWMgKEhBVkVfR0FTX0xJVEVSQUwxNik6IEFkZCBhdXRvY29uZiBjaGVjayBmb3IKCS5saXRlcmFsMTYuCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfc2VsZWN0X3J0eF9zZWN0aW9uKTogVXNlCglIQVZFX0dBU19MSVRFUkFMMTYuCgkoZGFyd2luX21lcmdlYWJsZV9jb25zdGFudF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNy0wMS0wMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX29wdGltaXplKTogQ2FsbCBjZ3JhcGhfYWRkX25ld19mdW5jdGlvbnMKCWJlZm9yZSBzdGFydGluZyBJUEEgcGFzc2VzLgo=