IyBzaW1wbGlmaWVkIENoaW5lc2UgdHJhbnNsYXRpb24gZmlsZSBmb3IgcGdfY29udHJvbGRhdGEgYW5kIGZyaWVuZHMKIyBCYW8gV2VpIDx3ZWliYW9AZm9yZXZlcnRlay5jb20+LCAyMDAyLgojIAptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogUG9zdGdyZVNRTCA4LjBcbiIKIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA0LTExLTE1IDE0OjI0KzAwMDBcbiIKIlBPLVJldmlzaW9uLURhdGU6IDIwMDQtMDEtMTAgMTM6NDUrMDgwMFxuIgoiTGFzdC1UcmFuc2xhdG9yOiBCYW8gV2VpIDx3ZWliYW9AcW1haWwuemhlbmdtYWkubmV0LmNuPlxuIgoiTGFuZ3VhZ2UtVGVhbTogV2VpcGluZyBIZSA8bGFzZXJAemhlbmdtYWkuY29tLmNuPlxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1HQjIzMTJcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MjYKIywgYy1mb3JtYXQKbXNnaWQgIiIKIiVzIGRpc3BsYXlzIGNvbnRyb2wgaW5mb3JtYXRpb24gb2YgYSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0ZXIuXG4iCiJcbiIKbXNnc3RyICIiCiIlcyDP1Mq+IFBvc3RncmVTUUwgyv2+3b/itNi/2NbG0MXPoi5cbiIKIlxuIgoKIzogcGdfY29udHJvbGRhdGEuYzozMAojLCBjLWZvcm1hdAptc2dpZCAiIgoiVXNhZ2U6XG4iCiIgICVzIFtPUFRJT05dIFtEQVRBRElSXVxuIgoiXG4iCiJPcHRpb25zOlxuIgoiICAtLWhlbHAgICAgICAgICBzaG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iCiIgIC0tdmVyc2lvbiAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIKbXNnc3RyICIiCiLKudPDt723qDpcbiIKIiAgJXMgW9Ghz+5dIFvK/b7dxL/CvF1cbiIKIlxuIgoi0aHP7jpcbiIKIiAgLS1oZWxwICAgICAgICAgz9TKvrTLsO/W+tDFz6IsIMi7uvPNy7P2XG4iCiIgIC0tdmVyc2lvbiAgICAgIM/Uyr4gcGdfY29udHJvbGRhdGEgtcSw5rG+LCDIu7rzzcuz9lxuIgoKIzogcGdfY29udHJvbGRhdGEuYzozOAojLCBjLWZvcm1hdAptc2dpZCAiIgoiXG4iCiJJZiBubyBkYXRhIGRpcmVjdG9yeSAoREFUQURJUikgaXMgc3BlY2lmaWVkLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgIgoiUEdEQVRBXG4iCiJpcyB1c2VkLlxuIgoiXG4iCm1zZ3N0ciAiIgoiXG4iCiLI57n7w7vT0Na4tqjK/b7dxL/CvCAoREFUQURJUiksIL2ryrnTw1xuIgoiu7e+s7Hkwb9QR0RBVEEuXG4iCiJcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6NDAKIywgYy1mb3JtYXQKbXNnaWQgIlJlcG9ydCBidWdzIHRvIDxwZ3NxbC1idWdzQHBvc3RncmVzcWwub3JnPi5cbiIKbXNnc3RyICKxqLjmtO3O89bBIDxwZ3NxbC1idWdzQHBvc3RncmVzcWwub3JnPi5cbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6NTAKbXNnaWQgInN0YXJ0aW5nIHVwIgptc2dzdHIgItX91NrG9LavIgoKIzogcGdfY29udHJvbGRhdGEuYzo1Mgptc2dpZCAic2h1dCBkb3duIgptc2dzdHIgIrnYsdUiCgojOiBwZ19jb250cm9sZGF0YS5jOjU0Cm1zZ2lkICJzaHV0dGluZyBkb3duIgptc2dzdHIgItX91Nq52LHVIgoKIzogcGdfY29udHJvbGRhdGEuYzo1Ngptc2dpZCAiaW4gcmVjb3ZlcnkiCm1zZ3N0ciAi1Nq71ri01tAiCgojOiBwZ19jb250cm9sZGF0YS5jOjU4Cm1zZ2lkICJpbiBwcm9kdWN0aW9uIgptc2dzdHIgItTa1MvQ0NbQIgoKIzogcGdfY29udHJvbGRhdGEuYzo2MAptc2dpZCAidW5yZWNvZ25pemVkIHN0YXR1cyBjb2RlIgptc2dzdHIgIrK7sbvIz7/JtcTXtMyswusiCgojOiBwZ19jb250cm9sZGF0YS5jOjEwMgojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG5vIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmllZFxuIgptc2dzdHIgIiVzOiDDu9PQ1ri2qMr9vt3Ev8K8XG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjEwMwojLCBjLWZvcm1hdAptc2dpZCAiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iCm1zZ3N0ciAi08MgXCIlcyAtLWhlbHBcIiDP1Mq+uPy24LXE0MXPoi5cbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTExCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iCm1zZ3N0ciAiJXM6IM7et6i08r+qzsS8/iBcIiVzXCIgtsHIodDFz6I6ICVzXG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjExOAojLCBjLWZvcm1hdAptc2dpZCAiJXM6IGNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlc1xuIgptc2dzdHIgIiVzOiDO3reotsHIoc7EvP4gXCIlc1wiOiAlc1xuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxMzIKIywgYy1mb3JtYXQKbXNnaWQgIiIKIldBUk5JTkc6IENhbGN1bGF0ZWQgQ1JDIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHZhbHVlIHN0b3JlZCBpbiBmaWxlLlxuIgoiRWl0aGVyIHRoZSBmaWxlIGlzIGNvcnJ1cHQsIG9yIGl0IGhhcyBhIGRpZmZlcmVudCBsYXlvdXQgdGhhbiB0aGlzIHByb2dyYW1cbiIKImlzIGV4cGVjdGluZy4gIFRoZSByZXN1bHRzIGJlbG93IGFyZSB1bnRydXN0d29ydGh5LlxuIgoiXG4iCm1zZ3N0ciAiIgoivq+45jogvMbL47P2wLS1xENSQ9Cj0enWtdPr0tGxo7Tm1NrOxLz+1tC1xNa1srvGpcXkLlxuIgoisrvKx87EvP67tcHLLL7NysfJ6LzG0+uzzNDytcTG2s371rWyu82sLlxuIgoiz8LD5rXEveG5+8rHsru/yb+/tcQuXG4iCiJcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTUyCiMsIGMtZm9ybWF0Cm1zZ2lkICJwZ19jb250cm9sIHZlcnNpb24gbnVtYmVyOiAgICAgICAgICAgICV1XG4iCm1zZ3N0ciAicGdfY29udHJvbCCw5rG+OiAgICAgICAgICAgICAgICAgICAgICAldVxuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxNTMKIywgYy1mb3JtYXQKbXNnaWQgIkNhdGFsb2cgdmVyc2lvbiBudW1iZXI6ICAgICAgICAgICAgICAgJXVcbiIKbXNnc3RyICJDYXRhbG9nILDmsb46ICAgICAgICAgICAgICAgICAgICAgICAgICV1XG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjE1NAojLCBjLWZvcm1hdAptc2dpZCAiRGF0YWJhc2Ugc3lzdGVtIGlkZW50aWZpZXI6ICAgICAgICAgICAlc1xuIgptc2dzdHIgIsr9vt2/4s+1zbOx6sq2t/s6ICAgICAgICAgICAgICAgICAgICAgJXNcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTU1CiMsIGMtZm9ybWF0Cm1zZ2lkICJEYXRhYmFzZSBjbHVzdGVyIHN0YXRlOiAgICAgICAgICAgICAgICVzXG4iCm1zZ3N0ciAiyv2+3b/itNjXtMysOiAgICAgICAgICAgICAgICAgICAgICAgICAlc1xuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxNTYKIywgYy1mb3JtYXQKbXNnaWQgInBnX2NvbnRyb2wgbGFzdCBtb2RpZmllZDogICAgICAgICAgICAgJXNcbiIKbXNnc3RyICJwZ19jb250cm9sINfuuvPQ3rjEOiAgICAgICAgICAgICAgICAgICVzXG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjE1NwojLCBjLWZvcm1hdAptc2dpZCAiQ3VycmVudCBsb2cgZmlsZSBJRDogICAgICAgICAgICAgICAgICAldVxuIgptc2dzdHIgIrWxx7DI1da+zsS8/klEOiAgICAgICAgICAgICAgICAgICAgICAgJXVcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTU4CiMsIGMtZm9ybWF0Cm1zZ2lkICJOZXh0IGxvZyBmaWxlIHNlZ21lbnQ6ICAgICAgICAgICAgICAgICV1XG4iCm1zZ3N0ciAiz8LSu7j2yNXWvs7EvP62zjogICAgICAgICAgICAgICAgICAgICAldVxuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxNTkKIywgYy1mb3JtYXQKbXNnaWQgIkxhdGVzdCBjaGVja3BvaW50IGxvY2F0aW9uOiAgICAgICAgICAgJVgvJVhcbiIKbXNnc3RyICLX7tDCvOyy6bXjzrvWwzogICAgICAgICAgICAgICAgICAgICAgICVYLyVYXG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjE2MQojLCBjLWZvcm1hdAptc2dpZCAiUHJpb3IgY2hlY2twb2ludCBsb2NhdGlvbjogICAgICAgICAgICAlWC8lWFxuIgptc2dzdHIgItPFz8i87LLptePOu9bDOiAgICAgICAgICAgICAgICAgICAgICAgJVgvJVhcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTYzCiMsIGMtZm9ybWF0Cm1zZ2lkICJMYXRlc3QgY2hlY2twb2ludCdzIFJFRE8gbG9jYXRpb246ICAgICVYLyVYXG4iCm1zZ3N0ciAi1+7Qwrzssum147XEIFJFRE8gzrvWwzogICAgICAgICAgICAgICAlWC8lWFxuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxNjUKIywgYy1mb3JtYXQKbXNnaWQgIkxhdGVzdCBjaGVja3BvaW50J3MgVU5ETyBsb2NhdGlvbjogICAgJVgvJVhcbiIKbXNnc3RyICLX7tDCvOyy6bXjtcQgVU5ETyDOu9bDOiAgICAgICAgICAgICAgICVYLyVYXG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjE2NwojLCBjLWZvcm1hdAptc2dpZCAiTGF0ZXN0IGNoZWNrcG9pbnQncyBUaW1lTGluZUlEOiAgICAgICAldVxuIgptc2dzdHIgItfu0MK87LLpteO1xCBUaW1lTGluZUlEOiAgICAgICAgICAgICAgJXVcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTY4CiMsIGMtZm9ybWF0Cm1zZ2lkICJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRYSUQ6ICAgICAgICAgICV1XG4iCm1zZ3N0ciAi1+7Qwrzssum147XEIE5leHRYSUQ6ICAgICAgICAgICAgICAgICAldVxuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxNjkKIywgYy1mb3JtYXQKbXNnaWQgIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE9JRDogICAgICAgICAgJXVcbiIKbXNnc3RyICLX7tDCvOyy6bXjtcQgTmV4dE9JRDogICAgICAgICAgICAgICAgICV1XG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjE3MAojLCBjLWZvcm1hdAptc2dpZCAiVGltZSBvZiBsYXRlc3QgY2hlY2twb2ludDogICAgICAgICAgICAlc1xuIgptc2dzdHIgItfu0MK87LLpteO1xMqxvOQ6ICAgICAgICAgICAgICAgICAgICAgJXNcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTcxCiMsIGMtZm9ybWF0Cm1zZ2lkICJEYXRhYmFzZSBibG9jayBzaXplOiAgICAgICAgICAgICAgICAgICV1XG4iCm1zZ3N0ciAiyv2+3b/iv+m089ChOiAgICAgICAgICAgICAgICAgICAgICAgICAldVxuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxNzIKIywgYy1mb3JtYXQKbXNnaWQgIkJsb2NrcyBwZXIgc2VnbWVudCBvZiBsYXJnZSByZWxhdGlvbjogJXVcbiIKbXNnc3RyICK087nYz7W1xMO/ts6/6cr9OiAgICAgICAgICAgICAgICAgICAgICV1XG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjE3MwojLCBjLWZvcm1hdAptc2dpZCAiQnl0ZXMgcGVyIFdBTCBzZWdtZW50OiAgICAgICAgICAgICAgICAldVxuIgptc2dzdHIgIsO/0ru49iBXQUwgts7X1r3ayv06ICAgICAgICAgICAgICAgICAgJXVcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTc0CiMsIGMtZm9ybWF0Cm1zZ2lkICJNYXhpbXVtIGxlbmd0aCBvZiBpZGVudGlmaWVyczogICAgICAgICV1XG4iCm1zZ3N0ciAiserKtrf7tcTX7rTzs6S2yDogICAgICAgICAgICAgICAgICAgICAldVxuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxNzUKIywgYy1mb3JtYXQKbXNnaWQgIk1heGltdW0gbnVtYmVyIG9mIGZ1bmN0aW9uIGFyZ3VtZW50czogJXVcbiIKbXNnc3RyICK6r8r9ss7K/bXE1+6087j2yv06ICAgICAgICAgICAgICAgICAgICV1XG4iCgojOiBwZ19jb250cm9sZGF0YS5jOjE3NgojLCBjLWZvcm1hdAptc2dpZCAiRGF0ZS90aW1lIHR5cGUgc3RvcmFnZTogICAgICAgICAgICAgICAlc1xuIgptc2dzdHIgIsjVxtovyrG85CDA4NDNtOa0ojogICAgICAgICAgICAgICAgICAgJXNcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTc3Cm1zZ2lkICI2NC1iaXQgaW50ZWdlcnMiCm1zZ3N0ciAiNjTOu9X7yv0iCgojOiBwZ19jb250cm9sZGF0YS5jOjE3Nwptc2dpZCAiZmxvYXRpbmctcG9pbnQgbnVtYmVycyIKbXNnc3RyICK4obXjyv0iCgojOiBwZ19jb250cm9sZGF0YS5jOjE3OAojLCBjLWZvcm1hdAptc2dpZCAiTWF4aW11bSBsZW5ndGggb2YgbG9jYWxlIG5hbWU6ICAgICAgICAldVxuIgptc2dzdHIgIrG+tdjD+9fWtcTX7rTzs6S2yDogICAgICAgICAgICAgICAgICAgJXVcbiIKCiM6IHBnX2NvbnRyb2xkYXRhLmM6MTc5CiMsIGMtZm9ybWF0Cm1zZ2lkICJMQ19DT0xMQVRFOiAgICAgICAgICAgICAgICAgICAgICAgICAgICVzXG4iCm1zZ3N0ciAiTENfQ09MTEFURTogICAgICAgICAgICAgICAgICAgICAgICAgICAlc1xuIgoKIzogcGdfY29udHJvbGRhdGEuYzoxODAKIywgYy1mb3JtYXQKbXNnaWQgIkxDX0NUWVBFOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIKbXNnc3RyICJMQ19DVFlQRTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzXG4iCgojfiBtc2dpZCAiTGF0ZXN0IGNoZWNrcG9pbnQncyBTdGFydFVwSUQ6ICAgICAgICAldVxuIgojfiBtc2dzdHIgItfu0MK87LLpteO1xCBTdGFydFVwSUQ6ICAgICAgICAgICAgICAgJXVcbiIK