CiAgICAgICBJbmRleCBvZiBEb2N1bWVudGF0aW9uIGZvciBQZW9wbGUgSW50ZXJlc3RlZCBpbiBXcml0aW5nIGFuZC9vcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyB0aGUgTGludXggS2VybmVsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICBKdWFuLU1hcmlhbm8gZGUgR295ZW5lY2hlIDxqbXNleWFzQGRpdC51cG0uZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi8qCiAqIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IG1heSBiZSBmb3VuZCBhdDoKICogICBodHRwOi8vd3d3LmRpdC51cG0uZXMvfmptc2V5YXMvbGludXgva2VybmVsL2hhY2tlcnMtZG9jcy5odG1sCiAqLwoKICAgVGhlIG5lZWQgZm9yIGEgZG9jdW1lbnQgbGlrZSB0aGlzIG9uZSBiZWNhbWUgYXBwYXJlbnQgaW4gdGhlCiAgIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgYXMgdGhlIHNhbWUgcXVlc3Rpb25zLCBhc2tpbmcgZm9yIHBvaW50ZXJzCiAgIHRvIGluZm9ybWF0aW9uLCBhcHBlYXJlZCBhZ2FpbiBhbmQgYWdhaW4uCiAgIAogICBGb3J0dW5hdGVseSwgYXMgbW9yZSBhbmQgbW9yZSBwZW9wbGUgZ2V0IHRvIEdOVS9MaW51eCwgbW9yZSBhbmQgbW9yZQogICBnZXQgaW50ZXJlc3RlZCBpbiB0aGUgS2VybmVsLiBCdXQgcmVhZGluZyB0aGUgc291cmNlcyBpcyBub3QgYWx3YXlzCiAgIGVub3VnaC4gSXQgaXMgZWFzeSB0byB1bmRlcnN0YW5kIHRoZSBjb2RlLCBidXQgbWlzcyB0aGUgY29uY2VwdHMsIHRoZQogICBwaGlsb3NvcGh5IGFuZCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCB0aGlzIGNvZGUuCiAgIAogICBVbmZvcnR1bmF0ZWx5LCBub3QgbWFueSBkb2N1bWVudHMgYXJlIGF2YWlsYWJsZSBmb3IgYmVnaW5uZXJzIHRvCiAgIHN0YXJ0LiBBbmQsIGV2ZW4gaWYgdGhleSBleGlzdCwgdGhlcmUgd2FzIG5vICJ3ZWxsLWtub3duIiBwbGFjZSB3aGljaAogICBrZXB0IHRyYWNrIG9mIHRoZW0uIFRoZXNlIGxpbmVzIHRyeSB0byBjb3ZlciB0aGlzIGxhY2suIEFsbCBkb2N1bWVudHMKICAgYXZhaWxhYmxlIG9uIGxpbmUga25vd24gYnkgdGhlIGF1dGhvciBhcmUgbGlzdGVkLCB3aGlsZSBzb21lIHJlZmVyZW5jZQogICBib29rcyBhcmUgYWxzbyBtZW50aW9uZWQuCiAgIAogICBQTEVBU0UsIGlmIHlvdSBrbm93IGFueSBwYXBlciBub3QgbGlzdGVkIGhlcmUgb3Igd3JpdGUgYSBuZXcgZG9jdW1lbnQsCiAgIHNlbmQgbWUgYW4gZS1tYWlsLCBhbmQgSSdsbCBpbmNsdWRlIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuIEFueQogICBjb3JyZWN0aW9ucywgaWRlYXMgb3IgY29tbWVudHMgYXJlIGFsc28gd2VsY29tZWQuCiAgIAogICBUaGUgcGFwZXJzIHRoYXQgZm9sbG93IGFyZSBsaXN0ZWQgaW4gbm8gcGFydGljdWxhciBvcmRlci4gQWxsIGFyZQogICBjYXRhbG9nZWQgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczogdGhlIGRvY3VtZW50J3MgIlRpdGxlIiwgdGhlCiAgICJBdXRob3IiL3MsIHRoZSAiVVJMIiB3aGVyZSB0aGV5IGNhbiBiZSBmb3VuZCwgc29tZSAiS2V5d29yZHMiIGhlbHBmdWwKICAgd2hlbiBzZWFyY2hpbmcgZm9yIHNwZWNpZmljIHRvcGljcywgYW5kIGEgYnJpZWYgIkRlc2NyaXB0aW9uIiBvZiB0aGUKICAgRG9jdW1lbnQuCiAgIAogICBFbmpveSEKICAgCiAgICAgT04tTElORSBET0NTOgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IERhdmlkIEEuIFJ1c2xpbmcuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudGxkcC5vcmcvTERQL3Rsay90bGsuaHRtbAogICAgICAgS2V5d29yZHM6IGV2ZXJ5dGhpbmchLCBib29rLgogICAgICAgRGVzY3JpcHRpb246IE9uIGxpbmUsIDIwMCBwYWdlcyBib29rIGRlc2NyaWJpbmcgbW9zdCBhc3BlY3RzIG9mCiAgICAgICB0aGUgTGludXggS2VybmVsLiBQcm9iYWJseSwgdGhlIGZpcnN0IHJlZmVyZW5jZSBmb3IgYmVnaW5uZXJzLgogICAgICAgTG90cyBvZiBpbGx1c3RyYXRpb25zIGV4cGxhaW5pbmcgZGF0YSBzdHJ1Y3R1cmVzIHVzZSBhbmQKICAgICAgIHJlbGF0aW9uc2hpcHMgaW4gdGhlIHB1cmVzdCBSaWNoYXJkIFcuIFN0ZXZlbnMnIHN0eWxlLiBDb250ZW50czoKICAgICAgICIxLi1IYXJkd2FyZSBCYXNpY3MsIDIuLVNvZnR3YXJlIEJhc2ljcywgMy4tTWVtb3J5IE1hbmFnZW1lbnQsCiAgICAgICA0Li1Qcm9jZXNzZXMsIDUuLUludGVycHJvY2VzcyBDb21tdW5pY2F0aW9uIE1lY2hhbmlzbXMsIDYuLVBDSSwKICAgICAgIDcuLUludGVycnVwdHMgYW5kIEludGVycnVwdCBIYW5kbGluZywgOC4tRGV2aWNlIERyaXZlcnMsIDkuLVRoZQogICAgICAgRmlsZSBzeXN0ZW0sIDEwLi1OZXR3b3JrcywgMTEuLUtlcm5lbCBNZWNoYW5pc21zLCAxMi4tTW9kdWxlcywKICAgICAgIDEzLi1UaGUgTGludXggS2VybmVsIFNvdXJjZXMsIEEuLUxpbnV4IERhdGEgU3RydWN0dXJlcywgQi4tVGhlCiAgICAgICBBbHBoYSBBWFAgUHJvY2Vzc29yLCBDLi1Vc2VmdWwgV2ViIGFuZCBGVFAgU2l0ZXMsIEQuLVRoZSBHTlUKICAgICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIEdsb3NzYXJ5Ii4gSW4gc2hvcnQ6IGEgbXVzdCBoYXZlLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwgSGFja2VycycgR3VpZGUiCiAgICAgICBBdXRob3I6IE1pY2hhZWwgSy5Kb2huc29uIGFuZCBvdGhlcnMuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudGxkcC5vcmcvTERQL2toZy9IeXBlck5ld3MvZ2V0L2toZy5odG1sCiAgICAgICBLZXl3b3JkczogZXZlcnl0aGluZyEKICAgICAgIERlc2NyaXB0aW9uOiBObyBtb3JlIFBvc3RzY3JpcHQgYm9vay1saWtlIHZlcnNpb24uIE9ubHkgSFRNTCBub3cuCiAgICAgICBNYW55IHBlb3BsZSBoYXZlIGNvbnRyaWJ1dGVkLiBUaGUgaW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gd2ViCiAgICAgICBhdmFpbGFibGUgbWFpbGluZyBsaXN0cyBhcmNoaXZlcy4gWW91IGNhbiBmaW5kIHNvbWUgYXJ0aWNsZXMgYW5kCiAgICAgICB0aGVuIHNvbWUgbWFpbHMgYXNraW5nIHF1ZXN0aW9ucyBhYm91dCB0aGVtIGFuZC9vciBjb21wbGVtZW50aW5nCiAgICAgICBwcmV2aW91cyBjb250cmlidXRpb25zLiBBIGxpdHRsZSBiaXQgYW5hcmNoaWMgaW4gdGhpcyBhc3BlY3QsIGJ1dAogICAgICAgd2l0aCBzb21lIHZhbHVhYmxlIGluZm9ybWF0aW9uIGluIHNvbWUgY2FzZXMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQ29uY2VwdHVhbCBBcmNoaXRlY3R1cmUgb2YgdGhlIExpbnV4IEtlcm5lbCIKICAgICAgIEF1dGhvcjogSXZhbiBULiBCb3dtYW4uCiAgICAgICBVUkw6IGh0dHA6Ly9wbGcudXdhdGVybG9vLmNhL35pdGJvd21hbi9wYXBlcnMvQ1M3NDZHLWExLmh0bWwKICAgICAgIEtleXdvcmRzOiBjb25jZXB0dWFsIHNvZnR3YXJlIGFycXVpdGVjdHVyZSwgZXh0cmFjdGVkIGRlc2lnbiwKICAgICAgIHJldmVyc2UgZW5naW5lZXJpbmcsIHN5c3RlbSBzdHJ1Y3R1cmUuCiAgICAgICBEZXNjcmlwdGlvbjogQ29uY2VwdHVhbCBzb2Z0d2FyZSBhcnF1aXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKICAgICAgIGF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlLiBWZXJ5IGRldGFpbGVkLiBHb29kCiAgICAgICBmaWd1cmVzLiBHaXZlcyBnb29kIG92ZXJhbGwga2VybmVsIHVuZGVyc3RhbmRpbmcuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQ29uY3JldGUgQXJjaGl0ZWN0dXJlIG9mIHRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IEl2YW4gVC4gQm93bWFuLCBTYWhlZW0gU2lkZGlxaSwgYW5kIE1leWVyIEMuIFRhbnVhbi4KICAgICAgIFVSTDogaHR0cDovL3BsZy51d2F0ZXJsb28uY2Evfml0Ym93bWFuL3BhcGVycy9DUzc0NkctYTIuaHRtbAogICAgICAgS2V5d29yZHM6IGNvbmNyZXRlIGFycXVpdGVjdHVyZSwgZXh0cmFjdGVkIGRlc2lnbiwgcmV2ZXJzZQogICAgICAgZW5naW5lZXJpbmcsIHN5c3RlbSBzdHJ1Y3R1cmUsIGRlcGVuZGVuY2llcy4KICAgICAgIERlc2NyaXB0aW9uOiBDb25jcmV0ZSBhcnF1aXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKICAgICAgIGF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlLiBWZXJ5IGRldGFpbGVkLiBHb29kCiAgICAgICBmaWd1cmVzLiBHaXZlcyBnb29kIG92ZXJhbGwga2VybmVsIHVuZGVyc3RhbmRpbmcuIFRoaXMgcGFwZXJzCiAgICAgICBmb2N1cyBvbiBsb3dlciBkZXRhaWxzIHRoYW4gaXRzIHByZWRlY2Vzc29yIChmaWxlcywgdmFyaWFibGVzLi4uKS4KICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBhcyBhIENhc2UgU3R1ZHk6IEl0cyBFeHRyYWN0ZWQgU29mdHdhcmUKICAgICAgIEFyY2hpdGVjdHVyZSIKICAgICAgIEF1dGhvcjogSXZhbiBULiBCb3dtYW4sIFJpY2hhcmQgQy4gSG9sdCBhbmQgTmVpbCBWLiBCcmV3c3Rlci4KICAgICAgIFVSTDogaHR0cDovL3BsZy51d2F0ZXJsb28uY2Evfml0Ym93bWFuL3BhcGVycy9saW51eGNhc2UuaHRtbAogICAgICAgS2V5d29yZHM6IHNvZnR3YXJlIGFyY2hpdGVjdHVyZSwgYXJjaGl0ZWN0dXJlIHJlY292ZXJ5LAogICAgICAgcmVkb2N1bWVudGF0aW9uLgogICAgICAgRGVzY3JpcHRpb246IFBhcGVyIGFwcGVhcmVkIGF0IElDU0UnOTksIExvcyBBbmdlbGVzLCBNYXkgMTYtMjIsCiAgICAgICAxOTk5LiBBIG1peHR1cmUgb2YgdGhlIHByZXZpb3VzIHR3byBkb2N1bWVudHMgZnJvbSB0aGUgc2FtZQogICAgICAgYXV0aG9yLgogICAgICAgCiAgICAgKiBUaXRsZTogIk92ZXJ2aWV3IG9mIHRoZSBWaXJ0dWFsIEZpbGUgU3lzdGVtIgogICAgICAgQXV0aG9yOiBSaWNoYXJkIEdvb2NoLgogICAgICAgVVJMOiBodHRwOi8vd3d3LmF0bmYuY3Npcm8uYXUvfnJnb29jaC9saW51eC92ZnMudHh0CiAgICAgICBLZXl3b3JkczogVkZTLCBGaWxlIFN5c3RlbSwgbW91bnRpbmcgZmlsZXN5c3RlbXMsIG9wZW5pbmcgZmlsZXMsCiAgICAgICBkZW50cmllcywgZGNhY2hlLgogICAgICAgRGVzY3JpcHRpb246IEJyaWVmIGludHJvZHVjdGlvbiB0byB0aGUgTGludXggVmlydHVhbCBGaWxlIFN5c3RlbS4KICAgICAgIFdoYXQgaXMgaXQsIGhvdyBpdCB3b3Jrcywgb3BlcmF0aW9ucyB0YWtlbiB3aGVuIG9wZW5pbmcgYSBmaWxlIG9yCiAgICAgICBtb3VudGluZyBhIGZpbGUgc3lzdGVtIGFuZCBkZXNjcmlwdGlvbiBvZiBpbXBvcnRhbnQgZGF0YQogICAgICAgc3RydWN0dXJlcyBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIGVhY2ggb2YgdGhlaXIgZW50cmllcy4KICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgTGludXggUkFJRC0xLCA0LCA1IENvZGUiCiAgICAgICBBdXRob3I6IEluZ28gTW9sbmFyLCBHYWRpIE94bWFuIGFuZCBNaWd1ZWwgZGUgSWNhemEuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlNDQvMjM5MS5odG1sCiAgICAgICBLZXl3b3JkczogUkFJRCwgTUQgZHJpdmVyLgogICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lciBhcnRpY2xlLiBIZXJlIGlzIGl0J3MKICAgICAgIGFic3RyYWN0OiAiQSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJBSUQtMSwKICAgICAgIFJBSUQtNCBhbmQgUkFJRC01IHBlcnNvbmFsaXRpZXMgb2YgdGhlIE1EIGRldmljZSBkcml2ZXIgaW4gdGhlCiAgICAgICBMaW51eCBrZXJuZWwsIHByb3ZpZGluZyB1c2VycyB3aXRoIGhpZ2ggcGVyZm9ybWFuY2UgYW5kIHJlbGlhYmxlLAogICAgICAgc2Vjb25kYXJ5LXN0b3JhZ2UgY2FwYWJpbGl0eSB1c2luZyBzb2Z0d2FyZSIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiRHluYW1pYyBLZXJuZWxzOiBNb2R1bGFyaXplZCBEZXZpY2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlMjMvMTIxOS5odG1sCiAgICAgICBLZXl3b3JkczogZGV2aWNlIGRyaXZlciwgbW9kdWxlLCBsb2FkaW5nL3VubG9hZGluZyBtb2R1bGVzLAogICAgICAgYWxsb2NhdGluZyByZXNvdXJjZXMuCiAgICAgICBEZXNjcmlwdGlvbjogTGludXggSm91cm5hbCBLZXJuZWwgS29ybmVyIGFydGljbGUuIEhlcmUgaXMgaXQncwogICAgICAgYWJzdHJhY3Q6ICJUaGlzIGlzIHRoZSBmaXJzdCBvZiBhIHNlcmllcyBvZiBmb3VyIGFydGljbGVzCiAgICAgICBjby1hdXRob3JlZCBieSBBbGVzc2FuZHJvIFJ1YmluaSBhbmQgR2VvcmcgWmV6Y2h3aXR6IHdoaWNoIHByZXNlbnQKICAgICAgIGEgcHJhY3RpY2FsIGFwcHJvYWNoIHRvIHdyaXRpbmcgTGludXggZGV2aWNlIGRyaXZlcnMgYXMga2VybmVsCiAgICAgICBsb2FkYWJsZSBtb2R1bGVzLiBUaGlzIGluc3RhbGxtZW50IHByZXNlbnRzIGFuIGludHJvZHVjdGlvbiB0byB0aGUKICAgICAgIHRvcGljLCBwcmVwYXJpbmcgdGhlIHJlYWRlciB0byB1bmRlcnN0YW5kIG5leHQgbW9udGgncwogICAgICAgaW5zdGFsbG1lbnQiLgogICAgICAgCiAgICAgKiBUaXRsZTogIkR5bmFtaWMgS2VybmVsczogRGlzY292ZXJ5IgogICAgICAgQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaS4KICAgICAgIFVSTDogaHR0cDovL3d3dzIubGludXhqb3VybmFsLmNvbS9sai1pc3N1ZXMvaXNzdWUyNC8xMjIwLmh0bWwKICAgICAgIEtleXdvcmRzOiBjaGFyYWN0ZXIgZHJpdmVyLCBpbml0X21vZHVsZSwgY2xlYW5fdXAgbW9kdWxlLAogICAgICAgYXV0b2RldGVjdGlvbiwgbWF5b3IgbnVtYmVyLCBtaW5vciBudW1iZXIsIGZpbGUgb3BlcmF0aW9ucywKICAgICAgIG9wZW4oKSwgY2xvc2UoKS4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIgYXJ0aWNsZS4gSGVyZSBpcyBpdCdzCiAgICAgICBhYnN0cmFjdDogIlRoaXMgYXJ0aWNsZSwgdGhlIHNlY29uZCBvZiBmb3VyLCBpbnRyb2R1Y2VzIHBhcnQgb2YKICAgICAgIHRoZSBhY3R1YWwgY29kZSB0byBjcmVhdGUgY3VzdG9tIG1vZHVsZSBpbXBsZW1lbnRpbmcgYSBjaGFyYWN0ZXIKICAgICAgIGRldmljZSBkcml2ZXIuIEl0IGRlc2NyaWJlcyB0aGUgY29kZSBmb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZAogICAgICAgY2xlYW51cCwgYXMgd2VsbCBhcyB0aGUgb3BlbigpIGFuZCBjbG9zZSgpIHN5c3RlbSBjYWxscyIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIERldmlsJ3MgaW4gdGhlIERldGFpbHMiCiAgICAgICBBdXRob3I6IEdlb3JnIHYuIFplenNjaHdpdHogYW5kIEFsZXNzYW5kcm8gUnViaW5pLgogICAgICAgVVJMOiBodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTI1LzEyMjEuaHRtbAogICAgICAgS2V5d29yZHM6IHJlYWQoKSwgd3JpdGUoKSwgc2VsZWN0KCksIGlvY3RsKCksIGJsb2NraW5nL25vbgogICAgICAgYmxvY2tpbmcgbW9kZSwgaW50ZXJydXB0IGhhbmRsZXIuCiAgICAgICBEZXNjcmlwdGlvbjogTGludXggSm91cm5hbCBLZXJuZWwgS29ybmVyIGFydGljbGUuIEhlcmUgaXMgaXQncwogICAgICAgYWJzdHJhY3Q6ICJUaGlzIGFydGljbGUsIHRoZSB0aGlyZCBvZiBmb3VyIG9uIHdyaXRpbmcgY2hhcmFjdGVyCiAgICAgICBkZXZpY2UgZHJpdmVycywgaW50cm9kdWNlcyBjb25jZXB0cyBvZiByZWFkaW5nLCB3cml0aW5nLCBhbmQgdXNpbmcKICAgICAgIGlvY3RsLWNhbGxzIi4KICAgICAgIAogICAgICogVGl0bGU6ICJEaXNzZWN0aW5nIEludGVycnVwdHMgYW5kIEJyb3dzaW5nIERNQSIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgYW5kIEdlb3JnIHYuIFplenNjaHdpdHouCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlMjYvMTIyMi5odG1sCiAgICAgICBLZXl3b3JkczogaW50ZXJydXB0cywgaXJxcywgRE1BLCBib3R0b20gaGFsdmVzLCB0YXNrIHF1ZXVlcy4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIgYXJ0aWNsZS4gSGVyZSBpcyBpdCdzCiAgICAgICBhYnN0cmFjdDogIlRoaXMgaXMgdGhlIGZvdXJ0aCBpbiBhIHNlcmllcyBvZiBhcnRpY2xlcyBhYm91dAogICAgICAgd3JpdGluZyBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlcnMgYXMgbG9hZGFibGUga2VybmVsIG1vZHVsZXMuIFRoaXMKICAgICAgIG1vbnRoLCB3ZSBmdXJ0aGVyIGludmVzdGlnYXRlIHRoZSBmaWVsZCBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcuCiAgICAgICBUaG91Z2ggaXQgaXMgY29uY2VwdHVhbGx5IHNpbXBsZSwgcHJhY3RpY2FsIGxpbWl0YXRpb25zIGFuZAogICAgICAgY29uc3RyYWludHMgbWFrZSB0aGlzIGFuIGBgaW50ZXJlc3RpbmcnJyBwYXJ0IG9mIGRldmljZSBkcml2ZXIKICAgICAgIHdyaXRpbmcsIGFuZCBzZXZlcmFsIGRpZmZlcmVudCBmYWNpbGl0aWVzIGhhdmUgYmVlbiBwcm92aWRlZCBmb3IKICAgICAgIGRpZmZlcmVudCBzaXR1YXRpb25zLiBXZSBhbHNvIGludmVzdGlnYXRlIHRoZSBjb21wbGV4IHRvcGljIG9mCiAgICAgICBETUEiLgogICAgICAgCiAgICAgKiBUaXRsZTogIkRldmljZSBEcml2ZXJzIENvbmNsdWRlZCIKICAgICAgIEF1dGhvcjogR2Vvcmcgdi4gWmV6c2Nod2l0ei4KICAgICAgIFVSTDogaHR0cDovL3d3dzIubGludXhqb3VybmFsLmNvbS9sai1pc3N1ZXMvaXNzdWUyOC8xMjg3Lmh0bWwKICAgICAgIEtleXdvcmRzOiBhZGRyZXNzIHNwYWNlcywgcGFnZXMsIHBhZ2luYXRpb24sIHBhZ2UgbWFuYWdlbWVudCwKICAgICAgIGRlbWFuZCBsb2FkaW5nLCBzd2FwcGluZywgbWVtb3J5IHByb3RlY3Rpb24sIG1lbW9yeSBtYXBwaW5nLCBtbWFwLAogICAgICAgdmlydHVhbCBtZW1vcnkgYXJlYXMgKFZNQXMpLCB2cmVtYXAsIFBDSS4KICAgICAgIERlc2NyaXB0aW9uOiBGaW5hbGx5LCB0aGUgYWJvdmUgdHVybmVkIG91dCBpbnRvIGEgZml2ZSBhcnRpY2xlcwogICAgICAgc2VyaWVzLiBUaGlzIGxhdGVzdCBvbmUncyBpbnRyb2R1Y3Rpb24gcmVhZHM6ICJUaGlzIGlzIHRoZSBsYXN0IG9mCiAgICAgICBmaXZlIGFydGljbGVzIGFib3V0IGNoYXJhY3RlciBkZXZpY2UgZHJpdmVycy4gSW4gdGhpcyBmaW5hbAogICAgICAgc2VjdGlvbiwgR2VvcmcgZGVhbHMgd2l0aCBtZW1vcnkgbWFwcGluZyBkZXZpY2VzLCBiZWdpbm5pbmcgd2l0aAogICAgICAgYW4gb3ZlcmFsbCBkZXNjcmlwdGlvbiBvZiB0aGUgTGludXggbWVtb3J5IG1hbmFnZW1lbnQgY29uY2VwdHMiLgogICAgICAgCiAgICAgKiBUaXRsZTogIk5ldHdvcmsgQnVmZmVycyBBbmQgTWVtb3J5IE1hbmFnZW1lbnQiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTMwLzEzMTIuaHRtbAogICAgICAgS2V5d29yZHM6IHNrX2J1ZmZzLCBuZXR3b3JrIGRldmljZXMsIHByb3RvY29sL2xpbmsgbGF5ZXIKICAgICAgIHZhcmlhYmxlcywgbmV0d29yayBkZXZpY2VzIGZsYWdzLCB0cmFuc21pdCwgcmVjZWl2ZSwKICAgICAgIGNvbmZpZ3VyYXRpb24sIG11bHRpY2FzdC4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIuIEhlcmUgaXMgdGhlIGFic3RyYWN0OgogICAgICAgIldyaXRpbmcgYSBuZXR3b3JrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IGlzIGZ1bmRhbWVudGFsbHkKICAgICAgIHNpbXBsZS0tLW1vc3Qgb2YgdGhlIGNvbXBsZXhpdHkgKG90aGVyIHRoYW4gdGFsa2luZyB0byB0aGUKICAgICAgIGhhcmR3YXJlKSBpbnZvbHZlcyBtYW5hZ2luZyBuZXR3b3JrIHBhY2tldHMgaW4gbWVtb3J5Ii4KICAgICAgIAogICAgICogVGl0bGU6ICJXcml0aW5nIExpbnV4IERldmljZSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBNaWNoYWVsIEsuIEpvaG5zb24uCiAgICAgICBVUkw6IGh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9qb2huc29ubS9kZXZpY2VzLmh0bWwKICAgICAgIEtleXdvcmRzOiBmaWxlcywgVkZTLCBmaWxlIG9wZXJhdGlvbnMsIGtlcm5lbCBpbnRlcmZhY2UsIGNoYXJhY3RlcgogICAgICAgdnMgYmxvY2sgZGV2aWNlcywgSS9PIGFjY2VzcywgaGFyZHdhcmUgaW50ZXJydXB0cywgRE1BLCBhY2Nlc3MgdG8KICAgICAgIHVzZXIgbWVtb3J5LCBtZW1vcnkgYWxsb2NhdGlvbiwgdGltZXJzLgogICAgICAgRGVzY3JpcHRpb246IEludHJvZHVjdG9yeSA1MC1taW51dGVzIChzaWMpIHR1dG9yaWFsIG9uIHdyaXRpbmcKICAgICAgIGRldmljZSBkcml2ZXJzLiAxMiBwYWdlcyB3cml0dGVuIGJ5IHRoZSBzYW1lIGF1dGhvciBvZiB0aGUgIktlcm5lbAogICAgICAgSGFja2VycycgR3VpZGUiIHdoaWNoIGdpdmUgYSB2ZXJ5IGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHRvcGljLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBWZW51cyBrZXJuZWwgaW50ZXJmYWNlIgogICAgICAgQXV0aG9yOiBQZXRlciBKLiBCcmFhbS4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cuY29kYS5jcy5jbXUuZWR1L2RvYy9odG1sL2tlcm5lbC12ZW51cy1wcm90b2NvbC5odG1sCiAgICAgICBLZXl3b3JkczogY29kYSwgZmlsZXN5c3RlbSwgdmVudXMsIGNhY2hlIG1hbmFnZXIuCiAgICAgICBEZXNjcmlwdGlvbjogIlRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4KICAgICAgIFZlbnVzIGFuZCBrZXJuZWwgbGV2ZWwgZmlsZSBzeXN0ZW0gY29kZSBuZWVkZWQgZm9yIHRoZSBvcGVyYXRpb24KICAgICAgIG9mIHRoZSBDb2RhIGZpbGVzeXN0ZW0uIFRoaXMgdmVyc2lvbiBkb2N1bWVudCBpcyBtZWFudCB0byBkZXNjcmliZQogICAgICAgdGhlIGN1cnJlbnQgaW50ZXJmYWNlICh2ZXJzaW9uIDEuMCkgYXMgd2VsbCBhcyBpbXByb3ZlbWVudHMgd2UKICAgICAgIGVudmlzYWdlIi4KICAgICAgIAogICAgICogVGl0bGU6ICJQcm9ncmFtbWluZyBQQ0ktRGV2aWNlcyB1bmRlciBMaW51eCIKICAgICAgIEF1dGhvcjogQ2xhdXMgU2Nocm9ldGVyLgogICAgICAgVVJMOgogICAgICAgZnRwOi8vZnRwLmxscC5mdS1iZXJsaW4uZGUvcHViL2xpbnV4L0xJTlVYLUxBQi93aGl0ZXBhcGVycy9wY2lwLnBzCiAgICAgICAuZ3oKICAgICAgIEtleXdvcmRzOiBQQ0ksIGRldmljZSwgYnVzbWFzdGVyaW5nLgogICAgICAgRGVzY3JpcHRpb246IDYgcGFnZXMgdHV0b3JpYWwgb24gUENJIHByb2dyYW1taW5nIHVuZGVyIExpbnV4LgogICAgICAgR2l2ZXMgdGhlIGJhc2ljIGNvbmNlcHRzIG9uIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFBDSSBzdWJzeXN0ZW0sCiAgICAgICBhcyBsb25nIGFzIGJhc2ljIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIHRvIHJlYWQvd3JpdGUgdGhlIGRldmljZXMKICAgICAgIGFuZCBwZXJmb3JtIGJ1c21hc3RlcmluZy4KICAgICAgIAogICAgICogVGl0bGU6ICJXcml0aW5nIENoYXJhY3RlciBEZXZpY2UgRHJpdmVyIGZvciBMaW51eCIKICAgICAgIEF1dGhvcjogUi4gQmFydWNoIGFuZCBDLiBTY2hyb2V0ZXIuCiAgICAgICBVUkw6CiAgICAgICBmdHA6Ly9mdHAubGxwLmZ1LWJlcmxpbi5kZS9wdWIvbGludXgvTElOVVgtTEFCL3doaXRlcGFwZXJzL2RyaXZlcnMKICAgICAgIC5wcy5negogICAgICAgS2V5d29yZHM6IGNoYXJhY3RlciBkZXZpY2UgZHJpdmVycywgSS9PLCBzaWduYWxzLCBETUEsIGFjY2Vzc2luZwogICAgICAgcG9ydHMgaW4gdXNlciBzcGFjZSwga2VybmVsIGVudmlyb25tZW50LgogICAgICAgRGVzY3JpcHRpb246IDY4IHBhZ2VzIHBhcGVyIG9uIHdyaXRpbmcgY2hhcmFjdGVyIGRyaXZlcnMuIEEgbGl0dGxlCiAgICAgICBiaXQgb2xkICgxLjk5MywgMS45OTQpIGFsdGhvdWdoIHN0aWxsIHVzZWZ1bC4KICAgICAgIAogICAgICogVGl0bGU6ICJEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWNvbmQgRXh0ZW5kZWQKICAgICAgIEZpbGVzeXN0ZW0iCiAgICAgICBBdXRob3I6IFLpbXkgQ2FyZCwgVGhlb2RvcmUgVHMnbywgU3RlcGhlbiBUd2VlZGllLgogICAgICAgVVJMOiBodHRwOi8vd2ViLm1pdC5lZHUvdHl0c28vd3d3L2xpbnV4L2V4dDJpbnRyby5odG1sCiAgICAgICBLZXl3b3JkczogZXh0MiwgbGludXggZnMgaGlzdG9yeSwgaW5vZGUsIGRpcmVjdG9yeSwgbGluaywgZGV2aWNlcywKICAgICAgIFZGUywgcGh5c2ljYWwgc3RydWN0dXJlLCBwZXJmb3JtYW5jZSwgYmVuY2htYXJrcywgZXh0MmZzIGxpYnJhcnksCiAgICAgICBleHQyZnMgdG9vbHMsIGUyZnNjay4KICAgICAgIERlc2NyaXB0aW9uOiBQYXBlciB3cml0dGVuIGJ5IHRocmVlIG9mIHRoZSB0b3AgZXh0MiBoYWNrZXJzLgogICAgICAgQ292ZXJzIExpbnV4IGZpbGVzeXN0ZW1zIGhpc3RvcnksIGV4dDIgbW90aXZhdGlvbiwgZXh0MiBmZWF0dXJlcywKICAgICAgIGRlc2lnbiwgcGh5c2ljYWwgc3RydWN0dXJlIG9uIGRpc2ssIHBlcmZvcm1hbmNlLCBiZW5jaG1hcmtzLAogICAgICAgZTJmc2NrJ3MgcGFzc2VzIGRlc2NyaXB0aW9uLi4uIEEgbXVzdCByZWFkIQogICAgICAgTm90ZXM6IFRoaXMgcGFwZXIgd2FzIGZpcnN0IHB1Ymxpc2hlZCBpbiB0aGUgUHJvY2VlZGluZ3Mgb2YgdGhlCiAgICAgICBGaXJzdCBEdXRjaCBJbnRlcm5hdGlvbmFsIFN5bXBvc2l1bSBvbiBMaW51eCwgSVNCTiA5MC0zNjctMDM4NS05LgogICAgICAgCiAgICAgKiBUaXRsZTogIkFuYWx5c2lzIG9mIHRoZSBFeHQyZnMgc3RydWN0dXJlIgogICAgICAgQXV0aG9yOiBMb3Vpcy1Eb21pbmlxdWUgRHViZWF1LgogICAgICAgVVJMOiBodHRwOi8vc3RlcC5wb2x5bXRsLmNhL35sZGQvZXh0MmZzL2V4dDJmc190b2MuaHRtbAogICAgICAgS2V5d29yZHM6IGV4dDIsIGZpbGVzeXN0ZW0sIGV4dDJmcy4KICAgICAgIERlc2NyaXB0aW9uOiBEZXNjcmlwdGlvbiBvZiBleHQyJ3MgYmxvY2tzLCBkaXJlY3RvcmllcywgaW5vZGVzLAogICAgICAgYml0bWFwcywgaW52YXJpYW50cy4uLgogICAgICAgCiAgICAgKiBUaXRsZTogIkpvdXJuYWxpbmcgdGhlIExpbnV4IGV4dDJmcyBGaWxlc3lzdGVtIgogICAgICAgQXV0aG9yOiBTdGVwaGVuIEMuIFR3ZWVkaWUuCiAgICAgICBVUkw6CiAgICAgICBmdHA6Ly9mdHAudWsubGludXgub3JnL3B1Yi9saW51eC9zY3QvZnMvamZzL2pvdXJuYWwtZGVzaWduLnBzLmd6CiAgICAgICBLZXl3b3JkczogZXh0Mywgam91cm5hbGluZy4KICAgICAgIERlc2NyaXB0aW9uOiBFeGNlbGxlbnQgOC1wYWdlcyBwYXBlciBleHBsYWluaW5nIHRoZSBqb3VybmFsaW5nCiAgICAgICBjYXBhYmlsaXRpZXMgYWRkZWQgdG8gZXh0MiBieSB0aGUgYXV0aG9yLCBzaG93aW5nIGRpZmZlcmVudAogICAgICAgcHJvYmxlbXMgZmFjZWQgYW5kIHRoZSBhbHRlcm5hdGl2ZXMgY2hvc2VuLgogICAgICAgCiAgICAgKiBUaXRsZTogIktlcm5lbCBBUEkgY2hhbmdlcyBmcm9tIDIuMCB0byAyLjIiCiAgICAgICBBdXRob3I6IFJpY2hhcmQgR29vY2guCiAgICAgICBVUkw6CiAgICAgICBodHRwOi8vd3d3LmF0bmYuY3Npcm8uYXUvfnJnb29jaC9saW51eC9kb2NzL3BvcnRpbmctdG8tMi4yLmh0bWwKICAgICAgIEtleXdvcmRzOiAyLjIsIGNoYW5nZXMuCiAgICAgICBEZXNjcmlwdGlvbjogS2VybmVsIGZ1bmN0aW9ucy9zdHJ1Y3R1cmVzL3ZhcmlhYmxlcyB3aGljaCBjaGFuZ2VkCiAgICAgICBmcm9tIDIuMC54IHRvIDIuMi54LgogICAgICAgCiAgICAgKiBUaXRsZTogIktlcm5lbCBBUEkgY2hhbmdlcyBmcm9tIDIuMiB0byAyLjQiCiAgICAgICBBdXRob3I6IFJpY2hhcmQgR29vY2guCiAgICAgICBVUkw6CiAgICAgICBodHRwOi8vd3d3LmF0bmYuY3Npcm8uYXUvfnJnb29jaC9saW51eC9kb2NzL3BvcnRpbmctdG8tMi40Lmh0bWwKICAgICAgIEtleXdvcmRzOiAyLjQsIGNoYW5nZXMuCiAgICAgICBEZXNjcmlwdGlvbjogS2VybmVsIGZ1bmN0aW9ucy9zdHJ1Y3R1cmVzL3ZhcmlhYmxlcyB3aGljaCBjaGFuZ2VkCiAgICAgICBmcm9tIDIuMi54IHRvIDIuNC54LgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IEtlcm5lbCBNb2R1bGUgUHJvZ3JhbW1pbmcgR3VpZGUiCiAgICAgICBBdXRob3I6IE9yaSBQb21lcmFudHouCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudGxkcC5vcmcvTERQL2xrbXBnL21wZy5odG1sCiAgICAgICBLZXl3b3JkczogbW9kdWxlcywgR1BMIGJvb2ssIC9wcm9jLCBpb2N0bHMsIHN5c3RlbSBjYWxscywKICAgICAgIGludGVycnVwdCBoYW5kbGVycyAuCiAgICAgICBEZXNjcmlwdGlvbjogVmVyeSBuaWNlIDkyIHBhZ2VzIEdQTCBib29rIG9uIHRoZSB0b3BpYyBvZiBtb2R1bGVzCiAgICAgICBwcm9ncmFtbWluZy4gTG90cyBvZiBleGFtcGxlcy4KICAgICAgIAogICAgICogVGl0bGU6ICJEZXZpY2UgRmlsZSBTeXN0ZW0gKGRldmZzKSBPdmVydmlldyIKICAgICAgIEF1dGhvcjogUmljaGFyZCBHb29jaC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5hdG5mLmNzaXJvLmF1L35yZ29vY2gvbGludXgvZG9jcy9kZXZmcy50eHQKICAgICAgIEtleXdvcmRzOiBmaWxlc3lzdGVtLCAvZGV2LCBkZXZmcywgZHluYW1pYyBkZXZpY2VzLCBtYWpvci9taW5vcgogICAgICAgYWxsb2NhdGlvbiwgZGV2aWNlIG1hbmFnZW1lbnQuCiAgICAgICBEZXNjcmlwdGlvbjogRG9jdW1lbnQgZGVzY3JpYmluZyBSaWNoYXJkIEdvb2NoJ3MgY29udHJvdmVyc2lhbAogICAgICAgZGV2ZnMsIHdoaWNoIGFsbG93cyBmb3IgZHluYW1pYyBkZXZpY2VzLCBvbmx5IHNob3dzIHByZXNlbnQKICAgICAgIGRldmljZXMgaW4gL2RldiwgZ2V0cyByaWQgb2YgbWFqb3IvbWlub3IgbnVtYmVycyBhbGxvY2F0aW9uCiAgICAgICBwcm9ibGVtcywgYW5kIGFsbG93cyBmb3IgaHVuZHJlZHMgb2YgaWRlbnRpY2FsIGRldmljZXMgKHdoaWNoIHNvbWUKICAgICAgIFVTQiBzeXN0ZW1zIG1pZ2h0IGRlbWFuZCBzb29uKS4KICAgICAgIAogICAgICogVGl0bGU6ICJJL08gRXZlbnQgSGFuZGxpbmcgVW5kZXIgTGludXgiCiAgICAgICBBdXRob3I6IFJpY2hhcmQgR29vY2guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4L2RvY3MvaW8tZXZlbnRzLmh0bWwKICAgICAgIEtleXdvcmRzOiBJTywgSS9PLCBzZWxlY3QoMiksIHBvbGwoMiksIEZEcywgYWlvX3JlYWQoMiksIHJlYWRpbmVzcwogICAgICAgZXZlbnQgcXVldWVzLgogICAgICAgRGVzY3JpcHRpb246IEZyb20gdGhlIEludHJvZHVjdGlvbjogIkkvTyBFdmVudCBoYW5kbGluZyBpcyBhYm91dAogICAgICAgaG93IHlvdXIgT3BlcmF0aW5nIFN5c3RlbSBhbGxvd3MgeW91IHRvIG1hbmFnZSBhIGxhcmdlIG51bWJlciBvZgogICAgICAgb3BlbiBmaWxlcyAoZmlsZSBkZXNjcmlwdG9ycyBpbiBVTklYL1BPU0lYLCBvciBGRHMpIGluIHlvdXIKICAgICAgIGFwcGxpY2F0aW9uLiBZb3Ugd2FudCB0aGUgT1MgdG8gbm90aWZ5IHlvdSB3aGVuIEZEcyBiZWNvbWUgYWN0aXZlCiAgICAgICAoaGF2ZSBkYXRhIHJlYWR5IHRvIGJlIHJlYWQgb3IgYXJlIHJlYWR5IGZvciB3cml0aW5nKS4gSWRlYWxseSB5b3UKICAgICAgIHdhbnQgYSBtZWNoYW5pc20gdGhhdCBpcyBzY2FsYWJsZS4gVGhpcyBtZWFucyBhIGxhcmdlIG51bWJlciBvZgogICAgICAgaW5hY3RpdmUgRkRzIGNvc3QgdmVyeSBsaXR0bGUgaW4gbWVtb3J5IGFuZCBDUFUgdGltZSB0byBtYW5hZ2UiLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBLZXJuZWwgSGFja2luZyBIT1dUTyIKICAgICAgIEF1dGhvcjogVmFyaW91cyBUYWxlbnRlZCBQZW9wbGUsIGFuZCBSdXN0eS4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cubGlzb2xlZy5uZXQvZG9jL0tlcm5lbC1IYWNraW5nLUhPV1RPL2tlcm5lbC1oYWNraW5nLUhPVwogICAgICAgVE8uaHRtbAogICAgICAgS2V5d29yZHM6IEhPV1RPLCBrZXJuZWwgY29udGV4dHMsIGRlYWRsb2NrLCBsb2NraW5nLCBtb2R1bGVzLAogICAgICAgc3ltYm9scywgcmV0dXJuIGNvbnZlbnRpb25zLgogICAgICAgRGVzY3JpcHRpb246IEZyb20gdGhlIEludHJvZHVjdGlvbjogIlBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgSQogICAgICAgbmV2ZXIgd2FudGVkIHRvIHdyaXRlIHRoaXMgZG9jdW1lbnQsIGJlaW5nIGdyb3NzbHkgdW5kZXJxdWFsaWZpZWQsCiAgICAgICBidXQgSSBhbHdheXMgd2FudGVkIHRvIHJlYWQgaXQsIGFuZCB0aGlzIHdhcyB0aGUgb25seSB3YXkuIEkKICAgICAgIHNpbXBseSBleHBsYWluIHNvbWUgYmVzdCBwcmFjdGljZXMsIGFuZCBnaXZlIHJlYWRpbmcgZW50cnktcG9pbnRzCiAgICAgICBpbnRvIHRoZSBrZXJuZWwgc291cmNlcy4gSSBhdm9pZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzOiB0aGF0J3MKICAgICAgIHdoYXQgdGhlIGNvZGUgaXMgZm9yLCBhbmQgSSBpZ25vcmUgd2hvbGUgdHJhY3RzIG9mIHVzZWZ1bAogICAgICAgcm91dGluZXMuIFRoaXMgZG9jdW1lbnQgYXNzdW1lcyBmYW1pbGlhcml0eSB3aXRoIEMsIGFuZCBhbgogICAgICAgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBrZXJuZWwgaXMsIGFuZCBob3cgaXQgaXMgdXNlZC4gSXQgd2FzCiAgICAgICBvcmlnaW5hbGx5IHdyaXR0ZW4gZm9yIHRoZSAyLjMga2VybmVscywgYnV0IG5lYXJseSBhbGwgb2YgaXQKICAgICAgIGFwcGxpZXMgdG8gMi4yIHRvbzsgMi4wIGlzIHNsaWdodGx5IGRpZmZlcmVudCIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQUxTQSAwLjUuMCBEZXZlbG9wZXIgZG9jdW1lbnRhdGlvbiIKICAgICAgIEF1dGhvcjogU3RlcGhhbiAnSnVtcHknIEJhcnRlbHMgLgogICAgICAgVVJMOiBodHRwOi8vd3d3Lm1hdGguVFUtQmVybGluLmRlL35zYmFydGVscy9hbHNhLwogICAgICAgS2V5d29yZHM6IEFMU0EsIHNvdW5kLCBzb3VuZGNhcmQsIGRyaXZlciwgbG93bGV2ZWwsIGhhcmR3YXJlLgogICAgICAgRGVzY3JpcHRpb246IEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZSBmb3IgZGV2ZWxvcGVycywKICAgICAgIGJvdGggYXQga2VybmVsIGFuZCB1c2VyLWxldmVsIHNpZGVzLiBXb3JrIGluIHByb2dyZXNzLiBBTFNBIGlzCiAgICAgICBzdXBwb3NlZCB0byBiZSBMaW51eCdzIG5leHQgZ2VuZXJhdGlvbiBzb3VuZCBhcmNoaXRlY3R1cmUuCiAgICAgICAKICAgICAqIFRpdGxlOiAiUHJvZ3JhbW1pbmcgR3VpZGUgZm9yIExpbnV4IFVTQiBEZXZpY2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogRGV0bGVmIEZsaWVnbC4KICAgICAgIFVSTDogaHR0cDovL3VzYi5pbi50dW0uZGUvdXNiZG9jLwogICAgICAgS2V5d29yZHM6IFVTQiwgdW5pdmVyc2FsIHNlcmlhbCBidXMuCiAgICAgICBEZXNjcmlwdGlvbjogQSBtdXN0LXJlYWQuIEZyb20gdGhlIFByZWZhY2U6ICJUaGlzIGRvY3VtZW50IHNob3VsZAogICAgICAgZ2l2ZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgVVNCCiAgICAgICBzdWJzeXN0ZW0gYW5kIGl0cyBBUEkgZm9yIFVTQiBkZXZpY2UgZHJpdmVycy4gVGhlIGZpcnN0IHNlY3Rpb24KICAgICAgIHdpbGwgZGVhbCB3aXRoIHRoZSBiYXNpY3Mgb2YgVVNCIGRldmljZXMuIFlvdSB3aWxsIGxlYXJuIGFib3V0CiAgICAgICBkaWZmZXJlbnQgdHlwZXMgb2YgZGV2aWNlcyBhbmQgdGhlaXIgcHJvcGVydGllcy4gR29pbmcgaW50byBkZXRhaWwKICAgICAgIHlvdSB3aWxsIHNlZSBob3cgVVNCIGRldmljZXMgY29tbXVuaWNhdGUgb24gdGhlIGJ1cy4gVGhlIHNlY29uZAogICAgICAgc2VjdGlvbiBnaXZlcyBhbiBvdmVydmlldyBvZiB0aGUgTGludXggVVNCIHN1YnN5c3RlbSBbMl0gYW5kIHRoZQogICAgICAgZGV2aWNlIGRyaXZlciBmcmFtZXdvcmsuIFRoZW4gdGhlIEFQSSBhbmQgaXRzIGRhdGEgc3RydWN0dXJlcyB3aWxsCiAgICAgICBiZSBleHBsYWluZWQgc3RlcCBieSBzdGVwLiBUaGUgbGFzdCBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQKICAgICAgIGNvbnRhaW5zIGEgcmVmZXJlbmNlIG9mIGFsbCBBUEkgY2FsbHMgYW5kIHRoZWlyIHJldHVybiBjb2RlcyIuCiAgICAgICBOb3RlczogQmV3YXJlOiB0aGUgbWFpbiBwYWdlIHN0YXRlczogIlRoaXMgZG9jdW1lbnQgbWF5IG5vdCBiZQogICAgICAgcHVibGlzaGVkLCBwcmludGVkIG9yIHVzZWQgaW4gZXhjZXJwdHMgd2l0aG91dCBleHBsaWNpdCBwZXJtaXNzaW9uCiAgICAgICBvZiB0aGUgYXV0aG9yIi4gRm9ydHVuYXRlbHksIGl0IG1heSBzdGlsbCBiZSByZWFkLi4uCiAgICAgICAKICAgICAqIFRpdGxlOiAiVG91ciBPZiB0aGUgTGludXggS2VybmVsIFNvdXJjZSIKICAgICAgIEF1dGhvcjogVmlqbyBDaGVyaWFuLgogICAgICAgVVJMOiBodHRwOi8vd3d3Lmdlb2NpdGllcy5jb20vdmlqb2MvdG9sa3MvdG9sa3MuaHRtbAogICAgICAgS2V5d29yZHM6IC4KICAgICAgIERlc2NyaXB0aW9uOiBBIGNsYXNzaWMgb2YgdGhpcyBwYWdlISBXYXMgbG9zdCBmb3IgYSB3aGlsZSBhbmQgaXMKICAgICAgIGJhY2sgYWdhaW4uIFRoYW5rcyBWaWpvISBUT0xLUzogdGhlIG5hbWUgc2F5cyBpdCBhbGwuIEEgdG91ciBvZgogICAgICAgdGhlIHNvdXJjZXMsIGRlc2NyaWJpbmcgZGlyZWN0b3JpZXMsIGZpbGVzLCB2YXJpYWJsZXMsIGRhdGEKICAgICAgIHN0cnVjdHVyZXMuLi4gSXQgY292ZXJzIGdlbmVyYWwgc3R1ZmYsIGRldmljZSBkcml2ZXJzLAogICAgICAgZmlsZXN5c3RlbXMsIElQQyBhbmQgTmV0d29ya2luZyBDb2RlLgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IEtlcm5lbCBNYWlsaW5nIExpc3QgR2xvc3NhcnkiCiAgICAgICBBdXRob3I6IEpvaG4gTGV2b24uCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubW92ZW1lbnQudWtsaW51eC5uZXQvZ2xvc3NhcnkuaHRtbAogICAgICAgS2V5d29yZHM6IGdsb3NzYXJ5LCB0ZXJtcywgbGludXgta2VybmVsLgogICAgICAgRGVzY3JpcHRpb246IEZyb20gdGhlIGludHJvZHVjdGlvbjogIlRoaXMgZ2xvc3NhcnkgaXMgaW50ZW5kZWQgYXMKICAgICAgIGEgYnJpZWYgZGVzY3JpcHRpb24gb2Ygc29tZSBvZiB0aGUgYWNyb255bXMgYW5kIHRlcm1zIHlvdSBtYXkgaGVhcgogICAgICAgZHVyaW5nIGRpc2N1c3Npb24gb2YgdGhlIExpbnV4IGtlcm5lbCIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggS2VybmVsIExvY2tpbmcgSE9XVE8iCiAgICAgICBBdXRob3I6IFZhcmlvdXMgVGFsZW50ZWQgUGVvcGxlLCBhbmQgUnVzdHkuCiAgICAgICBVUkw6CiAgICAgICBodHRwOi8vbmV0ZmlsdGVyLmtlcm5lbG5vdGVzLm9yZy91bnJlbGlhYmxlLWd1aWRlcy9rZXJuZWwtbG9ja2luZy0KICAgICAgIEhPV1RPLmh0bWwKICAgICAgIEtleXdvcmRzOiBsb2NrcywgbG9ja2luZywgc3BpbmxvY2ssIHNlbWFwaG9yZSwgYXRvbWljLCByYWNlCiAgICAgICBjb25kaXRpb24sIGJvdHRvbSBoYWx2ZXMsIHRhc2tsZXRzLCBzb2Z0aXJxcy4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGw6IGRvY3VtZW50IGRlc2NyaWJpbmcgdGhlCiAgICAgICBsb2NraW5nIHN5c3RlbSBpbiB0aGUgTGludXggS2VybmVsIGVpdGhlciBpbiB1bmlwcm9jZXNzb3Igb3IgU01QCiAgICAgICBzeXN0ZW1zLgogICAgICAgTm90ZXM6ICJJdCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGZvciB0aGUgbGF0ZXIgKD4yLjMuNDcpIDIuMwogICAgICAga2VybmVscywgYnV0IG1vc3Qgb2YgaXQgYXBwbGllcyB0byAyLjIgdG9vOyAyLjAgaXMgc2xpZ2h0bHkKICAgICAgIGRpZmZlcmVudCIuIEZyZWVseSByZWRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgdGhlIEdOVQogICAgICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KICAgICAgIAogICAgICogVGl0bGU6ICJQb3J0aW5nIExpbnV4IDIuMCBEcml2ZXJzIFRvIExpbnV4IDIuMjogQ2hhbmdlcyBhbmQgTmV3CiAgICAgICBGZWF0dXJlcyAiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0wNS9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBwb3J0cywgcG9ydGluZy4KICAgICAgIERlc2NyaXB0aW9uOiBBcnRpY2xlIGZyb20gTGludXggTWFnYXppbmUgb24gcG9ydGluZyBmcm9tIDIuMCB0bwogICAgICAgMi4yIGtlcm5lbHMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiUG9ydGluZyBEZXZpY2UgRHJpdmVycyBUbyBMaW51eCAyLjI6IHBhcnQgSUkiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0wNi9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBwb3J0cywgcG9ydGluZy4KICAgICAgIERlc2NyaXB0aW9uOiBTZWNvbmQgcGFydCBvbiBwb3J0aW5nIGZyb20gMi4wIHRvIDIuMiBrZXJuZWxzLgogICAgICAgCiAgICAgKiBUaXRsZTogIkhvdyBUbyBNYWtlIFN1cmUgWW91ciBEcml2ZXIgV2lsbCBXb3JrIE9uIFRoZSBQb3dlcgogICAgICAgTWFjaW50b3NoIgogICAgICAgQXV0aG9yOiBQYXVsIE1hY2tlcnJhcy4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMDcvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogTWFjLCBQb3dlciBNYWNpbnRvc2gsIHBvcnRpbmcsIGRyaXZlcnMsIGNvbXBhdGliaWxpdHkuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIkFuIEludHJvZHVjdGlvbiB0byBTQ1NJIERyaXZlcnMiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0wOC9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBTQ1NJLCBkZXZpY2UsIGRyaXZlci4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQWR2YW5jZWQgU0NTSSBEcml2ZXJzIEFuZCBPdGhlciBUYWxlcyIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTA5L2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IFNDU0ksIGRldmljZSwgZHJpdmVyLCBhZHZhbmNlZC4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiV3JpdGluZyBMaW51eCBNb3VzZSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMTAvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogbW91c2UsIGRyaXZlciwgZ3BtLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJNb3JlIG9uIE1vdXNlIERyaXZlcnMiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0xMS9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBtb3VzZSwgZHJpdmVyLCBncG0sIHJhY2VzLCBhc3luY2hyb25vdXMgSS9PLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzdGlsbCBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJXcml0aW5nIFZpZGVvNGxpbnV4IFJhZGlvIERyaXZlciIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTEyL2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IHZpZGVvNGxpbnV4LCBkcml2ZXIsIHJhZGlvLCByYWRpbyBkZXZpY2VzLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJWaWRlbzRsaW51eCBEcml2ZXJzLCBQYXJ0IDE6IFZpZGVvLUNhcHR1cmUgRGV2aWNlIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzIwMDAtMDEvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogdmlkZW80bGludXgsIGRyaXZlciwgdmlkZW8gY2FwdHVyZSwgY2FwdHVyZSBkZXZpY2VzLAogICAgICAgY2FtZXJhIGRyaXZlci4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVmlkZW80bGludXggRHJpdmVycywgUGFydCAyOiBWaWRlby1jYXB0dXJlIERldmljZXMiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMjAwMC0wMi9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiB2aWRlbzRsaW51eCwgZHJpdmVyLCB2aWRlbyBjYXB0dXJlLCBjYXB0dXJlIGRldmljZXMsCiAgICAgICBjYW1lcmEgZHJpdmVyLCBjb250cm9sLCBxdWVyeSBjYXBhYmlsaXRpZXMsIGNhcGFiaWxpdHksIGZhY2lsaXR5LgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJQQ0kgTWFuYWdlbWVudCBpbiBMaW51eCAyLjIiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMjAwMC0wMy9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBQQ0ksIGJ1cywgYnVzLW1hc3RlcmluZy4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggMi40IEtlcm5lbCBJbnRlcm5hbHMiCiAgICAgICBBdXRob3I6IFRpZ3JhbiBBaXZhemlhbiBhbmQgQ2hyaXN0b3BoIEhlbGx3aWcuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubW9zZXMudWtsaW51eC5uZXQvcGF0Y2hlcy9sa2kuaHRtbAogICAgICAgS2V5d29yZHM6IExpbnV4LCBrZXJuZWwsIGJvb3RpbmcsIFNNQiBib290LCBWRlMsIHBhZ2UgY2FjaGUuCiAgICAgICBEZXNjcmlwdGlvbjogQSBsaXR0bGUgYm9vayB1c2VkIGZvciBhIHNob3J0IHRyYWluaW5nIGNvdXJzZS4KICAgICAgIENvdmVycyBidWlsZGluZyB0aGUga2VybmVsIGltYWdlLCBib290aW5nIChpbmNsdWRpbmcgU01QIGJvb3R1cCksCiAgICAgICBwcm9jZXNzIG1hbmFnZW1lbnQsIFZGUyBhbmQgbW9yZS4KICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBJUCBOZXR3b3JraW5nLiBBIEd1aWRlIHRvIHRoZSBJbXBsZW1lbnRhdGlvbiBhbmQKICAgICAgIE1vZGlmaWNhdGlvbiBvZiB0aGUgTGludXggUHJvdG9jb2wgU3RhY2suIgogICAgICAgQXV0aG9yOiBHbGVubiBIZXJyaW4uCiAgICAgICBVUkw6CiAgICAgICBodHRwOi8va2VybmVsbmV3Ymllcy5vcmcvZG9jdW1lbnRzL2lwbmV0d29ya2luZy9saW51eGlwbmV0d29ya2luZy4KICAgICAgIGh0bWwKICAgICAgIEtleXdvcmRzOiBuZXR3b3JrLCBuZXR3b3JraW5nLCBwcm90b2NvbCwgSVAsIFVEUCwgVENQLCBjb25uZWN0aW9uLAogICAgICAgc29ja2V0LCByZWNlaXZpbmcsIHRyYW5zbWl0dGluZywgZm9yd2FyZGluZywgcm91dGluZywgcGFja2V0cywKICAgICAgIG1vZHVsZXMsIC9wcm9jLCBza19idWZmLCBGSUIsIHRhZ3MuCiAgICAgICBEZXNjcmlwdGlvbjogRXhjZWxsZW50IHBhcGVyIGRldm90ZWQgdG8gdGhlIExpbnV4IElQIE5ldHdvcmtpbmcsCiAgICAgICBleHBsYWluaW5nIGFueXRoaW5nIGZyb20gdGhlIGtlcm5lbCdzIHRvIHRoZSB1c2VyIHNwYWNlCiAgICAgICBjb25maWd1cmF0aW9uIHRvb2xzJyBjb2RlLiBWZXJ5IGdvb2QgdG8gZ2V0IGEgZ2VuZXJhbCBvdmVydmlldyBvZgogICAgICAgdGhlIGtlcm5lbCBuZXR3b3JraW5nIGltcGxlbWVudGF0aW9uIGFuZCB1bmRlcnN0YW5kIGFsbCBzdGVwcwogICAgICAgcGFja2V0cyBmb2xsb3cgZnJvbSB0aGUgdGltZSB0aGV5IGFyZSByZWNlaXZlZCBhdCB0aGUgbmV0d29yawogICAgICAgZGV2aWNlIHRpbGwgdGhleSBhcmUgZGVsaXZlcmVkIHRvIGFwcGxpY2F0aW9ucy4gVGhlIHN0dWRpZWQga2VybmVsCiAgICAgICBjb2RlIGlzIGZyb20gMi4yLjE0IHZlcnNpb24uIFByb3ZpZGVzIGNvZGUgZm9yIGEgd29ya2luZyBwYWNrZXQKICAgICAgIGRyb3BwZXIgZXhhbXBsZS4KICAgICAgIAogICAgICogVGl0bGU6ICJHZXQgdGhvc2UgYm9hcmRzIHRhbGtpbmcgdW5kZXIgTGludXguIgogICAgICAgQXV0aG9yOiBBbGV4IEl2Y2hlbmtvLgogICAgICAgVVJMOiBodHRwOi8vd3d3LmVkbm1hZy5jb20vZWRubWFnL3JlZy8yMDAwLzA2MjIyMDAwLzEzZGYyLmh0bQogICAgICAgS2V5d29yZHM6IGRhdGEtYWNxdWlzaXRpb24gYm9hcmRzLCBkcml2ZXJzLCBtb2R1bGVzLCBpbnRlcnJ1cHRzLAogICAgICAgbWVtb3J5IGFsbG9jYXRpb24uCiAgICAgICBEZXNjcmlwdGlvbjogQXJ0aWNsZSB3cml0dGVuIGZvciBwZW9wbGUgd2lzaGluZyB0byBtYWtlIHRoZWlyIGRhdGEKICAgICAgIGFjcXVpc2l0aW9uIGJvYXJkcyB3b3JrIG9uIHRoZWlyIEdOVS9MaW51eCBtYWNoaW5lcy4gR2l2ZXMgYSBiYXNpYwogICAgICAgb3ZlcnZpZXcgb24gd3JpdHRpbmcgZHJpdmVycywgZnJvbSB0aGUgbmFtaW5nIG9mIGZ1bmN0aW9ucyB0bwogICAgICAgaW50ZXJydXB0IGhhbmRsaW5nLgogICAgICAgTm90ZXM6IFR3by1wYXJ0cyBhcnRpY2xlLiBQYXJ0IElJIGlzIGF0CiAgICAgICBodHRwOi8vd3d3LmVkbm1hZy5jb20vZWRubWFnL3JlZy8yMDAwLzA3MDYyMDAwLzE0ZGYuaHRtCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggUENNQ0lBIFByb2dyYW1tZXIncyBHdWlkZSIKICAgICAgIEF1dGhvcjogRGF2aWQgSGluZHMuCiAgICAgICBVUkw6IGh0dHA6Ly9wY21jaWEtY3Muc291cmNlZm9yZ2UubmV0L2Z0cC9kb2MvUENNQ0lBLVBST0cuaHRtbAogICAgICAgS2V5d29yZHM6IFBDTUNJQS4KICAgICAgIERlc2NyaXB0aW9uOiAiVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIHdyaXRlIGtlcm5lbCBkZXZpY2UKICAgICAgIGRyaXZlcnMgZm9yIHRoZSBMaW51eCBQQ01DSUEgQ2FyZCBTZXJ2aWNlcyBpbnRlcmZhY2UuIEl0IGFsc28KICAgICAgIGRlc2NyaWJlcyBob3cgdG8gd3JpdGUgdXNlci1tb2RlIHV0aWxpdGllcyBmb3IgY29tbXVuaWNhdGluZyB3aXRoCiAgICAgICBDYXJkIFNlcnZpY2VzLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwgTkZTRCBJbXBsZW1lbnRhdGlvbiIKICAgICAgIEF1dGhvcjogTmVpbCBCcm93bi4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cuY3NlLnVuc3cuZWR1LmF1L35uZWlsYi9vc3MvbGludXgtY29tbWVudGFyeS9uZnNkLmh0bWwKICAgICAgIEtleXdvcmRzOiBrbmZzZCwgbmZzZCwgTkZTLCBSUEMsIGxvY2tkLCBtb3VudGQsIHN0YXRkLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIE5vdGVzOiBDb3ZlcnMga25mc2QncyB2ZXJzaW9uIDEuNC43IChwYXRjaCBhZ2FpbnN0IDIuMi43IGtlcm5lbCkuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQSBMaW51eCB2bSBSRUFETUUiCiAgICAgICBBdXRob3I6IEthbm9qIFNhcmNhci4KICAgICAgIFVSTDogaHR0cDovL3JlYWxpdHkuc2dpLmNvbS9rYW5val9lbmdyL3ZtMjI5Lmh0bWwKICAgICAgIEtleXdvcmRzOiB2aXJ0dWFsIG1lbW9yeSwgbW0sIHBnZCwgdm1hLCBwYWdlLCBwYWdlIGZsYWdzLCBwYWdlCiAgICAgICBjYWNoZSwgc3dhcCBjYWNoZSwga3N3YXBkLgogICAgICAgRGVzY3JpcHRpb246IFRlbGVncmFwaGljLCBzaG9ydCBkZXNjcmlwdGlvbnMgYW5kIGRlZmluaXRpb25zCiAgICAgICByZWxhdGluZyB0aGUgTGludXggdmlydHVhbCBtZW1vcnkgaW1wbGVtZW50YXRpb24uCiAgICAgICAKICAgICAqIFRpdGxlOiAiKG5lYXJseSkgQ29tcGxldGUgTGludXggTG9hZGFibGUgS2VybmVsIE1vZHVsZXMuIFRoZQogICAgICAgZGVmaW5pdGl2ZSBndWlkZSBmb3IgaGFja2VycywgdmlydXMgY29kZXJzIGFuZCBzeXN0ZW0KICAgICAgIGFkbWluaXN0cmF0b3JzLiIKICAgICAgIEF1dGhvcjogcHJhZ21hdGljL1RIQy4KICAgICAgIFVSTDogaHR0cDovL3BhY2tldHN0b3JtLnNlY3VyaWZ5LmNvbS9ncm91cHMvdGhjL0xLTV9IQUNLSU5HLmh0bWwKICAgICAgIEtleXdvcmRzOiBzeXNjYWxscywgaW50ZXJjZXB0LCBoaWRlLCBhYnVzZSwgc3ltYm9sIHRhYmxlLgogICAgICAgRGVzY3JpcHRpb246IEludGVyZXN0aW5nIHBhcGVyIG9uIGhvdyB0byBhYnVzZSB0aGUgTGludXgga2VybmVsIGluCiAgICAgICBvcmRlciB0byBpbnRlcmNlcHQgYW5kIG1vZGlmeSBzeXNjYWxscywgbWFrZQogICAgICAgZmlsZXMvZGlyZWN0b3JpZXMvcHJvY2Vzc2VzIGludmlzaWJsZSwgYmVjb21lIHJvb3QsIGhpamFjayB0dHlzLAogICAgICAgd3JpdGUga2VybmVsIG1vZHVsZXMgYmFzZWQgdmlydXMuLi4gYW5kIHNvbHV0aW9ucyBmb3IgYWRtaW5zIHRvCiAgICAgICBhdm9pZCBhbGwgdGhvc2UgYWJ1c2VzLgogICAgICAgTm90ZXM6IEZvciAyLjAueCBrZXJuZWxzLiBHaXZlcyBndWlkYW5jZXMgdG8gcG9ydCBpdCB0byAyLjIueAogICAgICAga2VybmVscy4gQWxzbyBhdmFpbGFibGUgaW4gdHh0IGZvcm1hdCBhdAogICAgICAgaHR0cDovL3d3dy5ibGFja25lbWVzaXMub3JnL2hhY2tpbmcvdHh0L2NsbGttLnR4dAogICAgICAgCiAgICAgQk9PS1M6IChOb3Qgb24tbGluZSkKICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IERldmljZSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaS4KICAgICAgIFB1Ymxpc2hlcjogTydSZWlsbHkgJiBBc3NvY2lhdGVzLgogICAgICAgRGF0ZTogMTk5OC4KICAgICAgIFBhZ2VzOiA0MzkuCiAgICAgICBJU0JOOiAxLTU2NTkyLTI5Mi0xCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggRGV2aWNlIERyaXZlcnMsIDJuZCBFZGl0aW9uIgogICAgICAgQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSBhbmQgSm9uYXRoYW4gQ29yYmV0LgogICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMuCiAgICAgICBEYXRlOiAyMDAxLgogICAgICAgUGFnZXM6IDU4Ni4KICAgICAgIElTQk46IDAtNTk2MDAtMDA4LTEKICAgICAgIE5vdGVzOiBGdXJ0aGVyIGluZm9ybWF0aW9uIGluCiAgICAgICBodHRwOi8vd3d3Lm9yZWlsbHkuY29tL2NhdGFsb2cvbGludXhkcml2ZTIvCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggS2VybmVsIEludGVybmFscyIKICAgICAgIEF1dGhvcjogTWljaGFlbCBCZWNrLgogICAgICAgUHVibGlzaGVyOiBBZGRpc29uLVdlc2xleS4KICAgICAgIERhdGU6IDE5OTcuCiAgICAgICBJU0JOOiAwLTIwMS0zMzE0My04IChzZWNvbmQgZWRpdGlvbikKICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgRGVzaWduIG9mIHRoZSBVTklYIE9wZXJhdGluZyBTeXN0ZW0iCiAgICAgICBBdXRob3I6IE1hdXJpY2UgSi4gQmFjaC4KICAgICAgIFB1Ymxpc2hlcjogUHJlbnRpY2UgSGFsbC4KICAgICAgIERhdGU6IDE5ODYuCiAgICAgICBQYWdlczogNDcxLgogICAgICAgSVNCTjogMC0xMy0yMDE3NTctMQogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uIG9mIHRoZSA0LjMgQlNEIFVOSVgKICAgICAgIE9wZXJhdGluZyBTeXN0ZW0iCiAgICAgICBBdXRob3I6IFNhbXVlbCBKLiBMZWZmbGVyLCBNYXJzaGFsbCBLaXJrIE1jS3VzaWNrLCBNaWNoYWVsIEouCiAgICAgICBLYXJlbHMsIEpvaG4gUy4gUXVhcnRlcm1hbi4KICAgICAgIFB1Ymxpc2hlcjogQWRkaXNvbi1XZXNsZXkuCiAgICAgICBEYXRlOiAxOTg5IChyZXByaW50ZWQgd2l0aCBjb3JyZWN0aW9ucyBvbiBPY3RvYmVyLCAxOTkwKS4KICAgICAgIElTQk46IDAtMjAxLTA2MTk2LTEKICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgRGVzaWduIGFuZCBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgNC40IEJTRCBVTklYCiAgICAgICBPcGVyYXRpbmcgU3lzdGVtIgogICAgICAgQXV0aG9yOiBNYXJzaGFsbCBLaXJrIE1jS3VzaWNrLCBLZWl0aCBCb3N0aWMsIE1pY2hhZWwgSi4gS2FyZWxzLAogICAgICAgSm9obiBTLiBRdWFydGVybWFuLgogICAgICAgUHVibGlzaGVyOiBBZGRpc29uLVdlc2xleS4KICAgICAgIERhdGU6IDE5OTYuCiAgICAgICBJU0JOOiAwLTIwMS01NDk3OS00CiAgICAgICAKICAgICAqIFRpdGxlOiAiUHJvZ3JhbW1hdGlvbiBMaW51eCAyLjAgQVBJIHN5c3RlbWUgZXQgZm9uY3Rpb25uZW1lbnQgZHUKICAgICAgIG5veWF1IgogICAgICAgQXV0aG9yOiBSZW15IENhcmQsIEVyaWMgRHVtYXMsIEZyYW5jayBNZXZlbC4KICAgICAgIFB1Ymxpc2hlcjogRXlyb2xsZXMuCiAgICAgICBEYXRlOiAxOTk3LgogICAgICAgUGFnZXM6IDUyMC4KICAgICAgIElTQk46IDItMjEyLTA4OTMyLTUKICAgICAgIE5vdGVzOiBGcmVuY2guCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIExpbnV4IEtlcm5lbCBCb29rIgogICAgICAgQXV0aG9yOiBSZW15IENhcmQsIEVyaWMgRHVtYXMsIEZyYW5jayBNZXZlbC4KICAgICAgIFB1Ymxpc2hlcjogSm9obiBXaWxleSAmIFNvbnMuCiAgICAgICBEYXRlOiAxOTk4LgogICAgICAgSVNCTjogMC00NzEtOTgxNDEtOQogICAgICAgTm90ZXM6IEVuZ2xpc2ggdHJhbnNsYXRpb24uCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggMi4wIgogICAgICAgQXV0aG9yOiBSZW15IENhcmQsIEVyaWMgRHVtYXMsIEZyYW5jayBNZXZlbC4KICAgICAgIFB1Ymxpc2hlcjogR2VzdGnzbiAyMDAwLgogICAgICAgRGF0ZTogMTk5Ny4KICAgICAgIFBhZ2VzOiA1MDEuCiAgICAgICBJU0JOOiA4LTQ4MC04ODIwOC01CiAgICAgICBOb3RlczogU3BhbmlzaCB0cmFuc2xhdGlvbi4KICAgICAgIAogICAgICogVGl0bGU6ICJVbml4IGludGVybmFscyAtLSB0aGUgbmV3IGZyb250aWVycyIKICAgICAgIEF1dGhvcjogVXJlc2ggVmFoYWxpYS4KICAgICAgIFB1Ymxpc2hlcjogUHJlbnRpY2UgSGFsbC4KICAgICAgIERhdGU6IDE5OTYuCiAgICAgICBQYWdlczogNjAwLgogICAgICAgSVNCTjogMC0xMy0xMDE5MDgtMgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IENvcmUgS2VybmVsIENvbW1lbnRhcnkuIEd1aWRlIHRvIEluc2lkZXIncyBLbm93bGVkZ2UKICAgICAgIG9uIHRoZSBDb3JlIEtlcm5lbCBvZiB0aGUgTGludXggQ29kZSIKICAgICAgIEF1dGhvcjogU2NvdHQgTWF4d2VsbC4KICAgICAgIFB1Ymxpc2hlcjogQ29yaW9saXMuCiAgICAgICBEYXRlOiAxOTk5LgogICAgICAgUGFnZXM6IDU5Mi4KICAgICAgIElTQk46IDEtNTc2MTAtNDY5LTkKICAgICAgIE5vdGVzOiBDRC1ST00gaW5jbHVkZWQuIExpbmUgYnkgbGluZSBjb21tZW50YXJ5IG9mIHRoZSBrZXJuZWwKICAgICAgIGNvZGUuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggSVAgU3RhY2tzIENvbW1lbnRhcnkiCiAgICAgICBBdXRob3I6IFN0ZXBoZW4gU2F0Y2hlbGwgYW5kIEhCSiBDbGlmZm9yZC4KICAgICAgIFB1Ymxpc2hlcjogQ29yaW9saXMuCiAgICAgICBEYXRlOiAyMDAwLgogICAgICAgUGFnZXM6ID8/Py4KICAgICAgIElTQk46IDEtNTc2MTAtNDcwLTIKICAgICAgIE5vdGVzOiBMaW5lIGJ5IGxpbmUgc291cmNlIGNvZGUgY29tbWVudGFyeSBib29rLgogICAgICAgCiAgICAgKiBUaXRsZTogIlByb2dyYW1taW5nIGZvciB0aGUgcmVhbCB3b3JsZCAtIFBPU0lYLjQiCiAgICAgICBBdXRob3I6IEJpbGwgTy4gR2FsbG1laXN0ZXIuCiAgICAgICBQdWJsaXNoZXI6IE8nUmVpbGx5ICYgQXNzb2NpYXRlcywgSW5jLi4KICAgICAgIERhdGU6IDE5OTUuCiAgICAgICBQYWdlczogPz8/LgogICAgICAgSVNCTjogSS01NjU5Mi0wNzQtMAogICAgICAgTm90ZXM6IFRob3VnaCBub3QgYmVpbmcgZGlyZWN0bHkgYWJvdXQgTGludXgsIExpbnV4IGFpbXMgdG8gYmUKICAgICAgIFBPU0lYLiBHb29kIHJlZmVyZW5jZS4KICAgICAgIAogICAgICogVGl0bGU6ICJVbmRlcnN0YW5kaW5nIHRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IERhbmllbCBQLiBCb3ZldCBhbmQgTWFyY28gQ2VzYXRpLgogICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMsIEluYy4uCiAgICAgICBEYXRlOiAyMDAwLgogICAgICAgUGFnZXM6IDcwMi4KICAgICAgIElTQk46IDAtNTk2LTAwMDAyLTIKICAgICAgIE5vdGVzOiBGdXJ0aGVyIGluZm9ybWF0aW9uIGluCiAgICAgICBodHRwOi8vd3d3Lm9yZWlsbHkuY29tL2NhdGFsb2cvbGludXhrZXJuZWwvCiAgICAgICAKICAgICBNSVNDRUxMQU5FT1VTOgogICAKICAgICAqIE5hbWU6IGxpbnV4L0RvY3VtZW50YXRpb24KICAgICAgIEF1dGhvcjogTWFueS4KICAgICAgIFVSTDogSnVzdCBsb29rIGluc2lkZSB5b3VyIGtlcm5lbCBzb3VyY2VzLgogICAgICAgS2V5d29yZHM6IGFueXRoaW5nLCBEb2NCb29rLgogICAgICAgRGVzY3JpcHRpb246IERvY3VtZW50YXRpb24gdGhhdCBjb21lcyB3aXRoIHRoZSBrZXJuZWwgc291cmNlcywKICAgICAgIGluc2lkZSB0aGUgRG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIFNvbWUgcGFnZXMgZnJvbSB0aGlzIGRvY3VtZW50CiAgICAgICAoaW5jbHVkaW5nIHRoaXMgZG9jdW1lbnQgaXRzZWxmKSBoYXZlIGJlZW4gbW92ZWQgdGhlcmUsIGFuZCBtaWdodAogICAgICAgYmUgbW9yZSB1cCB0byBkYXRlIHRoYW4gdGhlIHdlYiB2ZXJzaW9uLgogICAgICAgCiAgICAgKiBOYW1lOiAiTGludXggU291cmNlIERyaXZlciIKICAgICAgIFVSTDogaHR0cDovL2xzZC5saW51eC5jegogICAgICAgS2V5d29yZHM6IEJyb3dzaW5nIHNvdXJjZSBjb2RlLgogICAgICAgRGVzY3JpcHRpb246ICJMaW51eCBTb3VyY2UgRHJpdmVyIChMU0QpIGlzIGFuIGFwcGxpY2F0aW9uLCB3aGljaAogICAgICAgY2FuIG1ha2UgYnJvd3Npbmcgc291cmNlIGNvZGVzIG9mIExpbnV4IGtlcm5lbCBlYXNpZXIgdGhhbiB5b3UgY2FuCiAgICAgICBpbWFnaW5lLiBZb3UgY2FuIHNlbGVjdCBiZXR3ZWVuIG11bHRpcGxlIHZlcnNpb25zIG9mIGtlcm5lbCAoZS5nLgogICAgICAgMC4wMSwgMS4wLjAsIDIuMC4zMywgMi4wLjM0cHJlMTMsIDIuMC4wLCAyLjEuMTAxIGV0Yy4pLiBXaXRoIExTRAogICAgICAgeW91IGNhbiBzZWFyY2ggTGludXgga2VybmVsIChmdWxsdGV4dCwgbWFjcm9zLCB0eXBlcywgZnVuY3Rpb25zCiAgICAgICBhbmQgdmFyaWFibGVzKSBhbmQgTFNEIGNhbiBnZW5lcmF0ZSBwYXRjaGVzIGZvciB5b3Ugb24gdGhlIGZseQogICAgICAgKGZpbGVzLCBkaXJlY3RvcmllcyBvciBrZXJuZWwpIi4KICAgICAgIAogICAgICogTmFtZTogIkxpbnV4IEtlcm5lbCBTb3VyY2UgUmVmZXJlbmNlIgogICAgICAgQXV0aG9yOiBUaG9tYXMgR3JhaWNoZW4uCiAgICAgICBVUkw6IGh0dHA6Ly9pbm5vbWluYXRlLm9yZy9+Z3JhaWNoZW4vcHJvamVjdHMvbGtzci8KICAgICAgIEtleXdvcmRzOiBDVlMsIHdlYiwgY3Zzd2ViLCBicm93c2luZyBzb3VyY2UgY29kZS4KICAgICAgIERlc2NyaXB0aW9uOiBXZWIgaW50ZXJmYWNlIHRvIGEgQ1ZTIHNlcnZlciB3aXRoIHRoZSBrZXJuZWwKICAgICAgIHNvdXJjZXMuICJIZXJlIHlvdSBjYW4gaGF2ZSBhIGxvb2sgYXQgYW55IGZpbGUgb2YgdGhlIExpbnV4IGtlcm5lbAogICAgICAgc291cmNlcyBvZiBhbnkgdmVyc2lvbiBzdGFydGluZyBmcm9tIDEuMCB1cCB0byB0aGUgKGRhaWx5IHVwZGF0ZWQpCiAgICAgICBjdXJyZW50IHZlcnNpb24gYXZhaWxhYmxlLiBBbHNvIHlvdSBjYW4gY2hlY2sgdGhlIGRpZmZlcmVuY2VzCiAgICAgICBiZXR3ZWVuIHR3byB2ZXJzaW9ucyBvZiBhIGZpbGUiLgogICAgICAgCiAgICAgKiBOYW1lOiAiQ3Jvc3MtUmVmZXJlbmNpbmcgTGludXgiCiAgICAgICBVUkw6IGh0dHA6Ly9seHIubGludXgubm8vc291cmNlLwogICAgICAgS2V5d29yZHM6IEJyb3dzaW5nIHNvdXJjZSBjb2RlLgogICAgICAgRGVzY3JpcHRpb246IEFub3RoZXIgd2ViLWJhc2VkIExpbnV4IGtlcm5lbCBzb3VyY2UgY29kZSBicm93c2VyLgogICAgICAgTG90cyBvZiBjcm9zcyByZWZlcmVuY2VzIHRvIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLiBZb3UgY2FuIHNlZQogICAgICAgd2hlcmUgdGhleSBhcmUgZGVmaW5lZCBhbmQgd2hlcmUgdGhleSBhcmUgdXNlZC4KICAgICAgIAogICAgICogTmFtZTogIkxpbnV4IFdlZWtseSBOZXdzIgogICAgICAgVVJMOiBodHRwOi8vbHduLm5ldAogICAgICAgS2V5d29yZHM6IGxhdGVzdCBrZXJuZWwgbmV3cy4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuIFRoZXJlJ3MgYSBmaXhlZCBrZXJuZWwgc2VjdGlvbgogICAgICAgc3VtbWFyaXppbmcgZGV2ZWxvcGVycycgd29yaywgYnVnIGZpeGVzLCBuZXcgZmVhdHVyZXMgYW5kIHZlcnNpb25zCiAgICAgICBwcm9kdWNlZCBkdXJpbmcgdGhlIHdlZWsuIFB1Ymxpc2hlZCBldmVyeSBUaHVyc2RheS4KICAgICAgIAogICAgICogTmFtZTogIktlcm5lbCBUcmFmZmljIgogICAgICAgVVJMOiBodHRwOi8va3Quem9yay5uZXQva2VybmVsLXRyYWZmaWMvCiAgICAgICBLZXl3b3JkczogbGludXgta2VybmVsIG1haWxpbmcgbGlzdCwgd2Vla2x5IGtlcm5lbCBuZXdzLgogICAgICAgRGVzY3JpcHRpb246IFdlZWtseSBuZXdzbGV0dGVyIGNvdmVyaW5nIHRoZSBtb3N0IHJlbGV2YW50CiAgICAgICBkaXNjdXNzaW9ucyBvZiB0aGUgbGludXgta2VybmVsIG1haWxpbmcgbGlzdC4KICAgICAgIAogICAgICogTmFtZTogIkN1VFRpTkcuZURHZS5MaU51WCIKICAgICAgIFVSTDogaHR0cDovL2VkZ2Uua2VybmVsbm90ZXMub3JnCiAgICAgICBLZXl3b3JkczogY2hhbmdlbGlzdC4KICAgICAgIERlc2NyaXB0aW9uOiBTaXRlIHdoaWNoIHByb3ZpZGVzIHRoZSBjaGFuZ2VsaXN0IGZvciBldmVyeSBrZXJuZWwKICAgICAgIHJlbGVhc2UuIFdoYXQncyBuZXcsIHdoYXQncyBiZXR0ZXIsIHdoYXQncyBjaGFuZ2VkLiBNeXJkcmFhbCByZWFkcwogICAgICAgdGhlIHBhdGNoZXMgYW5kIGRlc2NyaWJlcyB0aGVtLiBQb2ludGVycyB0byB0aGUgcGF0Y2hlcyBhcmUgdGhlcmUsCiAgICAgICB0b28uCiAgICAgICAKICAgICAqIE5hbWU6ICJOZXcgbGludXgta2VybmVsIE1haWxpbmcgTGlzdCBGQVEiCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudHV4Lm9yZy9sa21sLwogICAgICAgS2V5d29yZHM6IGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgRkFRLgogICAgICAgRGVzY3JpcHRpb246IGxpbnV4LWtlcm5lbCBpcyBhIG1haWxpbmcgbGlzdCBmb3IgZGV2ZWxvcGVycyB0bwogICAgICAgY29tbXVuaWNhdGUuIFRoaXMgRkFRIGJ1aWxkcyBvbiB0aGUgcHJldmlvdXMgbGludXgta2VybmVsIG1haWxpbmcKICAgICAgIGxpc3QgRkFRIG1haW50YWluZWQgYnkgRnJvaHdhbHQgRWdlcmVyLCB3aG8gbm8gbG9uZ2VyIG1haW50YWlucwogICAgICAgaXQuIFJlYWQgaXQgdG8gc2VlIGhvdyB0byBqb2luIHRoZSBtYWlsaW5nIGxpc3QuIERvemVucyBvZgogICAgICAgaW50ZXJlc3RpbmcgcXVlc3Rpb25zIHJlZ2FyZGluZyB0aGUgbGlzdCwgTGludXgsIGRldmVsb3BlcnMgKHdobwogICAgICAgaXMgLi4uPyksIHRlcm1zICh3aGF0IGlzLi4uPykgYXJlIGFuc3dlcmVkIGhlcmUgdG9vLiBKdXN0IHJlYWQgaXQuCiAgICAgICAKICAgICAqIE5hbWU6ICJMaW51eCBWaXJ0dWFsIEZpbGUgU3lzdGVtIgogICAgICAgQXV0aG9yOiBQZXRlciBKLiBCcmFhbS4KICAgICAgIFVSTDogaHR0cDovL3d3dy5jb2RhLmNzLmNtdS5lZHUvZG9jL3RhbGtzL2xpbnV4dmZzLwogICAgICAgS2V5d29yZHM6IHNsaWRlcywgVkZTLCBpbm9kZSwgc3VwZXJibG9jaywgZGVudHJ5LCBkY2FjaGUuCiAgICAgICBEZXNjcmlwdGlvbjogU2V0IG9mIHNsaWRlcywgcHJlc3VtYWJseSBmcm9tIGEgcHJlc2VudGF0aW9uIG9uIHRoZQogICAgICAgTGludXggVkZTIGxheWVyLiBDb3ZlcnMgdmVyc2lvbiAyLjEueCwgd2l0aCBkZW50cmllcyBhbmQgdGhlCiAgICAgICBkY2FjaGUuCiAgICAgICAKICAgICAqIE5hbWU6ICJHYXJ5J3MgRW5jeWNsb3BlZGlhIC0gVGhlIExpbnV4IEtlcm5lbCIKICAgICAgIEF1dGhvcjogR2FyeSAoSSBzdXBwb3NlLi4uKS4KICAgICAgIFVSTDogaHR0cDovL21lbWJlcnMuYWEubmV0L35zd2Vhci9wZWRpYS9rZXJuZWwuaHRtbAogICAgICAgS2V5d29yZHM6IGxpbmtzLCBub3QgZm91bmQgaGVyZT8uCiAgICAgICBEZXNjcmlwdGlvbjogR2FyeSdzIEVuY3ljbG9wZWRpYSBleGlzdHMgdG8gYWxsb3cgdGhlIHJhcGlkIGZpbmRpbmcKICAgICAgIG9mIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIGluZm9ybWF0aW9uIG9mIGludGVyZXN0IHRvIEdOVS9MaW51eAogICAgICAgdXNlcnMuIEl0IGhhcyBhYm91dCA0MDAwIGxpbmtzIHRvIGV4dGVybmFsIHBhZ2VzIGluIDE1MCBtYWpvcgogICAgICAgY2F0ZWdvcmllcy4gVGhpcyBsaW5rIGlzIGZvciBrZXJuZWwtc3BlY2lmaWMgbGlua3MsIGRvY3VtZW50cywKICAgICAgIHNpdGVzLi4uIExvb2sgdGhlcmUgaWYgeW91IGNvdWxkIG5vdCBmaW5kIGhlcmUgd2hhdCB5b3Ugd2VyZQogICAgICAgbG9va2luZyBmb3IuCiAgICAgICAKICAgICAqIE5hbWU6ICJUaGUgaG9tZSBwYWdlIG9mIExpbnV4LU1NIgogICAgICAgQXV0aG9yOiBUaGUgTGludXgtTU0gdGVhbS4KICAgICAgIFVSTDogaHR0cDovL2xpbnV4LW1tLm9yZy8KICAgICAgIEtleXdvcmRzOiBtZW1vcnkgbWFuYWdlbWVudCwgTGludXgtTU0sIG1tIHBhdGNoZXMsIFRPRE8sIGRvY3MsCiAgICAgICBtYWlsaW5nIGxpc3QuCiAgICAgICBEZXNjcmlwdGlvbjogU2l0ZSBkZXZvdGVkIHRvIExpbnV4IE1lbW9yeSBNYW5hZ2VtZW50IGRldmVsb3BtZW50LgogICAgICAgTWVtb3J5IHJlbGF0ZWQgcGF0Y2hlcywgSE9XVE9zLCBsaW5rcywgbW0gZGV2ZWxvcGVycy4uLiBEb24ndCBtaXNzCiAgICAgICBpdCBpZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gbWVtb3J5IG1hbmFnZW1lbnQgZGV2ZWxvcG1lbnQhCiAgICAgICAKICAgICAqIE5hbWU6ICJLZXJuZWwgTmV3YmllcyBJUkMgQ2hhbm5lbCIKICAgICAgIFVSTDogaHR0cDovL3d3dy5rZXJuZWxuZXdiaWVzLm9yZwogICAgICAgS2V5d29yZHM6IElSQywgbmV3YmllcywgY2hhbm5lbCwgYXNraW5nIGRvdWJ0cy4KICAgICAgIERlc2NyaXB0aW9uOiAja2VybmVsbmV3YmllcyBvbiBpcmMub3BlbnByb2plY3RzLm5ldC4gRnJvbSB0aGUgd2ViCiAgICAgICBwYWdlOiAiI2tlcm5lbG5ld2JpZXMgaXMgYW4gSVJDIG5ldHdvcmsgZGVkaWNhdGVkIHRvIHRoZSAnbmV3YmllJwogICAgICAga2VybmVsIGhhY2tlci4gVGhlIGF1ZGllbmNlIG1vc3RseSBjb25zaXN0cyBvZiBwZW9wbGUgd2hvIGFyZQogICAgICAgbGVhcm5pbmcgYWJvdXQgdGhlIGtlcm5lbCwgd29ya2luZyBvbiBrZXJuZWwgcHJvamVjdHMgb3IKICAgICAgIHByb2Zlc3Npb25hbCBrZXJuZWwgaGFja2VycyB0aGF0IHdhbnQgdG8gaGVscCBsZXNzIHNlYXNvbmVkIGtlcm5lbAogICAgICAgcGVvcGxlLiBbLi4uXSAja2VybmVsbmV3YmllcyBpcyBvbiB0aGUgT3BlbiBQcm9qZWN0cyBJUkMgTmV0d29yaywKICAgICAgIHRyeSBpcmMub3BlbnByb2plY3RzLm5ldCBvciBpcmMuPGNvdW50cnk+Lm9wZW5wcm9qZWN0cy5uZXQgYXMgeW91cgogICAgICAgc2VydmVyIGFuZCB0aGVuIC9qb2luICNrZXJuZWxuZXdiaWVzIi4gSXQgYWxzbyBob3N0cyBhcnRpY2xlcywKICAgICAgIGRvY3VtZW50cywgRkFRcy4uLgogICAgICAgCiAgICAgKiBOYW1lOiAibGludXgta2VybmVsIG1haWxpbmcgbGlzdCBhcmNoaXZlcyBhbmQgc2VhcmNoIGVuZ2luZXMiCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudXdzZy5pbmRpYW5hLmVkdS9oeXBlcm1haWwvbGludXgva2VybmVsL2luZGV4Lmh0bWwKICAgICAgIFVSTDogaHR0cDovL3d3dy5rZXJuZWxub3Rlcy5vcmcvbG54bGlzdHMvbGludXgta2VybmVsLwogICAgICAgVVJMOiBodHRwOi8vd3d3Lmdlb2NyYXdsZXIuY29tCiAgICAgICBLZXl3b3JkczogbGludXgta2VybmVsLCBhcmNoaXZlcywgc2VhcmNoLgogICAgICAgRGVzY3JpcHRpb246IFNvbWUgb2YgdGhlIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgYXJjaGl2ZXJzLiBJZgogICAgICAgeW91IGhhdmUgYSBiZXR0ZXIvYW5vdGhlciBvbmUsIHBsZWFzZSBsZXQgbWUga25vdy4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAKICAgRG9jdW1lbnQgbGFzdCB1cGRhdGVkIG9uIFRodSBKdW4gMjggMTU6MDk6MzkgQ0VTVCAyMDAxCg==